gpt4 book ai didi

java - 在word中找到一个表并使用java在该表中写入

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:28 25 4
gpt4 key购买 nike

我有一个 word 文档,其中可能有 n 个表格。该表由作为标题写入第一个单元格中的表名标识。现在我必须找到带有表名的表并写入该表的单元格之一。我尝试使用 apache-poi 进行相同但无法弄清楚如何将它用于我的目的。如果我无法解释文档的外观,请参阅随附的屏幕截图。

谢谢 as seen in screenshot name of tables are S1 and S2

    String fileName = "E:\\a1.doc";  

if (args.length > 0) {
fileName = args[0];
}

InputStream fis = new FileInputStream(fileName);
POIFSFileSystem fs = new POIFSFileSystem(fis);
HWPFDocument doc = new HWPFDocument(fs);

Range range = doc.getRange();
for (int i=0; i<range.numParagraphs(); i++){
Paragraph tablePar = range.getParagraph(i);

if (tablePar.isInTable()) {
Table table = range.getTable(tablePar);
for (int rowIdx=0; rowIdx<table.numRows(); rowIdx++) {

for (int colIdx=0; colIdx<row.numCells(); colIdx++) {
TableCell cell = row.getCell(colIdx);
System.out.println("column="+cell.getParagraph(0).text());
}
}
}
}

这是我尝试过的方法,但这只读取了第一个表。

最佳答案

我发现你对 poi 有误解。如果你只是想读取一个表。只需使用 TableIterator 来获取表的内容,否则你将得到一个没有表开始的异常。

我想每个表格单元格中只有一个段落。

    InputStream fis = new FileInputStream(fileName);  
POIFSFileSystem fs = new POIFSFileSystem(fis);
HWPFDocument doc = new HWPFDocument(fs);

Range range = doc.getRange();
TableIterator itr = new TableIterator(range);
while(itr.hasNext()){
Table table = itr.next();
for(int rowIndex = 0; rowIndex < table.numRows(); rowIndex++){
TableRow row = table.getRow(rowIndex);
for(int colIndex = 0; colIndex < row.numCells(); colIndex++){
TableCell cell = row.getCell(colIndex);
System.out.println(cell.getParagraph(0).text());
}
}
}

关于java - 在word中找到一个表并使用java在该表中写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com