SXSSF在Z/OS中应用单元格样式生成损坏的报告



我正在尝试在Z-OS机器上执行一个程序来编写Excel报告。由于报告的大小,我们使用SXSSFWorkbook来编写报告。

报表中的一个单元格是灰色的。所以我要给那个单元格应用颜色。我使用下面的代码来设置颜色

XSSFCellStyle cellStyle = (XSSFCellStyle) wb.createCellStyle();
XSSFColor myColor = new XSSFColor(DatatypeConverter
        .parseHexBinary("FFBFBFBF")); //also tried the java.awt.Color
cellStyle.setFillForegroundColor(myColor);
cell.setCellStyle(cellStyle);

但是对于生成的报表,此单元格是深色的。出于好奇,我检查了Excel文档中的Styles.xml。以下是我的发现。

<fill><patternFill patternType="solid"><fgColor rgb="ããâãâãâã"/></patternFill></fill>

我试着在一台Windows机器上生成同样的报告,它给了我正确的结果。

<fill><patternFill patternType="solid"><fgColor rgb="FFBFBFBF"/></patternFill>
谁能帮我解决这个问题?

---------------------- ---------------------------

我已经报告了一个bug。https://issues.apache.org/bugzilla/show_bug.cgi?id=56683

要调试这个,我需要查看POI中CT类的代码。我遵循以下链接中给出的说明来生成代码。http://poi.apache.org/faq.html faq-N1012A

1)我找不到' ooxml-schema -src jar'。2)我检查出POI代码和ANT构建它。

这些方法都没有给我CT类的代码。让我知道以前是否有人做过。

--------------- 编辑 ----------------------------

不确定以下更新是否会修复它。需要试一试

更新了'org.apache.poi.xssf.model.StylesTable'的writeTo()方法。

更改:添加以下行

         'DEFAULT_XML_OPTIONS.setCharacterEncoding("UTF-8");'

/**
 * Write this table out as XML.
 *
 * @param out The stream to write to.
 * @throws IOException if an error occurs while writing.
 */
public void writeTo(OutputStream out) throws IOException {
    //Setting default encoding to UTF-8
    DEFAULT_XML_OPTIONS.setCharacterEncoding("UTF-8");
    XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS);

因为我不能控制z/os服务器,我必须等到它测试。同时,请让我知道你对这件事的看法。

现在解决。

详情请参阅bug页面。https://issues.apache.org/bugzilla/show_bug.cgi?id=56683

最新更新