我有一个新的应用程序,我将在哪里生成一个包含表格,图形,目录和文本的Word文档.什么是一个很好的API用于此?你有多确定它支持图形,ToC和表格?使用它们有什么隐藏的问题?
一些澄清:
如果我可以从模板文档开始,只需用表格,图形等填充一些空格,那就太好了.
编辑:下面有几个很好的答案,每个都有自己的错误,就我目前的情况而言.很难从他们那里选择"最终答案".我想我会把它打开,并希望能够创造出更好的解决方案.
编辑:OpenOffice UNO项目似乎与我的要求最接近.虽然POI肯定是主流,但它对我想要的东西来说太不成熟了.
我已经自动构建了使用Pandoc将Markdown文件转换为DOCX文件.我甚至使用参考文档来确定最终文档的样式.我使用的命令是:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
Run Code Online (Sandbox Code Playgroud)
在reference.docx从拾起Pandoc docs/rendering和Pandoc使mydoc.docx具有相同风格的参考文档.
但是,不仅reference.docx包含样式.它包含公司徽标,序言等.
如何自动将Markdown内容与样式和内容合并reference.docx.我的解决方案需要在Linux上运行.
我想在Word 2007文件(.docx)中搜索文本字符串,例如,可以/可以从Word中的搜索中找到的"某些特殊短语".
有没有办法从Python看文本?我对格式化没兴趣 - 我只想将文档分类为是否有"某些特殊短语".
可能有一种情况我们需要从word文档中获取文本以供将来使用,以搜索用户上传的文档中的字符串,如在cv /简历中搜索,并出现如何获取文本的常见问题,打开和读取用户上传Word文档,有一些有用的链接,但不能解决整个问题.我们需要在上传时获取文本并将文本保存在数据库中,我们可以在数据库中轻松搜索.
任何人都知道他们可以推荐什么,以便从.doc或.docx中提取纯文本?
我发现这种最好的方法从Word文档中提取文本而不使用COM /自动化? - 想知道是否还有其他建议?
速度并不重要,我们甚至可以使用具有一些API的网站上传和提取文件,但我一直无法找到.
谢谢
我有一个Web应用程序,我需要将DOCX文件转换为PDF以生成一些在Word 2007中的报告.首先我使用自动化,我遇到了DCOM问题,最后我发现Microsoft不支持服务器端Word的自动化.现在我正在寻找其他免费工具而不是Word等不是免费的,iTextSharp不会将DOCX转换为PDF.
如果有人知道免费工具或.NET类来进行此对话,请告诉我.
我一直在git和hg最近一起玩,然后我突然意识到这种事情对文件很有用.
我有一个文档,我在DOCX中编辑并导出为PDF.我尝试使用它们git并对其hg进行版本控制,结果发现hg最终仅跟踪二进制并且差异没有意义.虽然git我可以有意义地区分DOCX(尚未尝试使用PDF)但我想知道是否有更好的方法来做到这一点,而不是我现在正在做的事情.(理想情况下,不必将Word留给diff将是最佳解决方案.)
- Ashish Gandhi
我一直在尝试编写一个简单的Markdown - > docx解析器/编写器,但我完全坚持最后一部分,这应该是最简单的:即将文件夹压缩为.docx,Word或任何其他.docx读取器,将认识.
我的解析器编写器实际上是无关紧要的:如果我只是解压缩任何旧的Word生成的*.docx,然后尝试使用通常的压缩实用程序重新压缩它,并给它文件结束docx,我就会遇到这个问题.我应该添加一些神秘的标题,还是需要一个特殊的OPC压缩实用程序,或者什么?
我不太想要一个能够做到这一点的工具,以便弄清楚应该是什么.它似乎独立于WordprocessingML规范.
不用说我对压缩一无所知.我可以通过Google找到的所有内容都与您可以在商业中使用的花哨实用程序有关,但我正在制作一个可执行的GPLd或其他东西,并且可以处理任何事情.
我正在寻找一个简单的示例代码或完整的教程如何docx使用Apache POI及其底层创建文件openxml4j.
我尝试下面的代码(有很多从内容的帮助,协助,感谢Eclipse的!),但代码不能正常工作.
String tmpPathname = aFilename + ".docx";
File tmpFile = new File(tmpPathname);
ZipPackage tmpPackage = (ZipPackage) OPCPackage.create(tmpPathname);
PackagePartName tmpFirstPartName = PackagingURIHelper.createPartName("/FirstPart");
PackagePart tmpFirstPart = tmpPackage.createPart(tmpFirstPartName, "ISO-8859-1");
XWPFDocument tmpDocument = new XWPFDocument(tmpPackage); //Exception
XWPFParagraph tmpParagraph = tmpDocument.createParagraph();
XWPFRun tmpRun = tmpParagraph.createRun();
tmpRun.setText("LALALALAALALAAAA");
tmpRun.setFontSize(18);
tmpPackage.save(tmpFile);
Run Code Online (Sandbox Code Playgroud)
抛出的异常如下:
Exception in thread "main" java.lang.NullPointerException
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:235)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:196)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:94)
at DocGenerator.makeDocxWithPoi(DocGenerator.java:64)
at DocGenerator.main(DocGenerator.java:50)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决(非常简单)的要求吗?
使用knitr和rmarkdown一起创建word文档时,可以使用现有文档来设置输出样式.
例如在我的yaml标题中:
output:
word_document:
reference_docx: style.docx
fig_caption: TRUE
Run Code Online (Sandbox Code Playgroud)
在这种风格中,我创建了一个默认的表格样式 - 这里的目标是让kable表格输出的样式正确.
当我编写word文档并使用style.docx时,表格不会根据表格进行样式化.
到目前为止,使用样式检查器没有帮助,不确定默认表格样式是否是要修改的错误样式.
示例代码:
```{r kable}
n <- 100
x <- rnorm(n)
y <- 2*x + rnorm(n)
out <- lm(y ~ x)
library(knitr)
kable(summary(out)$coef, digits=2, caption = "Test Captions")
```
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有可以上传的程式化文档进行测试.
TL; DR:想要自动设定rmarkdown和knitr的表输出(通过kable)
更新:到目前为止,我发现更改docx中的"紧凑"样式将自动更改表格的文本内容 - 但这并不能解决整个表格样式,如单元格颜色和对齐方式.
更新2:经过更多研究和创建样式后,我发现knitr访问段落样式似乎没有问题.但是表格样式不属于该样式类别,似乎不适用于我的个人测试.
更新3:涉及ReporteRs软件包 - 虽然它能够生成表格,但是这样做所需的语法很费力.更确切地说,风格会自动应用.
更新4:您不能更改TableNormal样式,也不能设置表格正常样式.XML方法不是我们想要的.我有一个VBA宏可以做到这一点,只是想尽可能删除该过程.