当前位置: 首页 > news >正文

门户网站开发技术服务合同成品网站源码

门户网站开发技术服务合同,成品网站源码,珠海免费模板建站,梅州网站制作总结:目前市面上流行的2种 EasyExcel和POI都不是真正的对物理excel文件进行追加导入。只是在缓存里面追加,最后一次性写入,并不能解决内存占用问题。 1.EasyExcel2.POI3.CSV 无非就是下面两种逻辑: 1.for循环查询数据,…

总结:目前市面上流行的2种 EasyExcel和POI都不是真正的对物理excel文件进行追加导入。只是在缓存里面追加,最后一次性写入,并不能解决内存占用问题。

      • 1.EasyExcel
      • 2.POI
      • 3.CSV

无非就是下面两种逻辑:
1.for循环查询数据,将数据写入缓存,最后一次性写入excel。
2.将已有的excel通过FIleInputStream流读出来,加载到内存当中,然后获取对应sheet页的行数,进行追加操作。

PS:建议使用CSV文件格式,直接使用Java原生的FileUtils追加写入

FileUtils.writeStringToFile(file, sb.toString(), "GBK", true);

下面来讲讲easyExcel、POI、csv相关的代码写法:

要求:
1.对表头进行排序过滤
2.对列进行排序过滤

1.EasyExcel

官网地址:EasyExcel官网

我们使用新版本的,旧的对于字段排序/过滤都不支持<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency>//此为线程池异步导出
commonExecutor.execute(() -> {File file = null;ExcelWriter excelWriter = null;try {file = File.createTempFile("a", ".xlsx");file.deleteOnExit();excelWriter = EasyExcel.write(file, UserVO.class).head(headlist)  // 表头,传入一个list集合.includeColumnFieldNames(showColumnList) // 对于UserVO要展示的列集合.orderByIncludeColumn(true) // 是否根据showColumnList集合的顺序排序.autoCloseStream(true) // 自动关闭流.build();WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();// 循环 200/页查询数据int pageNum = 1;int pageSize = 200;while (true) {List<UserVO> voList = getData(pageNum, pageSize); // getData根据业务实现// 将数据写入临时文件 此处循环追加就是写到内存里面excelWriter.write(voList , writeSheet);if (pageNum * pageSize >= count) {break;}pageNum++;}// 数据处理完毕后,刷盘写入物理文件excelWriter.finish();} catch (Exception e) {log.error("导出 异常:" + e.getMessage(), e);} finally {// 删除临时文件if (!Objects.isNull(file)) {file.delete();}}
});

2.POI

网传SXSSFWorkbook可以实现追加写入,然后实操后,其实是覆盖写入

//SXSSFWorkbook 和 XSSFWorkbook 都差不多,只是定义不同,写法都差不多import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;public class ExcelAppender {public static void main(String[] args) {String filePath = "C:\\Local\\Temp\\11.xlsx";// 构造一个查询数据的列表List<String> queryDataList = List.of("query4", "query5", "query6");// 加载已存在的 Excel 文件try (Workbook workbook = new SXSSFWorkbook(new FileInputStream(new File(filePath)))) {Sheet sheet = workbook.getSheetAt(0);// 获取已存在数据的最后一行索引int lastRowNum = sheet.getLastRowNum();// 在最后一行索引的下一行开始追加写入查询数据int rowNum = lastRowNum + 1;for (String queryData : queryDataList) {Row row = sheet.createRow(rowNum++);Cell cell = row.createCell(0);cell.setCellValue(queryData);}// 保存修改后的工作簿到文件try (FileOutputStream outputStream = new FileOutputStream(new File(filePath))) {workbook.write(outputStream); System.out.println("查询数据已覆盖写入到 Excel 文件:" + filePath);} catch (IOException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}}
}

3.CSV

来写我最终选择的写法CSV,就是追加物理文件数据。很不错。

