01.上篇博文主要介绍了使用JXL,POI技术将数据库表数据导出为Excel;
2.本篇主要介绍导入功能的实现;
3.还是以POI技术为主,JXL这里只做代码展示,若有兴趣可以私下研究
4.使用JXL从Excel表格中读取数据代码示例:
public class JxlRead{
public static void main(String[] args){
try{
//获取Excel文件存放地址
File file = new File("E:/sheet.xls");
//创建workbook
Workbook wb = wb.getWorkbook(file);
//获取第一个表格
Sheet sheet = wb.getSheet(0);
//获取数据
for(int i=0;i<sheet.get.Rows();i++){
for(int j=0;j<sheet.get.Columns();j++){
Cell cell = sheet.getCell(j,i);
System.out.print(cell.getContents()+" ");
}
System.out.println();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
5.使用POI从Excel表格中读取数据代码示例:
可以参考:https://www.cnblogs.com/SHMILYHP/p/8327861.html
5.1.这里使用框架作为例子(spring+springmvc+hibernate),省略数据操作层!!
5.2.:POI实现从Excel表格中读取数据导入到数据库代码示例(这里省略数据库操作类)
public class ImportExcelTODB{
//相当于连接数据库
@Resource
private UserDAO userDao;
public String ImportExcel(){
List<User> userList = new ArrayList<>();
try{
userList = getUserList(filePath)
if(userList !=null&&userList .szie()>0){
for(User user : userList ){
//将解析出来的Excel表数据插入数据库
userDao.saveUser(user);
}
}catch(IOException e){
e.printStackTrace();
}
return filePath;
}
//获取Excel表中的值类型
private String getValue(Cell cell){
if(cell.getCellType()==cell.CELL_TYPE_BOOLEAN){
// 返回布尔类型的值
return String.valueOf(cell.getBooleanCellValue());
}else if(cell.getCellType() ==cell.CELL_TYPE_NUMERIC){
//返回数值类型的值
return String.valueOf(cell.getNumericCellValue());
}else{
// 返回字符串类型的值
return String.valueOf(cell.getStringCellValue());
}
}
//读取Excel表数据
private List<User> getUserList(String filePath){
//获取Excel文件路径
InputStream is = new FileInputStream(filePath);
Workbook wb= null;
//通过POI的工作薄类解析xls文件 判断excel的两种格式xls,xlsx
if (filePath.toLowerCase().endsWith("xlsx")) {
workbook = new XSSFWorkbook(is);
} else if (filePath.toLowerCase().endsWith("xls")) {
workbook = new HSSFWorkbook(is);
}
//创建对象准备接受数据
User user = null;
List<User> userList = new ArrayList<>();
//得到sheet总数
int numSheets = wb.getNumberOfSheets();
//循环工作表sheet
for(int numSheet=0;numSheet<numSheets ;numSheets ++){
//得到第i个sheet
Sheet sheet = workbook.getSheetAt(numSheet);
if(sheet==null){
continue;
}
// 获取到Excel文件中的所有行数
int rowCount = sheet.getPhysicalNumberOfRows();
//遍历行
for(int numRow = 1; numRow <= rowCount ; numRow++){
//获取当前行数据
Row row = sheet.getRow(numRow );
if(row==null){
continue;
}else{
user = new User();
// 获取到Excel文件中的所有的列
int cellCount = row.getPhysicalNumberOfCells();
// 遍历列
for (int j = 0; j < cellCount; j++) {
// 获取单元格对象
Cell cell = row.getCell(j);
// 给单元格对象赋值
user.setName(getValue(cell));
user.setEmail(getValue(cell));
userList.add(user);
}
}
}
}
return userList;
}
}