欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

原生的POI使用SXSSF设置单元格颜色

程序员文章站 2022-03-01 12:57:02
...
@GetMapping("/temp/export/plan/detail")
    public AjaxResult<String> test1() {
        ObjectMapper MAPPER = new ObjectMapper();
        MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

        JsonNode jsonNode = MAPPER.valueToTree(new KpiDetailPlanEo());

        Workbook workbook = getWorkBook(jsonNode);
        String fileName = workbook.getSheetName(0) + ".xlsx";

        writeFileToLoaction(workbook, "", "/Users/orange/", fileName);
        return AjaxResult.success("成功完成");
    }

    public static void writeFileToLoaction(Workbook workbook, String content,String path,String filename) {
        try {
            File file = new File(path);
            if (!file.exists()) {
                file.mkdirs();
            }
            File f = new File(path+"//"+filename);
            if(!f.exists())
                f.createNewFile();

            FileOutputStream fw = new FileOutputStream(f.getAbsoluteFile(),true);//追加
            workbook.write(fw);
            fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private Workbook getWorkBook(JsonNode jsonNode) {
        SXSSFWorkbook wb = new SXSSFWorkbook();

        SXSSFSheet sheet = wb.createSheet();
        SXSSFRow row = sheet.createRow(0);

        Cell cell = row.createCell(0);
        cell.setCellValue("自定义 XSSF 颜色");


        XSSFCellStyle style = wb.getXSSFWorkbook().createCellStyle();
        style.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128)));
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));

        cell.setCellStyle(style);
        
        return wb;
    }

主要是 `getWorkBook` 这个方法

官方文档 , 我觉得这个就够了

Busy Developers' Guide to HSSF and XSSF Features

中文的别人整理的.

Java中导入、导出Excel - 我是陌生人 - 博客园

三种类型的文件的区别

HSSF、XSSF和SXSSF区别以及Excel导出优化 - PC君 - 博客园

SXSSF的分析, 大概就是保存临时文件, 所以记得使用 wb.dispose(); 删除临时文件,

基于流的EXCEL文件导出,SXSSFWorkbook源码解析(一) - 简书w

为什么还会溢出? 这就是涉及到JVM初始参数的设置, 保存多少在内存中

关于SXSSFWorkbook导出大批量数据的问题_Dreamiy的博客-CSDN博客

颜色转化

RGB颜色值与十六进制颜色码转换工具