我正在添加我用来尝试这样做的代码。如果有人想尝试这样做,祝你好运。
private void processDoc(String path) throws Exception {
System.out.println(path);
POIFSFileSystem fis = new POIFSFileSystem(new FileInputStream(path));
HWPFDocument wdDoc = new HWPFDocument(fis);
// list all style names and indexes in stylesheet
for (int j = 0; j < wdDoc.getStyleSheet().numStyles(); j++) {
if (wdDoc.getStyleSheet().getStyleDescription(j) != null) {
System.out.println(j + ": " + wdDoc.getStyleSheet().getStyleDescription(j).getName());
} else {
// getStyleDescription returned null
System.out.println(j + ": " + null);
}
}
// set range for entire document
Range range = wdDoc.getRange();
// loop through all paragraphs in range
for (int i = 0; i < range.numParagraphs(); i++) {
Paragraph p = range.getParagraph(i);
// check if style index is greater than total number of styles
if (wdDoc.getStyleSheet().numStyles() > p.getStyleIndex()) {
System.out.println(wdDoc.getStyleSheet().numStyles() + " -> " + p.getStyleIndex());
StyleDescription style = wdDoc.getStyleSheet().getStyleDescription(p.getStyleIndex());
String styleName = style.getName();
// write style name and associated text
System.out.println(styleName + " -> " + p.text());
} else {
System.out.println("\n" + wdDoc.getStyleSheet().numStyles() + " ----> " + p.getStyleIndex());
}
}
我建议您看看来自Apache Tika的sourcecode to WordExtractor,因为它是使用Apache POI从Word文档获取文本和样式的一个很好的示例
根据你在问题中做了什么和没说什么,我怀疑你在寻找类似的东西:
Range r = document.getRange();
for(int i=0; i<r.numParagraphs(); i++) {
Paragraph p = r.getParagraph(i);
String text = p.getText();
if( ! text.contains("What I'm Looking For")) {
// Try the next paragraph
continue;
}
if (document.getStyleSheet().numStyles()>p.getStyleIndex()) {
StyleDescription style =
document.getStyleSheet().getStyleDescription(p.getStyleIndex());
String styleName = style.getName();
System.out.println(styleName + " -> " + text);
}
else {
// Text has an unknown or invalid style
}
}
对于任何更高级的东西,请查看WordExtractor sourcecode,看看您还可以用这种东西做什么!
从这里开始: Java Apache POI读取Word(.doc)文件并使用命名样式 当时(2012年10月),有一种解决方案可以找到段落样式,但不能找到字符样式。 然而...例如,如果你使用LibreOffice Writer打开一个Word文档,它确实会将样式和突出显示从. doc翻译成. odt...所以某个地方的某人似乎已经破解了这个... 我不知道ApachePOI团队和LibreOf
我正在编写一个java代码,它利用Apache-poi读取ms-office.doc文件,利用itext jar API创建并写入pdf文件。我已经阅读了.doc文件中打印的文本和表格。现在我正在寻找一个读取文档中写入的图像的解决方案。我已经编写了如下代码来读取文档文件中的图像。为什么这段代码不起作用。 存在的问题是:1。条件if(Picture.HasPicture(run))不满足,但文档具有
问题内容: 请问如何通过cucumber读取excel、word、pdf文件? 问题答案: 反对法的f
问题内容: 使用Apache POI时,我(以编程方式)从MS Word文件获取的字符串与使用MS Word打开文件时看到的文本不同。 使用以下代码时: 输出是一行,其中包含许多“无效”字符(是,“框”)和许多不需要的字符串,例如“ ”,“ ”(“#”为数字),“ ”等。 以下代码“修复”了单行问题,但保留了所有无效字符和不需要的文本: 我不知道我是否使用错误的方法来提取文本,但这就是我在查看PO
您不需要理解内容,只需查看我的占位符和。有10页与这些占位符,现在我应该取代他们与其他内容。黑色和黄色的盒子是公司的照片,我不会分享。 现在,我开始阅读整个docx4j文档,并在一段时间后生成以下代码: 一些解释: 是上图中文件的路径 是应该替换的值 是应该替换的值 但是当我运行这个方法时,什么也没有发生,我的控制台只是打印一些信息。如果它们很重要,我会编辑帖子,但我不这么认为。 那么我的错在哪里
我使用Apache POI从MS word文件(.doc)生成Html。我想添加来自的图像。文档转换为html,但我无法做到这一点。我找到了解决方案。docx和给定方法如下。docx。 没有太多的留档或教程可用。Javadoc也不包含太多有用的信息。根据上面的代码,我尝试添加图像,但不起作用。:/