在Java

时间:2015-07-17 12:49:19

标签: java jasper-reports apache-poi odt

我有一个应用程序以各种格式推出各种文档。这是它的主要目的。我在大多数非excel文件中使用japser,现在我意识到我可能犯了一个错误! (我买不起Aspose!)。我在Windows环境中运行。

基本上许多文档都以odt和doc格式生成。 Word版本的要求适用于doc,以便与最大数量的用户(在我的组织之外)兼容。

为此我将rtf格式导出到doc后缀文件。到目前为止这么好,除了表格被导出为文本输入框而不是表格,用户非常沮丧,他们不能在单元格之间切换(我们在测试时错过了这个)。这似乎只是在报表配置中无法解决的问题。 rtf导出根本不会将表导出为表。

我考虑保存为docx并使用poi转换为doc但这似乎并不那么简单

  • 缺少xwpf和hwpf之间的接口。
  • jasper导出到docx似乎存在一个错误,它将边距设置为0并导致打印警告。可能是可以克服的,但因为这是一个快速的&肮脏的修复想法开始似乎比这种混乱的解决方案更值得努力。

这让我想到将odt文件转换为doc。我已经快速浏览了jodconverter,但似乎很久以来任何人都对此做了什么,我不相信它是要走的路(我也不确定它是否与OpenOffice 4.1兼容,这就是我的意思我已经下载了,但我想我可以退出吗?)。

所以这个问题的主要部分是 - 是否有一种相当简单的方法将odt转换为java代码中的doc / rtf(我真的不希望将文档发送到外部转换站点的开销)。我想,对于任何严肃的贾斯珀大师来说,有一种方法 - 有没有一种方法可以将表格作为表格对象而不是相邻文本输入框的集合导出为rtf / doc格式?

我试图完全解决这个问题,如果它有点冗长,请道歉。任何帮助都非常感激(解决方案越简单越好!)。

1 个答案:

答案 0 :(得分:1)

您可以尝试在{+ 3}}进行ODT和DOC(X)之间的转换,但是有关此库的文档已经不再维护了。

根据小文档(JODConverterhere),这里有一个将odt转换为doc文件的小例子(你需要在本地安装OpenOffice或LibreOffice)

OfficeManager officeManager = new DefaultOfficeManagerConfiguration().setOfficeHome(new File("<path to office home>")).buildOfficeManager();
officeManager.start();

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(new File("test.odt"), new File("test.doc"));

officeManager.stop();

<path to office home>必须替换为LibreOffice或OpenOffice主目录的路径(包含soffice.bin文件的目录)。

相关问题