我正在尝试在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