#java #styles #apache-poi #cell
#java #стили #apache-poi #ячейка
Вопрос:
Я пытаюсь выполнить программу на компьютере с 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);
Но для сгенерированного отчета эта ячейка имеет темный цвет.
Из любопытства я проверил Styles.xml внутри документа Excel.
Я обнаружил следующее.
<fill><patternFill patternType="solid"><fgColor rgb="ããâãâãâã"/></patternFill></fill>
Я попытался сгенерировать тот же отчет на компьютере с Windows, и он дал мне правильный результат.
<fill><patternFill patternType="solid"><fgColor rgb="FFBFBFBF"/></patternFill>
Кто-нибудь может помочь мне решить эту проблему?
———————-ОТРЕДАКТИРОВАНО—————————
Я сообщил об ошибке для этого. https://issues.apache.org/bugzilla/show_bug.cgi?id=56683
Чтобы отладить это, мне нужно увидеть код для классов CT в POI. Я следовал инструкциям, приведенным в следующей ссылке, для генерации кода. http://poi.apache.org/faq.html#faq-N1012A
1) Я не могу найти ‘ooxml-schemas-src jar’. 2) Я проверил код POI и ANT его построил.
Ни один из подходов не дал мне код для классов CT. дайте мне знать, если кто-то делал это раньше.
—————ОТРЕДАКТИРОВАНО—————————-
Не уверен, исправит ли это следующее обновление. нужно попробовать.
Обновлен метод writeTo() ‘org.apache.poi.xssf.model.StylesTable’.
Изменение: добавлена следующая строка
'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. У вас такая же проблема, если вы используете XSSF? (Возможно, пропустите некоторые строки при тестировании). И используете ли вы последнюю версию Apache POI?
2. Я не тестировал его с помощью XSSF. Я постараюсь это сделать и обновить. Да, я использую apache poi версии 3.10 FINAL. Я столкнулся с другой проблемой при написании отчета, но, к счастью, для нее был патч. issues.apache.org/bugzilla/show_bug.cgi?id=55594 . issues.apache.org/bugzilla/attachment.cgi?id=31421 . Нужно понять, как apache poi записывает Styles.xml . Пожалуйста, дайте мне знать, если у вас есть какие-либо подсказки по этому поводу.
3. Apache POI имеет открытый исходный код, поэтому вы можете просто посмотреть код самостоятельно, если это необходимо!
4. Если вы создаете POI из исходного кода, запустив «ant jar», файл ooxml src jar должен оказаться в
ooxml-lib
папке — вы пытались проверить там?5. Я заметил следующее, когда я собирал исходный код «[echo] Это POI 3.11-beta1», я взял исходный код из ‘ svn.apache.org/repos/asf ‘ -> poi -> багажник. Где в SVN я могу найти источник для 3.10 Final. Я иду за репозиторием, поскольку не знаю, как настроить Souce, предоставленный в виде ZIP, в eclipse.
Ответ №1:
Теперь это решено.
Пожалуйста, смотрите Страницу с ошибкой для получения подробной информации. https://issues.apache.org/bugzilla/show_bug.cgi?id=56683