java ?????? excel ???????????????java ????????? excel ??????OOM(????????????) exce
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ?????? excel ???????????????java ????????? excel ??????OOM(????????????) exce相关的知识,希望对你有一定的参考价值。
?????????iba ?????? ble target ?????? reads ???????????? mail ??????
????????????????????????????????????????????????????????????????????? EXCEL ?????????
????????????
?????? excel ???????????????????????????????????????
???????????????????????????????????? poi ???????????????????????? excel ?????????
???????????? & ????????????
- ????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
- ????????????
????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????
??????????????????????????????????????? MQ ???????????????????????????
MQ ?????????????????????????????? excel ??????????????????????????????????????? FTP ?????????????????????
??????????????????????????????????????????????????????????????? FTP ???????????????????????????????????????
EXCEL ???????????????????????????
OOM
????????? poi ????????????????????? excel ????????????????????????????????????
????????????????????????????????????
??????????????? SXSSF (Since POI 3.8 beta3) ???????????????
???????????????????????????
???????????????????????? xssf ?????????Excel???
?????????????????? easyexcel??????????????????????????????????????????????????????????????????????????????????????????
????????????????????? hutool BigExcelWriter???
???????????????????????????
FULL GC
?????????????????? 100W ?????????????????????????????????????????????????????????????????????????????????
?????????2??????
-
????????????????????????????????????????????????????????? 1w ???????????? 100 ????????????(??????)
- ???????????????????????????????????????????????? 10W ????????????????????????????????????
??????????????????????????????????????? 3 ????????????????????????????????????????????????????????????(?????????????????????????????????)
???????????? FULL-GC ??????????????????????????????????????????????????? excel ?????????????????????????????????100W ?????????????????? FULL-GC???
??????????????????
???????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????
?????? 100W ????????????????????? 100 ????????????????????????
????????????
????????? excel ?????????????????????????????????????????? HTTP ????????????????????? 100W ???????????????????????????
???????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????
???????????????????????????????????? Hutool??????????????????????????????????????????????????????
?????????????????????????????? easypoi/easyexcel ????????????????????????????????????
?????????????????????????????????
IExcel ??????????????? excel ??????
??????
-
OO ??????????????? excel??????????????????????????????
-
sax ???????????????SXSS ????????????????????? excel ????????? OOM???
-
????????????????????????????????????
-
???????????????????????????????????????????????? Map??????????????????????????????
- ?????????????????????????????????????????????????????????
????????????
-
?????????????????????
- excel ???????????????????????????
????????????
???????????????????????????apache poi ?????? excel ???????????????
?????????????????????????????????????????????
-
easypoi
-
easyexcel
- hutool-poi
???????????????????????????????????????????????????????????????????????????????????? excel ??????????????????
????????????
?????? Jar
?????? maven ?????????
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>iexcel</artifactId>
<version>0.0.2</version>
</dependency>
????????????
????????????????????? ExcelUtilTest.java
????????????????????????/????????? excel ?????????
- ExcelFieldModel.java
??????????????? @ExcelField
??????????????????????????????????????????@ExcelField
public class ExcelFieldModel {
@ExcelField
private String name;
@ExcelField(headName = "??????")
private String age;
@ExcelField(mapKey = "EMAIL", writeRequire = false, readRequire = false)
private String email;
@ExcelField(mapKey = "ADDRESS", headName = "??????", writeRequire = true)
private String address;
//getter and setter
}
????????????
IExcelWriter ?????????
IExcelWriter ???????????????????????????????????? new ???????????? ExcelUtil
???????????????
IExcelWriter ????????? | ExcelUtil ???????????? | ?????? |
---|---|---|
HSSFExcelWriter | ExcelUtil.get03ExcelWriter() | 2003 ????????? excel |
XSSFExcelWriter | ExcelUtil.get07ExcelWriter() | 2007 ????????? excel |
SXSSFExcelWriter | ExcelUtil.getBigExcelWriter() | ????????? excel????????? OOM |
????????? 2003
- excelWriter03Test()
??????????????????????????? 2003 excel ??????????????????
/**
* ????????? 03 excel ??????
*/
@Test
public void excelWriter03Test() {
// ???????????? excel ????????????
final String filePath = "excelWriter03.xls";
// ????????????
List<ExcelFieldModel> models = buildModelList();
try(IExcelWriter excelWriter = ExcelUtil.get03ExcelWriter();
OutputStream outputStream = new FileOutputStream(filePath)) {
// ??????????????????????????????????????????
excelWriter.write(models);
// ????????????????????????????????? excel ??????
excelWriter.flush(outputStream);
} catch (IOException e) {
throw new ExcelRuntimeException(e);
}
}
- buildModelList()
/**
* ???????????????????????????
* @return ????????????
*/
private List<ExcelFieldModel> buildModelList() {
List<ExcelFieldModel> models = new ArrayList<>();
ExcelFieldModel model = new ExcelFieldModel();
model.setName("??????1???");
model.setAge("25");
model.setEmail("[email protected]");
model.setAddress("?????????23???");
ExcelFieldModel modelTwo = new ExcelFieldModel();
modelTwo.setName("??????2???");
modelTwo.setAge("30");
modelTwo.setEmail("[email protected]");
modelTwo.setAddress("?????????26???");
models.add(model);
models.add(modelTwo);
return models;
}
?????????????????? 2007 excel
???????????????????????????????????????????????????????????????????????????
/**
* ?????????????????????
* ???????????????????????????????????????
*/
@Test
public void onceWriterAndFlush07Test() {
// ???????????? excel ????????????
final String filePath = "onceWriterAndFlush07.xlsx";
// ????????????
List<ExcelFieldModel> models = buildModelList();
// ????????? excel ????????????
IExcelWriter excelWriter = ExcelUtil.get07ExcelWriter();
// ?????????????????????
ExcelUtil.onceWriteAndFlush(excelWriter, models, filePath);
}
????????????
excel ?????????????????????????????????????????????????????? excel???
IExcelReader ?????????
IExcelReader ???????????????????????????????????? new ???????????? ExcelUtil
???????????????
IExcelReader ????????? | ExcelUtil ???????????? | ?????? |
---|---|---|
ExcelReader | ExcelUtil.getExcelReader() | ???????????? excel ???????????? |
Sax03ExcelReader | ExcelUtil.getBigExcelReader() | ???????????? 2003 excel ???????????? |
Sax07ExcelReader | ExcelUtil.getBigExcelReader() | ???????????? 2007 excel ???????????? |
excel ???????????????
/**
* ????????????
*/
@Test
public void readWriterTest() {
File file = new File("excelWriter03.xls");
IExcelReader<ExcelFieldModel> excelReader = ExcelUtil.getExcelReader(file);
List<ExcelFieldModel> models = excelReader.readAll(ExcelFieldModel.class);
System.out.println(models);
}
ExcelField ????????????
@ExcelField
????????????????????????
?????? | ?????? | ????????? | ?????? |
---|---|---|---|
mapKey | String | "" |
??????????????????????????? map ???,?????? map.key ????????????????????? bean ??????????????????????????????????????????????????? |
headName | String | "" |
excel ?????????????????????????????????????????????????????????????????? |
writeRequire | boolean | true | excel ????????????????????????????????? |
readRequire | boolean | true | excel ??????????????????????????? |
IExcelWriter ????????????
/**
* ?????????????????????????????????????????????Workbook??????Sheet????????????????????????<br>
* <p>
* data??????????????????????????????
* <pre>
* 1. Bean?????????????????????Bean????????????Bean???????????????????????????????????????????????????Bean?????????????????????data???????????? <br>
* </pre>
* @param data ??????
* @return this
*/
IExcelWriter write(Collection<?> data);
/**
* ?????????????????????????????????????????????Workbook??????Sheet????????????????????????<br>
* ??? map ?????? targetClass ?????????????????????
* ????????????: ?????? mybatis mapper ???????????? map ???????????????????????????????????????
* @param mapList map ??????
* @param targetClass ????????????
* @return this
*/
IExcelWriter write(Collection<Map<String, Object>> mapList, final Class<?> targetClass);
/**
* ???Excel Workbook??????????????????
*
* @param outputStream ?????????
* @return this
*/
IExcelWriter flush(OutputStream outputStream);
?????? sheet
?????? IExcelWriter ???????????????????????? sheet ?????????????????????????????????????????? sheet???
??????????????????
?????? IExcelWriter ????????????????????? excelWriter.containsHead(bool)
?????????????????? excel ?????????
IExcelReader ????????????
/**
* ???????????? sheet ???????????????
* @param tClass ????????? javabean ??????
* @return ????????????
*/
List<T> readAll(Class<T> tClass);
/**
* ????????????????????????
* @param tClass ??????
* @param startIndex ??????????????????(???0??????)
* @param endIndex ??????????????????
* @return ?????????????????????
*/
List<T> read(Class<T> tClass, final int startIndex, final int endIndex);
?????? sheet
?????? IExcelReader ???????????????????????? sheet ?????????????????????????????????????????? sheet???
?????????????????? sax ?????????????????????????????? sheet ????????????
??????????????????
?????? IExcelReader ????????????????????? excelReader.containsHead(bool)
?????????????????? excel ?????????
????????????
以上是关于java ?????? excel ???????????????java ????????? excel ??????OOM(????????????) exce的主要内容,如果未能解决你的问题,请参考以下文章