Java 处理.docx文档时表内换行符出现问题
下面的代码获取.docx文档的路径,遍历它并打印所有表中每个单元格的内容Java 处理.docx文档时表内换行符出现问题,java,apache-poi,docx,Java,Apache Poi,Docx,下面的代码获取.docx文档的路径,遍历它并打印所有表中每个单元格的内容 public void parse(String path) throws IOException { FileInputStream fis = new FileInputStream(path); XWPFDocument ex = new XWPFDocument(fis); XWPFWordExtractor extractor = new XWPFWordExtractor(ex);
public void parse(String path) throws IOException {
FileInputStream fis = new FileInputStream(path);
XWPFDocument ex = new XWPFDocument(fis);
XWPFWordExtractor extractor = new XWPFWordExtractor(ex);
List<IBodyElement> docIter = ex.getBodyElements();
Iterator<IBodyElement> iter = docIter.iterator();
for (IBdyElement iBodyElement2 : docIter) {
if (iBodyElement2 instanceof XWPFTable) {
XWPFTable table = (XWPFTable) iBodyElement2;
for (int i = 0; i < table.getNumberOfRows(); i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> rowcells = row.getTableCells();
for (XWPFTableCell xwpfTableCell : rowcells) {
System.out.print(xwpfTableCell.getText());
}
}
}
}
公共void解析(字符串路径)引发IOException{
FileInputStream fis=新的FileInputStream(路径);
XWPFDocument ex=新XWPFDocument(fis);
XWPFWORD提取器提取器=新的XWPFWORD提取器(ex);
List docIter=ex.getBodyElements();
迭代器iter=docIter.Iterator();
对于(IBdyElement IBODYLEMENT2:docIter){
if(XWPFTable的iBodyElement2实例){
XWPFTable表=(XWPFTable)iBodyElement2;
对于(int i=0;i
当我在带有表的.docx文档上运行此代码时,它将打印单元格中的字符串,而不带换行符。
例如,如果一个单元格中填充了字符串“FooBar”,它将被打印为“FooBar”。这对我来说是一个很大的问题
有没有办法读取保留换行符的单元格?而不是调用
getText()
(将所有内容粘在一起),您是否尝试获取单元格中的各个运行并逐个打印出来?您的意思是像row.getCell(1).getText()?在这种情况下,它没有帮助(另外,我不知道如何获得表中的列/单元格数,因此很难迭代)不。从给定的XWPFTableCell
,您将需要获取XWPFRun
实例。很抱歉这个愚蠢的问题,但是我如何获取关联的XWPFRun。我在XWPFTableCell的API中找不到对此的任何引用。您需要查看段落或(嵌套)表-有关如何获取这两个表的详细信息,请参阅,这两个表都包含运行