目录
- 注意注意::::导出大文件的时候可能会有临时存储,
- 我的是在C:\Users\xbx\AppData\Local\Temp\poifiles
-
- 读csv文件
- 行数:1048575
- hutool: 5205
- esayPoi: 3929
- easyExcel1: 1917
- easyExcel2: 2832
-
- 读excel文件
- 行数:1048575
- hutool: 58207
- esayPoi: 25513
- easyExce1: 10646
- easyExcel2: 10123
-
- 写csv文件:
- 行数:1048575
- hutool: 6136
- esayPoi: 828
- easyExcel1: 6943
- easyExcel2: 5212
-
- 写excel文件:
- 行数:1048575
- hutool1: 146655
- hutool2: 23570
- esayPoi1: 21805
- esayPoi2: 93034
- easyExcel1:20762
- easyExcel2:20523
- easyExcel3:15386
- easyExcel4:14586
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.annotation.Excel;
- import lombok.Data;
-
- /**
- * @version v1.0
- * @ProjectName: ltpon
- * @ClassName: Strainentey
- * @Description:
- * @Author: xbx
- * @Date: 2023/12/8 13:55
- */
- @Data
- public class DeviceDto {
- //sn+channel
- String sn;
- //与地表距离(m)
- Double surfaceDistance;
- //结构层位
- String structuralLayer;
- //就写电信号
- String channel;
- //这个值就是StressStrainDataDto里面的key 如:"t.v1","t.v2"
- String dataKey;
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.hutool.core.annotation.Alias;
- import lombok.Data;
-
- /**
- * @version v1.0
- * @ProjectName: ltpon
- * @ClassName: Strainentey
- * @Description:
- * @Author: xbx
- * @Date: 2023/12/8 13:55
- */
- @Data
- public class StrainEntity {
- @Alias("时间")
- String time;
- @Alias("通道1")
- String v1;
- @Alias("通道2")
- String v2;
- @Alias("通道3")
- String v3;
- @Alias("通道4")
- String v4;
- Double v5;
- Double v6;
- Double v7;
- Double v8;
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.annotation.Excel;
- import lombok.Data;
-
- /**
- * @version v1.0
- * @ProjectName: ltpon
- * @ClassName: Strainentey
- * @Description:
- * @Author: xbx
- * @Date: 2023/12/8 13:55
- */
- @Data
- public class StrainEntity2 {
- @Excel(name = "时间")
- String time;
- @Excel(name = "通道1")
- String v1;
- @Excel(name = "通道2")
- String v2;
- @Excel(name = "通道3")
- String v3;
- @Excel(name = "通道4")
- String v4;
- Double v5;
- Double v6;
- Double v7;
- Double v8;
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import com.alibaba.excel.annotation.ExcelProperty;
- import lombok.Data;
-
- /**
- * @version v1.0
- * @ProjectName: ltpon
- * @ClassName: Strainentey
- * @Description:
- * @Author: xbx
- * @Date: 2023/12/8 13:55
- */
- @Data
- public class StrainEntity3 {
- @ExcelProperty("时间")
- String time;
- @ExcelProperty("通道1")
- String v1;
- @ExcelProperty("通道2")
- String v2;
- @ExcelProperty("通道3")
- String v3;
- @ExcelProperty("通道4")
- String v4;
- Double v5;
- Double v6;
- Double v7;
- Double v8;
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.annotation.Excel;
- import lombok.Data;
-
- import java.util.Date;
-
- /**
- * @version v1.0
- * @ProjectName: ltpon
- * @ClassName: Strainentey
- * @Description:
- * @Author: xbx
- * @Date: 2023/12/8 13:55
- */
- @Data
- public class StressStrainDataDto {
- // 年/月/日
- String date;
- // 时/分/秒/毫秒
- String time;
- // 时/分/秒/毫秒
- String dateTime;
-
- Double v1;
- Double v2;
- Double v3;
- Double v4;
- Double v5;
- Double v6;
- Double v7;
- Double v8;
- Double v9;
- Double v10;
- Double v11;
- Double v12;
- Double v13;
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.sdjtky.ltpon.FileTest.StrainEntity3;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.read.listener.ReadListener;
- import com.alibaba.excel.util.ListUtils;
- import com.alibaba.fastjson2.JSON;
- import org.apache.poi.ss.formula.functions.T;
-
- import java.util.ArrayList;
- import java.util.List;
-
- // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
- public class Strain3ReadListener
implements ReadListener { -
- /**
- * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收
- */
- /**
- * 缓存的数据
- */
- private List
cachedDataList = new ArrayList(); -
- /**
- * 这个每一条数据解析都会来调用
- *
- * @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
- * @param context
- */
- @Override
- public void invoke(T data, AnalysisContext context) {
- cachedDataList.add(data);
- // // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
- // if (cachedDataList.size() >= BATCH_COUNT) {
- // // 存储完成清理 list
- // cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
- // }
- }
-
- /**
- * 所有数据解析完成了 都会来调用
- *
- * @param context
- */
- @Override
- public void doAfterAllAnalysed(AnalysisContext context) {
- // 这里也要保存数据,确保最后遗留的数据也存储到数据库
- }
- public List
getCachedDataList() { - return cachedDataList;
- }
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.csv.CsvImportUtil;
- import cn.afterturn.easypoi.csv.entity.CsvImportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.hutool.core.io.resource.ResourceUtil;
- import cn.hutool.core.text.csv.CsvReader;
- import cn.hutool.core.text.csv.CsvUtil;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.event.AnalysisEventListener;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import org.junit.jupiter.api.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.util.ArrayList;
- import java.util.List;
-
- public class ReadCsvTest {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ReadCsvTest.class);
-
- @Test
- public void test() {
- String filePath = "G:/test/1048575.csv";
- hutool(filePath);
- // esayPoi(filePath);
- // easyExcel1(filePath);
- // easyExcel2(filePath);
- }
-
- public void hutool(String filePath) {
-
- try {
- long start = System.currentTimeMillis();
- CsvReader reader = CsvUtil.getReader();
- List
result = reader.read(ResourceUtil.getUtf8Reader(filePath), StrainEntity.class); - long end = System.currentTimeMillis();
- System.out.println("hutool:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void esayPoi(String filePath) {
-
- try {
- CsvImportParams params = new CsvImportParams(CsvImportParams.UTF8);
- long start = System.currentTimeMillis();
- List
result = CsvImportUtil.importCsv( - new FileInputStream(new File(filePath)),
- StrainEntity2.class,
- params);
-
- long end = System.currentTimeMillis();
- System.out.println("esayPoi:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel1(String filePath) {
- try {
- ImportParams params = new ImportParams();
- List
result = new ArrayList(); - long start = System.currentTimeMillis();
-
- EasyExcel.read(filePath, StrainEntity3.class, new AnalysisEventListener
() { - @Override
- public void invoke(StrainEntity3 reportExcel, AnalysisContext analysisContext) {
- // 将读取到的每一行存入reportDetails集合中
- result.add(reportExcel);
- }
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
- }).excelType(ExcelTypeEnum.CSV).sheet().doRead();
-
- long end = System.currentTimeMillis();
- System.out.println("easyExcel1:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel2(String filePath) {
- final Strain3ReadListener
strain3ReadListener = new Strain3ReadListener() ; -
- try {
- long start = System.currentTimeMillis();
- EasyExcel.read(filePath, StrainEntity3.class, strain3ReadListener).sheet().doRead();
- // EasyExcel.read(filePath)
- // .excelType(ExcelTypeEnum.CSV)
- // .registerReadListener(strain3ReadListener)
- // .sheet()
- // .doRead();
- List
result = strain3ReadListener.getCachedDataList(); -
- long end = System.currentTimeMillis();
- System.out.println("easyExcel2:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.ExcelImportUtil;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.afterturn.easypoi.handler.inter.IReadHandler;
- import cn.hutool.poi.excel.ExcelReader;
- import cn.hutool.poi.excel.ExcelUtil;
- import cn.sdjtky.ltpon.easy.excel.listener.MergeCellsReadListener;
- import cn.sdjtky.ltpon.poi.DemoDataListener;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.enums.CellExtraTypeEnum;
- import com.alibaba.excel.event.AnalysisEventListener;
- import com.alibaba.excel.read.listener.PageReadListener;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.alibaba.fastjson2.JSON;
- import org.junit.jupiter.api.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.util.ArrayList;
- import java.util.List;
-
- public class ReadExcelTest {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ReadExcelTest.class);
-
- @Test
- public void test() {
- String filePath = "G:/test/1048575.xlsx";
- hutool(filePath);
- // esayPoi(filePath);
- // easyExcel1(filePath);
- // easyExcel2(filePath);
- }
-
-
-
- public void hutool(String filePath) {
-
- try {
- long start = System.currentTimeMillis();
- ExcelReader reader = ExcelUtil.getReader(filePath);
- List
result = reader.readAll(StrainEntity.class); - long end = System.currentTimeMillis();
- System.out.println("hutool:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void esayPoi(String filePath) {
- try {
- ImportParams params = new ImportParams();
- List
result = new ArrayList(); - long start = System.currentTimeMillis();
- ExcelImportUtil.importExcelBySax(
- new FileInputStream(new File(filePath)),
- StrainEntity2.class,
- params,
- new IReadHandler
() { - @Override
- public void handler(StrainEntity2 o) {
- result.add(o);
- }
- @Override
- public void doAfterAll() {
- System.out.println("全部执行完毕了--------------------------------");
- }
- });
-
- long end = System.currentTimeMillis();
- System.out.println("esayPoi:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel1(String filePath) {
- try {
- ImportParams params = new ImportParams();
- List
result = new ArrayList(); - long start = System.currentTimeMillis();
-
- EasyExcel.read(filePath, StrainEntity3.class, new AnalysisEventListener
() { - @Override
- public void invoke(StrainEntity3 reportExcel, AnalysisContext analysisContext) {
- // 将读取到的每一行存入reportDetails集合中
- result.add(reportExcel);
- }
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
- }).sheet().doRead();
-
- long end = System.currentTimeMillis();
- System.out.println("easyExcel1:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel2(String filePath) {
- final Strain3ReadListener
strain3ReadListener = new Strain3ReadListener() ; -
- try {
- long start = System.currentTimeMillis();
- EasyExcel.read(filePath, StrainEntity3.class, strain3ReadListener).sheet().doRead();
- // EasyExcel.read(filePath)
- // .registerReadListener(strain3ReadListener)
- // .sheet()
- // .doRead();
- List
result = strain3ReadListener.getCachedDataList(); -
- long end = System.currentTimeMillis();
- System.out.println("easyExcel2:"+ (end-start));
- System.out.println("行数:"+result.size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.csv.CsvExportUtil;
- import cn.afterturn.easypoi.csv.CsvImportUtil;
- import cn.afterturn.easypoi.csv.entity.CsvExportParams;
- import cn.afterturn.easypoi.csv.entity.CsvImportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.hutool.core.io.FastByteArrayOutputStream;
- import cn.hutool.core.io.resource.ResourceUtil;
- import cn.hutool.core.text.csv.CsvReader;
- import cn.hutool.core.text.csv.CsvUtil;
- import cn.hutool.core.text.csv.CsvWriter;
- import cn.hutool.core.util.CharsetUtil;
- import cn.sdjtky.ltpon.query.HumidityQuery;
- import cn.sdjtky.ltpon.utils.BeanCopierUtils;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.ExcelWriter;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.event.AnalysisEventListener;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.alibaba.excel.write.metadata.WriteSheet;
- import com.ruoyi.common.utils.uuid.IdUtils;
- import org.junit.jupiter.api.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.BeanUtils;
-
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.util.ArrayList;
- import java.util.List;
-
- public class WriteCsvTest {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(WriteCsvTest.class);
-
- @Test
- public void test() {
- String filePath = "G:/test/1048575.csv";
- List
strainEntity3List = Rerad_easyExcel1(filePath); -
- List
strainEntityList = BeanCopierUtils.list(strainEntity3List, StrainEntity::new); - List
strainEntity2List = BeanCopierUtils.list(strainEntity3List, StrainEntity2::new); - // List
strainEntity3List = BeanCopierUtils.list(strainEntity3List, StrainEntity3::new); - // hutool(strainEntityList);
- // esayPoi(strainEntity2List);
- // easyExcel1(strainEntity3List);
- easyExcel2(strainEntity3List);
- }
-
- public List
Rerad_easyExcel1(String filePath) { - List
result = new ArrayList(); - try {
- ImportParams params = new ImportParams();
-
- EasyExcel.read(filePath, StrainEntity3.class, new AnalysisEventListener
() { - @Override
- public void invoke(StrainEntity3 reportExcel, AnalysisContext analysisContext) {
- // 将读取到的每一行存入reportDetails集合中
- result.add(reportExcel);
- }
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
- }).excelType(ExcelTypeEnum.CSV).sheet().doRead();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
-
- public void hutool(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
- CsvWriter writer = CsvUtil.getWriter("G:/test/write/hutool.csv", CharsetUtil.CHARSET_UTF_8);
- // writer.write(list);
- writer.writeBeans(list);
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("hutool:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void esayPoi(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- CsvExportParams params = new CsvExportParams(CsvImportParams.UTF8);
- FileOutputStream fos = new FileOutputStream("G:/test/write/esayPoi.csv");
- CsvExportUtil.exportCsv(params, StrainEntity2.class, list, fos);
- fos.flush();
- fos.close();
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("esayPoi:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel1(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- FastByteArrayOutputStream fastByteArrayOutputStream = new FastByteArrayOutputStream();
- try {
- EasyExcel.write(fastByteArrayOutputStream, StrainEntity3.class)
- .autoCloseStream(false)
- .excelType(ExcelTypeEnum.CSV)
- .sheet("sheet页")
- .doWrite(list);
- FileOutputStream fileOutputStream = new FileOutputStream("G:/test/write/easyExcel.csv");
- fastByteArrayOutputStream.writeTo(fileOutputStream);
- fileOutputStream.flush();
- fileOutputStream.close();
-
- } finally {
- }
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel1:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel2(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- try {
- EasyExcel.write("G:/test/write/easyExcel.csv", StrainEntity3.class).excelType(ExcelTypeEnum.CSV).sheet("sss").doWrite(list);
- } finally {
- }
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.ExcelExportUtil;
- import cn.afterturn.easypoi.excel.ExcelImportUtil;
- import cn.afterturn.easypoi.excel.entity.ExportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
- import cn.afterturn.easypoi.handler.inter.IExcelExportServer;
- import cn.afterturn.easypoi.handler.inter.IReadHandler;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.io.FastByteArrayOutputStream;
- import cn.hutool.core.text.csv.CsvUtil;
- import cn.hutool.core.text.csv.CsvWriter;
- import cn.hutool.core.util.CharsetUtil;
- import cn.hutool.poi.excel.BigExcelWriter;
- import cn.hutool.poi.excel.ExcelReader;
- import cn.hutool.poi.excel.ExcelUtil;
- import cn.hutool.poi.excel.ExcelWriter;
- import cn.sdjtky.ltpon.utils.BeanCopierUtils;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.event.AnalysisEventListener;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.alibaba.excel.write.metadata.WriteSheet;
- import com.alibaba.excel.write.metadata.fill.FillWrapper;
- import com.ruoyi.common.utils.uuid.IdUtils;
- import lombok.SneakyThrows;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.xssf.streaming.SXSSFWorkbook;
- import org.junit.jupiter.api.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- public class WriteExcelTest {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(WriteExcelTest.class);
-
- @Test
- public void test() {
- String filePath = "G:/test/1048575.csv";
- List
strainEntity3List = Rerad_easyExcel1(filePath); -
- List
strainEntityList = BeanCopierUtils.list(strainEntity3List, StrainEntity::new); - List
strainEntity2List = BeanCopierUtils.list(strainEntity3List, StrainEntity2::new); - // hutool1(strainEntityList);
- // hutool2(strainEntityList);
- // esayPoi1(strainEntity2List);
- // esayPoi2(strainEntity2List);
- // easyExcel1(strainEntity3List);
- // easyExcel2(strainEntity3List);
- // easyExcel3(strainEntity3List);
- easyExcel4(strainEntity3List);
- }
-
- public List
Rerad_easyExcel1(String filePath) { - List
result = new ArrayList(); - try {
- ImportParams params = new ImportParams();
-
- EasyExcel.read(filePath, StrainEntity3.class, new AnalysisEventListener
() { - @Override
- public void invoke(StrainEntity3 reportExcel, AnalysisContext analysisContext) {
- // 将读取到的每一行存入reportDetails集合中
- result.add(reportExcel);
- }
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
- }).excelType(ExcelTypeEnum.CSV).sheet().doRead();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
-
- public void hutool1(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
- ExcelWriter writer = ExcelUtil.getWriter("G:/test/write/hutool.xlsx");
- writer.write(list, true);
- // 关闭writer,释放内存
- writer.close();
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("hutool:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void hutool2(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- BigExcelWriter writer= ExcelUtil.getBigWriter("G:/test/write/hutool2"+ IdUtils.getSequenceID()+".xlsx");
- writer.write(list);
- writer.close();
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("hutool2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void esayPoi1(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- ExportParams params = new ExportParams();
- params.setMaxNum(1048576);
- Workbook workbook = null;
- workbook = ExcelExportUtil.exportBigExcel(params, StrainEntity2.class, new IExcelExportServer() {
-
- @Override
- public List
- if (list.size()<=0){
- return null;
- }
- List
- listObj.addAll(list);
- list.clear();
- return listObj;
- }
- }, 1);
-
- // workbook = ExcelExportUtil.exportExcel(params,StrainEntity2.class,list);
-
- FileOutputStream fos = new FileOutputStream("G:/test/write/esayPoi.xlsx");
- workbook.write(fos);
- fos.close();
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("esayPoi:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void esayPoi2(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- Map
map = new HashMap(); - map.put("list", list);
- TemplateExportParams params = new TemplateExportParams("G:/test/t/StrainEntity2.xlsx");
- Workbook workbook = ExcelExportUtil.exportExcel(params, map);
- FileOutputStream fos = new FileOutputStream("G:/test/write/esayPoi2.xlsx");
- workbook.write(fos);
- fos.close();
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("esayPoi2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel1(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- FastByteArrayOutputStream fastByteArrayOutputStream = new FastByteArrayOutputStream();
- try {
- EasyExcel.write(fastByteArrayOutputStream, StrainEntity3.class)
- .autoCloseStream(false)
- .excelType(ExcelTypeEnum.XLSX)
- .sheet("sheet页")
- .doWrite(list);
- FileOutputStream fileOutputStream = new FileOutputStream("G:/test/write/easyExcel.xlsx");
- fastByteArrayOutputStream.writeTo(fileOutputStream);
- fileOutputStream.flush();
- fileOutputStream.close();
-
- } finally {
- }
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel1:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel2(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- try {
- EasyExcel.write("G:/test/write/easyExcel.xlsx", StrainEntity3.class).excelType(ExcelTypeEnum.XLSX).sheet("sss").doWrite(list);
- } finally {
- }
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel3(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
-
- String templateFileName = "G:/test/t/StrainEntity3.xlsx";
- String fileName = "G:/test/write/easyExcel.xlsx";
- // 方案1 一下子全部放到内存里面 并填充
- // 这里 会填充到第一个sheet, 然后文件流会自动关闭
- EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(list);
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel3:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel4(List
list) { - System.out.println("数据行数:"+list.size());
- try {
- long start = System.currentTimeMillis();
- FastByteArrayOutputStream fastByteArrayOutputStream = new FastByteArrayOutputStream();
- // 方案2 分多次 填充 会使用文件缓存(省内存)
- String templateFileName = "G:/test/t/StrainEntity3.xlsx";
- String fileName = "G:/test/write/easyExcel.xlsx";
- try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(fastByteArrayOutputStream).withTemplate(templateFileName).build()) {
- WriteSheet writeSheet = EasyExcel.writerSheet().build();
- excelWriter.fill(list, writeSheet);
- }
-
- // String templateFileName = "G:/test/t/StrainEntity3.1.xlsx";
- // String fileName = "G:/test/write/easyExcel.xlsx";
- // try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
- // WriteSheet writeSheet = EasyExcel.writerSheet().build();
- // excelWriter.fill(new FillWrapper("sl", list), writeSheet);
- // }
-
- // String templateFileName = "G:/test/t/StrainEntity3.1.xlsx";
- // String fileName = "G:/test/write/easyExcel.xlsx";
- // try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
- // WriteSheet writeSheet = EasyExcel.writerSheet().build();
- // excelWriter.fill(new FillWrapper("sl", listX), writeSheet);
- // excelWriter.fill(new FillWrapper("sl", listX), writeSheet);
- // excelWriter.fill(new FillWrapper("sl", listX), writeSheet);
- // excelWriter.fill(new FillWrapper("sl", listX), writeSheet);
- // excelWriter.fill(new FillWrapper("sl", listX), writeSheet);
- // }
-
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel4:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- package cn.sdjtky.ltpon.FileTest;
-
- import cn.afterturn.easypoi.excel.ExcelExportUtil;
- import cn.afterturn.easypoi.excel.entity.ExportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
- import cn.afterturn.easypoi.handler.inter.IExcelExportServer;
- import cn.hutool.core.io.FastByteArrayOutputStream;
- import cn.hutool.poi.excel.BigExcelWriter;
- import cn.hutool.poi.excel.ExcelUtil;
- import cn.hutool.poi.excel.ExcelWriter;
- import cn.sdjtky.ltpon.utils.BeanCopierUtils;
- import cn.sdjtky.ltpon.utils.LocalDateTimeUtils;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.enums.WriteDirectionEnum;
- import com.alibaba.excel.event.AnalysisEventListener;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.alibaba.excel.write.metadata.WriteSheet;
- import com.alibaba.excel.write.metadata.fill.FillConfig;
- import com.alibaba.excel.write.metadata.fill.FillWrapper;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.uuid.IdUtils;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.junit.jupiter.api.Test;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.core.io.DefaultResourceLoader;
- import org.springframework.core.io.Resource;
-
- import java.io.ByteArrayOutputStream;
- import java.io.FileOutputStream;
- import java.time.LocalDateTime;
- import java.util.*;
-
- public class StressStrainTest {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(StressStrainTest.class);
-
- private static final String stationName = "临沂G205观测点";
- private static final String pileNumber = "K103--K113";
- private static final String observer = "徐本锡";
- private static final String observationDate = LocalDateTimeUtils.format(LocalDateTimeUtils.DEFAULT_PATTERN,LocalDateTime.now());
- private static final String reviewer = "金小少";
- private static final String reviewDate = LocalDateTimeUtils.format(LocalDateTimeUtils.DEFAULT_PATTERN,LocalDateTime.now());
- @Test
- public void test() {
- // esayPoi2();
- easyExcel4();
- // easyExcelCSV2();
- }
-
-
- public Map
getData(){ - Map
map = new HashMap(); -
- List
deviceList = new ArrayList(); - for (int i=1; i<=8; i++){
- DeviceDto deviceDto= new DeviceDto();
- deviceDto.setSn("传感器x_"+i);
- deviceDto.setSurfaceDistance(Double.valueOf(i));
- deviceDto.setStructuralLayer("层位"+i);
- deviceDto.setChannel("电信号");
- deviceDto.setDataKey("t.v"+i);
- deviceList.add(deviceDto);
- }
-
- List
- List
dataList2 = new ArrayList(); - for(int i=0; i<100; i++){
- Map
m = new HashMap(); - StressStrainDataDto dto = new StressStrainDataDto();
- for (int j=1; j<=8; j++){
- m.put("date", DateUtils.datePath());
- m.put("time", DateUtils.dateTimeNow(DateUtils.HHMMssSSS_1));
- m.put("v"+j, Math.random()+1);
-
- dto.setDate(DateUtils.datePath());
- dto.setTime(DateUtils.dateTimeNow(DateUtils.HHMMssSSS_1));
- dto.setDateTime(DateUtils.dateTimeNow(DateUtils.YYYYMMDDHHMMssSSS_1));
-
- dto.setV1( Math.random()+1);
- dto.setV2( Math.random()+1);
- dto.setV3( Math.random()+1);
- dto.setV4( Math.random()+1);
- dto.setV5( Math.random()+1);
- dto.setV6( Math.random()+1);
- dto.setV7( Math.random()+1);
- dto.setV8( Math.random()+1);
- }
- dataList.add(m);
- dataList2.add(dto);
- }
-
- map.put("stationName", stationName);
- map.put("pileNumber", pileNumber);
- map.put("observer", observer);
- map.put("observationDate", observationDate);
- map.put("reviewer", reviewer);
- map.put("reviewDate", reviewDate);
- map.put("deviceList", deviceList);
- map.put("dataList", dataList2);
-
- return map;
- }
-
- public void esayPoi2() {
- Map
data = getData(); - System.out.println("数据行数:"+((List)data.get("dataList")).size());
- try {
- long start = System.currentTimeMillis();
- TemplateExportParams params = new TemplateExportParams("G:/test/t/stressStrainTemplateDongHua.xlsx");
- params.setColForEach(true);
- Workbook workbook = ExcelExportUtil.exportExcel(params, data);
- FileOutputStream fos = new FileOutputStream("G:/test/write/stressStrainTemplateDongHua.xlsx");
- workbook.write(fos);
- fos.close();
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("esayPoi2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcel4() {
- Map
data = getData(); - Map
data1 = new HashMap(); - data1.put("stationName", data.get("stationName"));
- data1.put("pileNumber", data.get("pileNumber"));
- data1.put("observer", data.get("observer"));
- data1.put("observationDate", data.get("observationDate"));
- data1.put("reviewer", data.get("reviewer"));
- data1.put("reviewDate", data.get("reviewDate"));
- List
deviceList = (List) data.get("deviceList"); - List
dataList = (List) data.get("dataList"); -
- // 根据用户传入字段 导出数据
- Set
includeColumnFiledNames = new HashSet(); - includeColumnFiledNames.add("date");
- // includeColumnFiledNames.add("time");
- for(int i=0; i
- includeColumnFiledNames.add("v"+(i+1));
- }
-
- System.out.println("数据行数:"+((List)data.get("dataList")).size());
- try {
- long start = System.currentTimeMillis();
- Resource resource = new DefaultResourceLoader().getResource("classpath:templates/stressStrain/stressStrainTemplateDongHua.xlsx");
-
- FastByteArrayOutputStream outputStream = new FastByteArrayOutputStream();
- // 方案2 分多次 填充 会使用文件缓存(省内存)
- // String templateFileName = "G:/test/t/stressStrainTemplateDongHua2.xlsx";
- // try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(fastByteArrayOutputStream).withTemplate(templateFileName).build()) {
- // WriteSheet writeSheet = EasyExcel.writerSheet().build();
- // FillConfig fillConfig = FillConfig.builder().autoStyle(true).direction(WriteDirectionEnum.HORIZONTAL).build();
- // excelWriter.fill(data1, writeSheet);
- // excelWriter.fill(new FillWrapper("deviceList", deviceList), fillConfig, writeSheet);
- writeSheet.setIncludeColumnFieldNames(includeColumnFiledNames);
- // excelWriter.fill(new FillWrapper("dataList", dataList), writeSheet);
- // }
-
-
- try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(resource.getInputStream()).build()) {
- WriteSheet writeSheet = EasyExcel.writerSheet().build();
- FillConfig fillConfig = FillConfig.builder().autoStyle(true).direction(WriteDirectionEnum.HORIZONTAL).build();
- excelWriter.fill(data1, writeSheet);
- excelWriter.fill(new FillWrapper("deviceList", deviceList), fillConfig, writeSheet);
- excelWriter.fill(new FillWrapper("dataList", dataList), writeSheet);
- excelWriter.close();
- outputStream.flush();
- outputStream.close();
- }
- // FileOutputStream fileOutputStream = new FileOutputStream("G:/test/write/123.xlsx");
- // outputStream.writeTo(fileOutputStream);
- // fileOutputStream.flush();
- // fileOutputStream.close();
- long end = System.currentTimeMillis();
- // String templateFileName = "G:/test/t/stressStrainTemplateDongHua2.xlsx";
- // String fileName = "G:/test/write/stressStrainTemplateDongHua2.xlsx";
- // try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(resource.getInputStream()).build()) {
- // WriteSheet writeSheet = EasyExcel.writerSheet().build();
- // FillConfig fillConfig = FillConfig.builder().autoStyle(true).direction(WriteDirectionEnum.HORIZONTAL).build();
- // excelWriter.fill(data1, writeSheet);
- // excelWriter.fill(new FillWrapper("deviceList", deviceList), fillConfig, writeSheet);
- writeSheet.setIncludeColumnFieldNames(includeColumnFiledNames);
- // excelWriter.fill(new FillWrapper("dataList", dataList), writeSheet);
- // }
-
-
- long cost = end-start;
- System.out.println("easyExcel4:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void easyExcelCSV2() {
-
-
- Map
data = getData(); - List
deviceList = (List) data.get("deviceList"); - List
dataList = (List) data.get("dataList"); -
- // 根据用户传入字段 导出数据
- Set
includeColumnFiledNames = new HashSet(); -
- List
> headList = new ArrayList>();
- List
head0 = new ArrayList(); - head0.add("时间");
- head0.add("与路表距离");
- head0.add("结构层位");
- headList.add(head0);
- includeColumnFiledNames.add("dateTime");
-
- for(int i=0; i
- includeColumnFiledNames.add("v"+(i+1));
- List
head = new ArrayList(); - head.add(deviceList.get(i).getSn());
- head.add(deviceList.get(i).getSurfaceDistance().toString());
- head.add(deviceList.get(i).getStructuralLayer());
- headList.add(head);
- }
-
- System.out.println("数据行数:"+((List)data.get("dataList")).size());
- try {
- long start = System.currentTimeMillis();
-
- try {
- EasyExcel.write("G:/test/write/stressStrainTemplateDongHua2.csv", StressStrainDataDto.class).head(headList).includeColumnFieldNames(includeColumnFiledNames).excelType(ExcelTypeEnum.CSV).sheet("sss").doWrite(dataList);
- } finally {
- }
-
- long end = System.currentTimeMillis();
- long cost = end-start;
- System.out.println("easyExcel2:"+ cost);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
-
相关阅读:
[spark] RDD 编程指南(翻译)
[2023.09.25]:Rust编写基于web_sys的编辑器:输入光标再次定位的小结
一篇让你使用vue-cli搭建SPA项目
【Spring Web教程】SpringBoot 实现一应用多Tomcat容器
终于有人把不同标签的加工内容与落库讲明白了丨DTVision分析洞察篇
【博客551】实现主备高可用vip的几种方式
关于地方美食的HTML网页设计——地方美食介绍网站 HTML顺德美食介绍 html网页制作代码大全
从零开始运行YOLOV5
Win11中Yolo V10安装过程记录
实时即未来,车联网项目之电子围栏分析【六】
-
原文地址:https://blog.csdn.net/xubenxismile/article/details/136375721