资源简介
数据量小的,可以使用普通api来做, 但是当数据量非常大时,普通的就不行了,不过我的这个代码可以完美解决此问题
代码片段和文件信息
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\.settings\org.eclipse.core.resources.prefs
文件 587 2016-07-12 11:04 ExcelUtil\.settings\org.eclipse.jdt.core.prefs
目录 0 2016-08-18 17:52 ExcelUtil\bin\
目录 0 2016-08-18 17:52 ExcelUtil\bin\com\
目录 0 2016-08-18 17:52 ExcelUtil\bin\com\askingdata\
目录 0 2016-08-18 17:52 ExcelUtil\bin\com\askingdata\excel\
目录 0 2016-08-18 17:52 ExcelUtil\bin\com\askingdata\excel\util\
文件 5234 2016-08-16 14:37 ExcelUtil\bin\com\askingdata\excel\util\ExcelUtil.class
文件 2355 2016-08-17 19:21 ExcelUtil\bin\com\askingdata\excel\util\Main$1.class
文件 5833 2016-08-17 19:21 ExcelUtil\bin\com\askingdata\excel\util\Main.class
文件 1417 2016-08-17 19:18 ExcelUtil\bin\com\askingdata\excel\util\Main2$1.class
文件 6099 2016-08-17 19:18 ExcelUtil\bin\com\askingdata\excel\util\Main2.class
文件 248 2016-08-12 16:04 ExcelUtil\bin\com\askingdata\excel\util\RowDataProcesser.class
文件 3583 2016-08-12 16:04 ExcelUtil\bin\com\askingdata\excel\util\Xlsx2ListData$SheetToList.class
文件 4953 2016-08-12 16:04 ExcelUtil\bin\com\askingdata\excel\util\Xlsx2ListData.class
目录 0 2016-08-18 17:52 ExcelUtil\bin\test\
文件 2654 2016-08-18 16:38 ExcelUtil\bin\test\Hufan.class
文件 1488 2016-08-12 16:04 ExcelUtil\bin\test\Main$1.class
文件 675 2016-08-12 16:04 ExcelUtil\bin\test\Main.class
目录 0 2016-08-18 17:53 ExcelUtil\doc\
目录 0 2016-08-18 17:52 ExcelUtil\lib\
文件 185140 2016-05-21 18:07 ExcelUtil\lib\commons-io-2.4.jar
文件 398520 2016-04-16 20:08 ExcelUtil\lib\mongo-2.10.1.jar
文件 2528204 2016-07-12 12:27 ExcelUtil\lib\poi-3.14-20160307.jar
文件 1286511 2016-07-12 12:36 ExcelUtil\lib\poi-ooxm
文件 5919795 2016-07-12 12:48 ExcelUtil\lib\poi-ooxm
文件 1367760 2016-07-30 11:16 ExcelUtil\lib\xercesImpl.jar
............此处省略16个文件信息
相关资源
- java+poi+excel读取写入等操作所有jar最新
- Java操作office方法jar包:POI_3.17
- Java 将员工信息保存到Excel表中
- Java 将Excel表中的内容保存到数据库
- Java 将数据库表中的内容写入Excel中
- Java 导出报表到Excel表格
- javaweb上传excel
- poi-bin-3.9-20121203.zip
- WebMagicJava爬虫实现,实现数据爬取,
- EXCEL导出导入+百度地图地址转经纬度
- Java读取Excel文件所需Jar包
- javaWeb上传Excel文件并将数据保存到数
- java web实现在线预览pdf和office文档de
- Java报表生成解决方案
- 将Excel文件导入数据库POI+Excel+MySQL+j
- Excel转json
- js解析excel代码,和java后端接收前台
- java Excel数据导出,HSSH、 XSSF、SXSSF、
- 企业通讯录项目 基于SSM下的JAVA项目
- 纯js+html实现羽毛球比赛抽签功能,生
- Android 加密解密文件 txt/excel文件
- java将excel数据读取存入mysql数据库中
- Java读取Excel表格数据时.xls、.xlsx 格式
- 使用servletjsp实现Excel文件的上传和数
- JAVA基于命令行的学生成绩管理系统
- jxl完美实现Excel加水印(内及jar包,基
- JSP技术将EXCEL导入到MYSQL中
- poi读取大数据量excel文件,避免内存溢
- java中table数据导出到excel中
- jsp读取Excel中的数据,以表格形式展现
评论
共有 条评论