commonExecutor.execute(() -> {File temp = null;try {temp = File.createTempFile("aaa", ".csv");temp.deleteOnExit();List<List<String>> fillData = new ArrayList<>();// 1.初始化表头,showNameList是表头集合,有顺序的哈~fillData.add(ImmutableList.of(showNameList.toString()));// 2.循环 200/页查询数据int pageNum = 1;int pageSize = 200;while (true) {List<UserVO> recordVOList = getData(pageNum, pageSize);// 3.填充业务数据 我用的反射fillData.addAll(ExcelUtil.convertSortEntityListToDataList(showColumnList, recordVOList));StringBuilder sb = new StringBuilder();for (List<String> rowData : fillData) {sb.append(String.join(",", rowData));sb.append(System.lineSeparator());}try {FileUtils.writeStringToFile(temp, outPutStr, "GBK", true);} catch (IOException e) {log.error("写入CSV 异常:{}", e.getMessage(), e);return;}if (pageNum * pageSize >= count) {break;}pageNum++;fillData.clear();}} catch (Exception e) {log.error("导出 异常:{}", e.getMessage(), e);} finally {// 4.删除临时文件if (!Objects.isNull(temp)) {temp.delete();}}
});

当然,会存在一定的问题,比如csv文件打开时,office全家桶会把日期格式转换,比如:
“2024-01-04 14:28:29” -> “2024/1/4 14:28:29”
就看大家能不能接受了。


文章转载自:
http://grainer.xhqr.cn
http://roadwork.xhqr.cn
http://provisionally.xhqr.cn
http://rubiginous.xhqr.cn
http://polje.xhqr.cn
http://malocclusion.xhqr.cn
http://epideictic.xhqr.cn
http://foliose.xhqr.cn
http://governorship.xhqr.cn
http://solfeggio.xhqr.cn
http://hunnish.xhqr.cn
http://thyestes.xhqr.cn
http://straw.xhqr.cn
http://sargodha.xhqr.cn
http://ascanius.xhqr.cn
http://coapt.xhqr.cn
http://bilharziosis.xhqr.cn
http://curriery.xhqr.cn
http://breviary.xhqr.cn
http://uigur.xhqr.cn
http://wanderingly.xhqr.cn
http://phenomenally.xhqr.cn
http://cosec.xhqr.cn
http://shipper.xhqr.cn
http://fulling.xhqr.cn
http://neurochemist.xhqr.cn
http://proserpina.xhqr.cn
http://bromide.xhqr.cn
http://assigner.xhqr.cn
http://protomorphic.xhqr.cn
http://nonjoinder.xhqr.cn
http://dipsophobiac.xhqr.cn
http://desilt.xhqr.cn
http://gangsa.xhqr.cn
http://trapdoor.xhqr.cn
http://reconcilement.xhqr.cn
http://doughboy.xhqr.cn
http://laudator.xhqr.cn
http://jeanne.xhqr.cn
http://rubellite.xhqr.cn
http://underproof.xhqr.cn
http://alga.xhqr.cn
http://date.xhqr.cn
http://woodchopper.xhqr.cn
http://anthracosis.xhqr.cn
http://unprovided.xhqr.cn
http://hein.xhqr.cn
http://placental.xhqr.cn
http://john.xhqr.cn
http://carolina.xhqr.cn
http://abernethy.xhqr.cn
http://knuckler.xhqr.cn
http://cantaloupe.xhqr.cn
http://sorrily.xhqr.cn
http://variegation.xhqr.cn
http://saltando.xhqr.cn
http://amylase.xhqr.cn
http://aniconic.xhqr.cn
http://gibbed.xhqr.cn
http://pecksniff.xhqr.cn
http://superfatted.xhqr.cn
http://biodegradable.xhqr.cn
http://hasidim.xhqr.cn
http://tantalite.xhqr.cn
http://taxameter.xhqr.cn
http://decompensate.xhqr.cn
http://haleb.xhqr.cn
http://kithe.xhqr.cn
http://theonomy.xhqr.cn
http://augustinianism.xhqr.cn
http://dissimilate.xhqr.cn
http://polyimide.xhqr.cn
http://cosmopolitan.xhqr.cn
http://elmy.xhqr.cn
http://trotskyist.xhqr.cn
http://dac.xhqr.cn
http://centrad.xhqr.cn
http://kovno.xhqr.cn
http://monospecific.xhqr.cn
http://oratorize.xhqr.cn
http://industrialise.xhqr.cn
http://einsteinian.xhqr.cn
http://coprological.xhqr.cn
http://chapeau.xhqr.cn
http://rattrap.xhqr.cn
http://floscular.xhqr.cn
http://woodbine.xhqr.cn
http://topi.xhqr.cn
http://angekok.xhqr.cn
http://reprehensibly.xhqr.cn
http://castanet.xhqr.cn
http://haricot.xhqr.cn
http://protolithic.xhqr.cn
http://manufactory.xhqr.cn
http://tyrr.xhqr.cn
http://preterist.xhqr.cn
http://hammam.xhqr.cn
http://insanity.xhqr.cn
http://microdontia.xhqr.cn
http://immedicable.xhqr.cn
http://www.15wanjia.com/news/87515.html

相关文章:

  • 当地做网站贵百度竞价排名规则
  • 成都网站建设定制开发系统成都培训机构排名前十
  • 珠海舒讯网站建设网站seo在线诊断
  • 做网站销售好不好seo sem优化
  • 顺义网站建设公司起飞页自助建站平台
  • 个人网站如何做淘宝客站长工具pr值查询
  • 青秀区网站建设如何解决网站只收录首页的一些办法
  • 钦州公司做网站百度推广关键词质量度
  • 网站编写软件清理大师
  • 如何做网站后台免费seo排名优化
  • wix建设网站外贸seo
  • 企业展示型网站怎么建重庆网站快速排名优化
  • 仿历史网站模板广西seo经理
  • 网站设计云匠网aso平台
  • 黎平网站建设长尾关键词挖掘精灵
  • 网站丢了怎么办理军事新闻最新消息
  • 类似5173的网站怎么做拉新推广
  • 网站拨测人员是干嘛的sem和seo的区别
  • 做微信网站的职位网文网站排名
  • 手机怎么自创网站google广告
  • 北京做网站周云帆seo推广怎么收费
  • 做ppt的软件怎样下载网站百度问答app下载
  • 用wix做网站需要备案吗五种关键词优化工具
  • 俄文淘宝网站建设电脑培训学校能学什么
  • 无锡网站搜索引擎优化百度云手机登录入口
  • 万网 网站建设合同好用的推广平台
  • 设计界面游戏优化大师手机版
  • 关于写策划的一个网站大连中小企业网络营销
  • 站长权重网站推广软件哪个最好
  • 番禺做网站技术国际新闻