数据量小的,可以使用普通api来做, 但是当数据量非常大时,普通的就不行了,不过我的这个代码可以完美解决此问题
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-08-18 17:52 ExcelUtil
文件 737 2016-07-30 14:36 ExcelUtil.classpath
文件 368 2016-07-30 13:51 ExcelUtil.project
目录 0 2016-08-18 17:52 ExcelUtil.settings
文件 57 2016-07-30 14:16 ExcelUtil.settingsorg.eclipse.core.resources.prefs
文件 587 2016-07-12 11:04 ExcelUtil.settingsorg.eclipse.jdt.core.prefs
目录 0 2016-08-18 17:52 ExcelUtilin
目录 0 2016-08-18 17:52 ExcelUtilincom
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdata
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdataexcel
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdataexcelutil
文件 5234 2016-08-16 14:37 ExcelUtilincomaskingdataexcelutilExcelUtil.class
文件 2355 2016-08-17 19:21 ExcelUtilincomaskingdataexcelutilMain$1.class
文件 5833 2016-08-17 19:21 ExcelUtilincomaskingdataexcelutilMain.class
文件 1417 2016-08-17 19:18 ExcelUtilincomaskingdataexcelutilMain2$1.class
文件 6099 2016-08-17 19:18 ExcelUtilincomaskingdataexcelutilMain2.class
文件 248 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilRowDataProcesser.class
文件 3583 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilXlsx2ListData$SheetToList.class
文件 4953 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilXlsx2ListData.class
目录 0 2016-08-18 17:52 ExcelUtilin est
文件 2654 2016-08-18 16:38 ExcelUtilin estHufan.class
文件 1488 2016-08-12 16:04 ExcelUtilin estMain$1.class
文件 675 2016-08-12 16:04 ExcelUtilin estMain.class
目录 0 2016-08-18 17:53 ExcelUtildoc
目录 0 2016-08-18 17:52 ExcelUtillib
文件 185140 2016-05-21 18:07 ExcelUtillibcommons-io-2.4.jar
文件 398520 2016-04-16 20:08 ExcelUtillibmongo-2.10.1.jar
文件 2528204 2016-07-12 12:27 ExcelUtillibpoi-3.14-20160307.jar
文件 1286511 2016-07-12 12:36 ExcelUtillibpoi-ooxml-3.14-20160307.jar
文件 5919795 2016-07-12 12:48 ExcelUtillibpoi-ooxml-schemas-3.14-20160307.jar
文件 1367760 2016-07-30 11:16 ExcelUtillibxercesImpl.jar
............此处省略16个文件信息
package com.askingdata.excel.util;
import java.io.File;
import java.util.ArrayList;
import java.util.linkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Cellstyle;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.DateUtil;
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.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
/**
* 读取xlsx文件,不适用于读取大文件
*/
public static List> read(String filePath) throws Exception {
List> result = new ArrayList<>();
Workbook wb = new XSSFWorkbook(new File(filePath));
for (Sheet sheet : wb) {
for (Row row : sheet) {
List rowData = getRowData(row);
result.add(rowData);
}
}
wb.close();
return result;
}
/**
* 读取xlsx文件,不适用于读取大文件
*
* @return map: key->sheet name value->rowData
*/
public static Map>> readMultiSheet(String filePath)
throws Exception {
Map>> result = new linkedHashMap<>();
Workbook wb = new XSSFWorkbook(new File(filePath));
for (Sheet sheet : wb) {
List> sheetResult = new ArrayList<>();
for (Row row : sheet) {
List rowData = getRowData(row);
sheetResult.add(rowData);
}
result.put(sheet.getSheetName() sheetResult);
}
wb.close();
return result;
}
/**
* 以SAX方式读取xlsx文件,读取后将结果全部加载到内存,适用于读取较大文件
*
* @param filePath
* 文件路径
* @param minColumns
* 补齐到多少列,-1表示不补齐
*/
public static Listject>> readBigFile(String filePath int minColumns)
throws Exception {
File xlsxFile = new File(filePath);
OPCPackage p = OPCPackage.open(xlsxFile.getPath() PackageAccess.READ);
Xlsx2ListData xlsx2ListData = new Xlsx2ListData(p minColumns null);
Listject>> result = xlsx2ListData.process();
p.close();
return result;
}
/**
* 以SAX方式读取xlsx文件,读取每一行调用RowDataProcesser,适用于读超大文件
*
* @param filePath
* 文件路径
* @param minColumns
* 补齐到多少列,-1表示不补齐
* @param rowDataProcesser
* 处理每一行的数据
*/
public static void readBigFile(String filePath int minColumns
RowDataProcesser rowDataProcesser) throws Exception {
File xlsxFile = new File(filePath);
OPCPackage p = OPCPackage.open(xlsxFile.getPath() PackageAccess.READ);
Xlsx2ListData xlsx2ListData = new Xlsx2ListData(p minColumns
rowDataProcesser);
xlsx2ListData.process();
p.close();
}
private static List getRowData(Row row) {
List rowData = new ArrayList<>();
int cellNum = row.getLastCellNum();
for (int i = 0; i < cellNum; i++) {
Cell cell = row.getCell(i);
if (cell == null) {
rowData.add
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-08-18 17:52 ExcelUtil
文件 737 2016-07-30 14:36 ExcelUtil.classpath
文件 368 2016-07-30 13:51 ExcelUtil.project
目录 0 2016-08-18 17:52 ExcelUtil.settings
文件 57 2016-07-30 14:16 ExcelUtil.settingsorg.eclipse.core.resources.prefs
文件 587 2016-07-12 11:04 ExcelUtil.settingsorg.eclipse.jdt.core.prefs
目录 0 2016-08-18 17:52 ExcelUtilin
目录 0 2016-08-18 17:52 ExcelUtilincom
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdata
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdataexcel
目录 0 2016-08-18 17:52 ExcelUtilincomaskingdataexcelutil
文件 5234 2016-08-16 14:37 ExcelUtilincomaskingdataexcelutilExcelUtil.class
文件 2355 2016-08-17 19:21 ExcelUtilincomaskingdataexcelutilMain$1.class
文件 5833 2016-08-17 19:21 ExcelUtilincomaskingdataexcelutilMain.class
文件 1417 2016-08-17 19:18 ExcelUtilincomaskingdataexcelutilMain2$1.class
文件 6099 2016-08-17 19:18 ExcelUtilincomaskingdataexcelutilMain2.class
文件 248 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilRowDataProcesser.class
文件 3583 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilXlsx2ListData$SheetToList.class
文件 4953 2016-08-12 16:04 ExcelUtilincomaskingdataexcelutilXlsx2ListData.class
目录 0 2016-08-18 17:52 ExcelUtilin est
文件 2654 2016-08-18 16:38 ExcelUtilin estHufan.class
文件 1488 2016-08-12 16:04 ExcelUtilin estMain$1.class
文件 675 2016-08-12 16:04 ExcelUtilin estMain.class
目录 0 2016-08-18 17:53 ExcelUtildoc
目录 0 2016-08-18 17:52 ExcelUtillib
文件 185140 2016-05-21 18:07 ExcelUtillibcommons-io-2.4.jar
文件 398520 2016-04-16 20:08 ExcelUtillibmongo-2.10.1.jar
文件 2528204 2016-07-12 12:27 ExcelUtillibpoi-3.14-20160307.jar
文件 1286511 2016-07-12 12:36 ExcelUtillibpoi-ooxm
文件 5919795 2016-07-12 12:48 ExcelUtillibpoi-ooxm
文件 1367760 2016-07-30 11:16 ExcelUtillibxercesImpl.jar
............此处省略16个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)