前言
最近项目中需要将Excel中数据导入到数据库中,完成后,做一个代码总结。
代码
import java.io.File;入参:Excel文件完整路径。
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class InsertExcel {
/**
* 解析方法
*
* @param file
* @return
* @throws Exception
*/
public List<String[]> getExcel(String filePath) throws Exception {
// 创建对Excel工作簿文件的引用
boolean isExcel2003 = filePath.toLowerCase().endsWith("xls") ? true : false;
Workbook workbook = null;
if (isExcel2003) {
workbook = new HSSFWorkbook(new FileInputStream(new File(filePath)));
} else {
workbook = new XSSFWorkbook(new FileInputStream(new File(filePath)));
}
// 在Excel文档中,第一张工作表的缺省索引是0
// 其语句为:
// HSSFSheet sheet = wookbook.getSheetAt(0);
Sheet sheet = workbook.getSheet("T_POFO_ASSET");
// 获取到Excel文件中的所有行数
int rows = sheet.getPhysicalNumberOfRows();
// 遍历行
List<String[]> list_excel = new ArrayList<String[]>();
for (int i = 1; i <= rows; i++) {
// 读取左上端单元格
Row row = sheet.getRow(i);
// 行不为空
if (row != null) {
// 获取到Excel文件中的所有的列
int cells = row.getPhysicalNumberOfCells();
String value = "";
// 遍历列
for (int j = 0; j <= cells; j++) {
// 获取到列的值
Cell cell = row.getCell(j);
if (cell != null) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_FORMULA:
break;
case Cell.CELL_TYPE_NUMERIC:
value += cell.getNumericCellValue() + ",";
break;
case Cell.CELL_TYPE_STRING:
value += cell.getStringCellValue() + ",";
break;
default:
value += "0";
break;
}
}
}
String[] val = value.split(",");
list_excel.add(val);
}
}
workbook.close();
return list_excel;
}
}
出参:list<String[]>,每一行为一list,list中字段在字符串数组中。可根据具体的需要插入到list<实体>中。
总结
输出参数后,之前还写过一篇博客,mybatis批量插入数据,入参为list,可以将此功能完成,在此不多叙述。