Сбой Excel при открытии листа Excel, созданного HSSFWorkbook, который был прикреплен к электронному письму - PullRequest
3 голосов
/ 26 января 2010

Я сгенерировал электронную таблицу Excel с помощью HSSFWorkbook, а затем реализовал пользовательский javax.activation.DataSource, чтобы прикрепить электронную таблицу к электронному письму. Однако при открытии электронной таблицы в Excel происходит сбой. Excel может восстановить некоторые данные, но теряет большую часть своего форматирования.

Ответы [ 2 ]

8 голосов
/ 26 января 2010

При возврате InputStream в реализации DataSource убедитесь, что вы не используете HSSWorkbook.getBytes (), поскольку при этом будет возвращена только определенная часть электронной таблицы (которую нельзя использовать отдельно), а не весь файл. Вместо этого используйте метод write () с ByteArrayOuputStream. Например:

public InputStream getInputStream() throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    workbook.write(baos);
    return new ByteArrayInputStream(baos.toByteArray());
}

Просто будьте осторожны с размером таблицы, так как это происходит в памяти. Попробуйте вместо этого сохранить электронную таблицу и прикрепить ее с помощью обычного FileDataSource.

HSSFWorkbook.getBytes ()

0 голосов
/ 28 января 2010

Я думаю, что проблема в POI, который не генерирует читаемый файл Excel.

...