Easyexcel操作文件

常见问题汇总

1.往文件里写数据时,如果没有对应的实体类时,需要创建一个List>来保存一行的数据

private Map convertToMap(ResultSet rs){
    LinkedHashMap row = new LinkedHashMap;
    for (int i = 0; i < columns.size(); i++) {
        row.put(i,columns.get(i));
    }
    return row;
}

注意:如果与表头无法对应,数据插入不进去(则row中的key值从0开始)

2.文件无法打开

当时排查好久,发现流没有正常关闭,最后不要忘记finish();

3.poi于EasyExcel结合使用时注意事项

@Test
    void test38() throws IOException {

        // 模板文件路径(已用 POI 设置好样式)
        String templatePath = "D:\\idea代码\\demo1\\src\\main\\resources\\output1.xlsx";
        // 输出文件路径
        String outputPath = "D:\\idea代码\\demo1\\src\\main\\resources\\output2.xlsx";
        // 准备数据
        List> data = new ArrayList<>();
        Map rowData = new HashMap<>();
        rowData.put(0, "张三");
        rowData.put(1, 25);
        rowData.put(2, "开发");
        rowData.put(3, "技术部");
        data.add(rowData);

        // 配置 EasyExcel
        ExcelWriter excelWriter = EasyExcel.write(outputPath)
                .withTemplate(templatePath) // 指定模板文件
                .build();

        // 指定从第2行开始写入数据(假设第0行是标题,第1行是表头)
        WriteSheet writeSheet = EasyExcel.writerSheet()
                .relativeHeadRowIndex(1) // 数据从第2行开始写入
                .build();

        // 写入数据
        excelWriter.write(data, writeSheet);
        excelWriter.finish();
        System.out.println("数据写入完成,样式已保留!");
    }

4.文件压缩注意事项

 private static boolean packFileIntoZip(String filePath, String zipFilePath) {
        try (FileInputStream fis = new FileInputStream(filePath);
             FileOutputStream fos = new FileOutputStream(zipFilePath);
             ZipOutputStream zipOut = new ZipOutputStream(fos)) {
            // 获取文件名(去掉路径)
            String fileName = new File(filePath).getName();
            System.out.println("正在压缩文件: " + fileName);
            // 创建 ZipEntry
            ZipEntry zipEntry = new ZipEntry(fileName);
            zipOut.putNextEntry(zipEntry);
            // 将文件内容读取为字节数组
            byte[] fileBytes = readAllBytes(fis);
            // 检查文件大小
            System.out.println("文件大小: " + fileBytes.length + " 字节");
            // 将字节数组写入 ZIP 文件
            zipOut.write(fileBytes);
            // 关闭当前条目
            zipOut.closeEntry();
            return true;
        } catch (FileNotFoundException e) {
            System.err.println("找不到文件: " + e.getMessage());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

你可能感兴趣的:(java,开发语言)