添加填充效果以使用 apache poi 创建 excel

add fill effects for creating excel with apache poi

XSSFCellStyle xssfCellStyle = (XSSFCellStyle) cellStyle;
        xssfCellStyle.setFillForegroundColor(new XSSFColor(color));
        xssfCellStyle.setFillPattern(XSSFCellStyle.DIAMONDS);

嘿,

我可以为导出的 excel 设置所有图案样式,我可以从 excel 到达,但是如何通过 apache poi 设置 "Fill Effects..."。有没有可能?

谢谢大家的帮助

PS:如图所示,我说的图案样式和填充效果

picture of excel: format cell editor

Apache POI 目前不支持高级 API 中的 "Fill Effects..."。

但是从规范生成的低级 API 应该允许设置这些东西,但是你必须自己确定结构,要么基于 MS 文档的规范,要么通过创建一个小的示例电子表格并查看 .xlsx 中的文件 xl\styles.xml(这实际上是一个简单的 zip 文件!)。

然后像下面这样的东西应该允许你构建所需的 xml-结构,实际调用 ctGradienFill 取决于你想要进行的填充类型:

        final CellStyle cellStyle = wb.createCellStyle();
        //cellStyle.setFillPattern(FillPatternType.ALT_BARS);

        XSSFCellFill fill = new XSSFCellFill(CTFill.Factory.newInstance());
        final CTGradientFill ctGradientFill = fill.getCTFill().addNewGradientFill();
        ctGradientFill.setDegree(45);
        // ...
        ((XSSFWorkbook)wb).getStylesSource().putFill(fill);

        cell.setCellStyle(cellStyle);

注意: 您将需要 http://poi.apache.org/faq.html#faq-N10025 中描述的完整模式 jar 以获得额外的 CTGradientFill class.

gradient-fill-example

在理解了 xml 结构之后,这很有帮助 :)