myexcel是一款Java的Excel处理工具,主要用于读取、写出、转换Excel文件,支持Excel文件的多种格式和大数据处理。它是开源项目,代码托管在GitHub上。该工具有以下特点:
- 功能丰富:支持Excel文件的读取、写出、转换、导出PDF、HTML、Word、CSV等格式,支持大数据处理。
- 简单易用:采用链式调用,API简单,使用方便,便于快速构建Excel文件。
- 高效可靠:采用Apache POI作为Excel的底层实现,保证了高效性和可靠性。
- 安全性强:使用com.fasterxml.jackson作为json序列化/反序列化工具,可以有效防止XSS攻击。
依赖信息
Maven 仓库地址:
https://mvnrepository.com/artifact/com.github.liaochong/myexcel 。
Maven :
<dependency> <groupId>com.github.liaochong</groupId> <artifactId>myexcel</artifactId> <version>4.3.0.RC5</version> </dependency>
Gradle :
implementation 'com.github.liaochong:myexcel:4.3.0.RC5'
1. 读取 Excel 文件
java复制代码
// 创建 ExcelReadContext 对象 ExcelReadContext context = ExcelReadContext.builder() .excelTypeEnum(ExcelTypeEnum.XLS) .file(new File("example.xls")) .sheetName("Sheet1") .build(); // 读取 Excel 数据 List<List<Object>> excelData = ExcelUtils.readExcel(context);
2. 写入 Excel 文件
java复制代码
// 创建 ExcelWriteContext 对象 ExcelWriteContext context = ExcelWriteContext.builder() .excelTypeEnum(ExcelTypeEnum.XLSX) .file(new File("example.xlsx")) .build(); // 定义 Excel 头部 List<List<String>> header = new ArrayList<>(); header.add(Arrays.asList("姓名", "年龄", "性别")); // 定义 Excel 内容 List<List<Object>> data = new ArrayList<>(); data.add(Arrays.asList("Tom", 20, "男")); data.add(Arrays.asList("Lucy", 22, "女")); data.add(Arrays.asList("Mike", 25, "男")); // 写入 Excel 数据 ExcelUtils.writeExcel(context, header, data);
3. 操作 Excel 单元格
java复制代码
// 创建 ExcelReadContext 对象 ExcelReadContext context = ExcelReadContext.builder() .excelTypeEnum(ExcelTypeEnum.XLSX) .file(new File("example.xlsx")) .sheetName("Sheet1") .build(); // 读取指定单元格数据 Object cellData = ExcelUtils.readCell(context, 1, 1); System.out.println(cellData); // 更新指定单元格数据 ExcelUtils.writeCellValue(context, 1, 1, "new value"); // 保存更新后的 Excel ExcelUtils.writeExcel(context, null, null);
com.github.liaochong:myexcel
还提供了更多的 API,例如支持多 sheet 处理、数据格式转换、Excel 样式设置等功能。你可以查阅官方文档来了解更多信息。
4.myexcel 设置颜色格式
2023/7/10 上午11:45:48
com.github.liaochong:myexcel是一个基于Apache POI封装的Java操作Excel文件工具类库,支持Excel文件的读取、修改、写入等操作。在该工具类库中,可以通过CellStyle类来设置Excel单元格的格式,包括颜色格式等。下面是一个设置单元格背景颜色的示例代码:
// 创建工作簿和工作表 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 创建样式对象 CellStyle style = workbook.createCellStyle(); // 设置背景颜色为红色 style.setFillForegroundColor(IndexedColors.RED.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 创建行和单元格,并设置单元格样式 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("This is a red cell!"); cell.setCellStyle(style); // 保存文件 FileOutputStream out = new FileOutputStream("test.xlsx"); workbook.write(out); out.close(); workbook.close();
5.myexcel 100万数据导出
myexcel使用流式API来导出大规模的数据,可以支持100万数据导出的需求。以下是一个使用myexcel实现100万数据导出的示例代码:
java复制代码
public class ExcelExportTest { public static void main(String[] args) { int rowCount = 1000000; // 导出数据量 List<TestBean> dataList = new ArrayList<>(); // 准备数据 for (int i = 0; i < rowCount; i++) { dataList.add(new TestBean("Name " + i, i, new Date())); } try (ExcelWriter writer = ExcelUtil.getWriterWithSheet()) { // 写入表头 writer.addHeaderAlias("name", "姓名"); writer.addHeaderAlias("age", "年龄"); writer.addHeaderAlias("date", "时间"); // 写入数据 writer.write(dataList, true); // 输出Excel writer.flush(Files.newOutputStream(Paths.get("test.xlsx"))); } catch (IOException ex) { ex.printStackTrace(); } } @Data @AllArgsConstructor public static class TestBean { private String name; private int age; private Date date; } }
该示例中,我们定义了一个包含姓名、年龄、时间三个字段的TestBean类,并准备了100万条数据。然后我们使用ExcelUtil工具类创建一个Excel导出器,设置表头别名后写入数据,最后通过文件输出流将数据写入Excel文件。
需要注意的是,针对大规模的数据导出,我们可以采用分页、异步等方式提高导出性能,避免占用过多内存和时间。