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

导出Excel,支持最佳

列表信息导出为Excel文件,

依赖pom:

Sheet, Row:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId>
</dependency>XSSFWorkbook
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId>
</dependency>
实现代码: 

override表示是否覆盖现有文件,false,追加;true,覆盖。

private <T> void exportExcelToLocal(List<T> list, Class<T> clazz) throws IOException {if (CollectionUtils.isEmpty(list)) {return;}XSSFWorkbook workbook = null;File file = new File("src/main/resources/xxx.xlsx");FileInputStream fis = null;if (!file.exists()) {file.createNewFile();} else {if (!override) {fis = new FileInputStream(file);workbook = new XSSFWorkbook(fis);}}XSSFWorkbook workbookResult = ExcelUtils.exportExcelData(new XSSFWorkbook(), list, clazz, false);if (Objects.nonNull(workbook)) {Integer index = workbookResult.getSheetAt(0).getLastRowNum() + 1;Sheet sheet = workbookResult.getSheetAt(0);Sheet lastSheet = workbook.getSheetAt(0);for (int i = 1; i <= lastSheet.getLastRowNum(); ++i) {Row row = sheet.createRow(index++);for (int cellIndex = 0; cellIndex < lastSheet.getRow(i).getLastCellNum(); ++cellIndex) {String value = lastSheet.getRow(i).getCell(cellIndex).getStringCellValue();row.createCell(cellIndex).setCellValue(value);}}}FileOutputStream fos = new FileOutputStream(file);workbookResult.write(fos);fos.flush();fos.close();if (Objects.nonNull(fis)) {fis.close();}}

ExcelUtils:

单次导出操作

public static <T> XSSFWorkbook exportExcelData(XSSFWorkbook workbook, List<T> data, Class<T> clazz, boolean template) {XSSFSheet sheet = workbook.createSheet();Row rowHeader = sheet.createRow(0);Map<Integer, Field> fieldMap = analysisAnnotation(clazz);for(int i = 0; i < fieldMap.size(); ++i) {Cell cell = rowHeader.createCell(i);Field field = (Field)fieldMap.get(i + 1);ExcelBind ea = (ExcelBind)field.getAnnotation(ExcelBind.class);cell.setCellValue(ea.columnName());cell.setCellStyle(setRowHeaderStyle(workbook));cell.setCellType(CellType.STRING);}if (!template) {analysisData(sheet, data, clazz, fieldMap);}return workbook;}// 数据导出
private static <T> void analysisData(Sheet sheet, List<T> data, Class<T> clazz, Map<Integer, Field> fieldMap) {for(int i = 0; i < data.size(); ++i) {Row row = sheet.createRow(i + 1);T t = data.get(i);Class<?> aClass = t.getClass();for(int j = 0; j < fieldMap.size(); ++j) {Field declaredField = (Field)fieldMap.get(j + 1);declaredField.setAccessible(true);String key = declaredField.getName();Object value = "";try {value = declaredField.get(t) == null ? "" : declaredField.get(t);} catch (IllegalAccessException var13) {var13.printStackTrace();}if ("java.util.Date".equals(declaredField.getType().getName())) {ExcelBind ea = (ExcelBind)declaredField.getAnnotation(ExcelBind.class);if (StringUtils.isNotEmpty(ea.dateFormat())) {value = (new SimpleDateFormat(ea.dateFormat())).format(value);}}row.createCell(j).setCellValue(value.toString());}}}

http://www.lryc.cn/news/302743.html

相关文章:

  • 【WPF】获取父控件数据
  • 解决Edge浏览器,微博无法查看大图(Edge Image Viewer)
  • PMP含金量在国内怎么样?
  • java中容易被忽视的toString()方法
  • 如何使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问
  • java面试题之redis篇
  • effective c++ 笔记 条款18-25
  • Nginx学习笔记
  • 摆(行列式、杜教筛)
  • 尝试以语法对照表格形式学习新语言:c,rust
  • 408计算机网络--基础概论
  • 数据库应用:kylin 部署 达梦数据库DM8
  • GO框架基础 (二)、sqlx库
  • Expected class selector “.menuChildMall“ to be kebab-case报错原因
  • NC文件不规则裁剪(利用shp文件裁剪)(三)
  • java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目
  • 三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型
  • 【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
  • 【Docker】Docker存储卷
  • 基于python的租车管理平台/汽车租赁网站
  • 【JVM】双亲委派机制
  • 分布式id实战
  • 深入了解 SOCKS5 代理、代理 IP 和 HTTP
  • 外包干了3个多月,技术退步明显。。。。
  • Unity之闪电侠大战蓝毒兽(简陋的战斗系统)
  • C# 菜鸟级别有关于redis的使用
  • AlexNet的出现推动深度学习的巨大发展
  • 2024面试offer收割宝典字节篇
  • 冒泡排序及其优化
  • 【医学大模型 补全主诉】BioGPT + LSTM 自动补全医院紧急部门主诉