docx4j / xlsx4j: создать простую электронную таблицу

Я хочу создать простую электронную таблицу в docx4j/xlsx4j. Он должен содержать только строки, никаких формул не требуется. Porpuse в основном переключается с CSV на XLSX, поэтому я попробовал пример здесь: https://github.com/plutext/docx4j/blob/master/src/samples/xlsx4j/org/xlsx4j/samples/CreateSimpleSpreadsheet.java К сожалению, это не так. работающий. Даже после удаления устаревших частей ( http://pastebin.com/bUnJWmFD ).

Excel сообщает о нечитаемом содержимом и предлагает исправить. После этого я получаю сообщение об ошибке: «Entfernte Datensätze: Zellinformationen von /xl/worksheets/sheet1.xml-Part». Это означает что-то вроде «удалены наборы данных: Cellinformation в /xl/worksheets/sheet1.xml-Part».

Эта ошибка возникает, когда createCell вызывается в строке 58 (см. Github, а не pastebin) или cell.setV вызывается с "Hello World" вместо "1234"


person froehli    schedule 03.03.2017    source источник


Ответы (1)


Я думаю, что вы поднимаете здесь 2 вопроса:

  1. полученный XLSX нуждался в ремонте: это было результатом опечатки в cell2.setR, исправленной по адресу https://github.com/plutext/docx4j/commit/7d04a65057ad61f5197fb9a98168fc654220f61f
  2. вызывая setV с помощью «Hello World», вы не должны этого делать. Согласно http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/v.html

Этот элемент выражает значение, содержащееся в ячейке. Если ячейка содержит строку, то это значение является индексом в общей таблице строк, указывающим на фактическое строковое значение. В противном случае значение ячейки выражается непосредственно в этом элементе. .. Для приложений, не желающих реализовывать общую таблицу строк, «встроенная строка» может быть выражена в элементе ‹is> под ‹c> (вместо элемента ‹v> под ‹c>), таким же образом строка будет выражена в общей таблице строк.

хотя я предполагаю, что наш метод setV может обнаруживать неправильное использование и либо генерировать исключение, либо делать что-то другое вместо этого.

Образец CreateSimpleSpreadsheet в его нынешнем виде показывает, как установить встроенную строку, поэтому вам просто нужно проверить, является ли ваш ввод числом или нет.

person JasonPlutext    schedule 06.03.2017
comment
спасибо за ваш ответ, ваша фиксация работает для меня! Я хотел бы, чтобы вы знали, что я не получил письмо с активацией (пробовал разные адреса электронной почты) на вашей доске по адресу docx4java. .org/форумы . Поэтому я пришел в stackoverflow с этой проблемой. - person froehli; 06.03.2017
comment
Да, мы обновили сервер, но не устанавливали sendmail до вчерашнего дня! Спасибо. - person JasonPlutext; 06.03.2017