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

时间:2014-06-27 10:26:50

标签: java styles apache-poi cell

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

报告中的一个单元格为灰色。所以我必须将Color应用于该单元格。 我使用以下代码来设置颜色。

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>

有人可以帮我解决这个问题吗?

----------------------的 EDITED ----------------- ----------

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

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

1)我无法找到'ooxml-schemas-src jar'。 2)我检查了POI代码和ANT构建它。

approch都没有给我CT代码的代码。 如果有人以前做过,请告诉我。

--------------- EDITED ----------------------------

不确定以下更新是否会解决此问题。需要尝试一下。

更新了'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服务器,所以我必须等到它接受测试。 同时,请让我知道你的想法。

1 个答案:

答案 0 :(得分:0)

现在已经解决了。

有关详细信息,请参阅错误页面。 https://issues.apache.org/bugzilla/show_bug.cgi?id=56683