前阵子,项目中的一小模块,需要加上数据导入的功能。由于项目有好几个地方需要用到excel的数据导入。因此,当时就想了将excel导入封装成一公共组件,由于不同的excel数据导入,具体入库操作不同。因此,此组件提供对导入的数据的读取。具体不同的入库操作,在具体实现类中进行!
于是得出了 excel数据导入的抽象类
直接上代码:
读取excel方法
public List<List<Object>> readFormExcel(File file, int startRow,
int startColumn) throws Exception {
List<List<Object>> list = new ArrayList<List<Object>>();
Workbook workbook = null;
if (file.getName().toUpperCase().endsWith(".XLS")) {
workbook = createWorkBook(file);
} else {
workbook = createWorkbook2007(file);
}
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
throw new IllegalArgumentException("导入的数据必须是放要第一个工作表");
}
int rowNumbers = sheet.getLastRowNum();
if (startRow > rowNumbers) {
throw new IllegalArgumentException("起始行数大于导入的数据最大行数");
}
int headColumnCount = sheet.getRow(0).getLastCellNum();
for (int i = startRow; i <= rowNumbers; i++) {
Row row = sheet.getRow(i);
if (row == null) {
continue;
}
int columnNumber = row.getLastCellNum();
if (columnNumber < headColumnCount) {
columnNumber = headColumnCount;
// ,如果有表头有3列,另一行有2列,则读到2列时,最后列为2列.而不是3列.为数据完整性..方便做循环,将之改为与表头相同列
}
List<Object> cellList = new ArrayList<Object>();
for (int j = startColumn; j < columnNumber; j++) {
Cell cell = row.getCell(j);
if (cell == null) {
cellList.add("");
continue;
}
Object value = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK: {
value = "";
cellList.add(value);
break;
}
case Cell.CELL_TYPE_FORMULA: {
value = cell.getCellFormula();
cellList.add(value);
break;
}
case Cell.CELL_TYPE_NUMERIC: {
if (workbook instanceof HSSFWorkbook) {
if (HSSFDateUtil.isCellDateFormatted(cell)) {
value = cell.getDateCellValue();
cellList.add(value);
} else {
value = cell.getNumericCellValue();
cellList.add(value);
}
} else {
if (DateUtil.isCellDateFormatted(cell)) {
value = cell.getDateCellValue();
cellList.add(value);
} else {
value = cell.getNumericCellValue();
cellList.add(value);
}
}
break;
}
case Cell.CELL_TYPE_STRING: {
value = cell.getRichStringCellValue().getString();
cellList.add(value);
break;
}
case Cell.CELL_TYPE_BOOLEAN: {
value = cell.getBooleanCellValue();
cellList.add(value);
break;
}
default: {
value = cell.getRichStringCellValue().getString();
cellList.add(value);
break;
}
}
}
list.add(cellList);
}
return list;
}
客户端调用方法
/**
*
* @param file
* execute文件
* @param startRow
* 起始行
* @param startColumn
* 起始列
* @param requestData
* 客户端请求的数据
* @return 返回导入的行数
* @throws Exception
*/
public int executeDataImport(File file, int startRow, int startColumn,
Map<String, Object> requestData) throws Exception {
String text = file.getName();
List<List<Object>> importDatas = readFormExcel(file, startRow,
startColumn);
if (importDatas == null || importDatas.size() == 0) {
return 0;
}
int resultCount = processBatchData(importDatas, requestData);
return resultCount;
}
实际入库抽象方法
/**
*
* @param importDatas
* excel数据
* @param requestData
* 客户端请求数据
* @return
*/
public abstract int processBatchData(List<List<Object>> importDatas,
Map<String, Object> requestData);
分享到:
相关推荐
前几天项目上需要加上导入导出,在网上找了一下,么有...于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不喜勿喷!
java poi excel java操作excel 可导入导出
主要是springboot+myBatis+poi+mysql的使用,从数据库查询到结果集导出excel到本地,从本地中的excel文件导入到数据库中。
java_poi实现excel导入导出功能,有详细的注解
最近公司需要把excel数据导入到mysql,自己结合网上例子写的demo。sql,excel都有,需要的小伙伴可以看看
这个是使用java语言 poi导入excel到数据库中,同时使用了xml对excel的每个单元格数据进行了非空验证。经测试,导入数据库成功。
poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出
利用POI实现Excel的导入和导出实例的实现,外加poi的全部jar包
java 使用 poi 解析导入大数据量(几万数据量+)时,报出OOM。这是使用POI 第二种处理方法,解决大数据量导入内存溢出问题,并提升效率
利用POI读取excel写入到word 利用POI读取excel写入到word 利用POI读取excel写入到word,压缩包里包含了jar包
通过代码,详细介绍使用Apache 2008-12-01发布的poi包,实现Excel2007的操作。
利用poi获取excel中大量数据,然后利用jdbc批量插入到mysql,直接运行main方法
该文件中包含了所有java项目中...将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用场景:如 excel格式对账单导出,将数据库数据导出到excel中(带样式字体等)。
java 开发中Poi操作excel批量导入导出项目需要的jar包
基于poi的excel导入导出封装,poi版本 <groupId>org.apache.poi <artifactId>poi <version>4.1.0 <groupId>org.apache.poi <artifactId>poi-ooxml <version>4.1.0 </dependency>
poi 导入 excel java,源代码
POI把Excel表格数据导入到数据库的小例子
利用 Apache POI 对 excel 操作并存入MySQL数据库的一个小demo。