我word当中有很多表格,表格已经有数据了,怎么操作表格当中的数据进行修改呢,求解答
用apache poi打开文档后,就可以获取到table对象,按行、列操作即可。
读取第一个表格:
File file = new File(...);
InputStream is = new FileInputStream(file);
XWPFDocument docx = new XWPFDocument(is);
XWPFTable table = docx.getTableArray(0);
List<XWPFTableRow> rows = table.getRows();
XWPFTableRow row = null;
XWPFTableCell cell = null;
for (int i = 0, size = rows.size(); i < size; ++i) {
row = rows.get(i);
...
}
docx.close();
is.close();
操作表格:
File file = new File(...);
InputStream is = new FileInputStream(file);
XWPFDocument docx = new XWPFDocument(is);
XWPFTable table = docx.getTableArray(0);
XWPFTableRow row = table.createRow();
File newFile = new File(...);
OutputStream os = new FileOutputStream(newFile);
docx.write(os);
os.close();
docx.close();
is.close();
楼主你指的是查找表格中的文本信息,然后用新文本进行替换嘛?是的话,推荐一款名为Free Spire.XLS for Java。它不仅可以通过文本信息查找替换,还可以使用正则表达式进行替换,以下是代码示例,可以参考。这是产品包下载链接:https://www.e-iceblue.cn/Downloads/Free-Spire-Doc-JAVA.html
import com.spire.doc.*;
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
import java.util.regex.Pattern;
public class replaceTextInTable {
public static void main(String[] args) {
//Load Word from disk
Document doc = new Document();
doc.loadFromFile("data/ReplaceTextInTable.docx");
//Get the first section
Section section = doc.getSections().get(0);
//Get the first table in the section
Table table = section.getTables().get(0);
//Define a regular expression to match the {} with its content
Pattern regex = Pattern.compile("\\{[^\\}]+\\}",0);
//Replace the text of table with regex
table.replace(regex, "E-iceblue");
//Replace old text with new text in table
table.replace("Beijing", "Component", false, true);
//Save the Word document
String output="output/ReplaceTextInTable_out.docx";
doc.saveToFile(output, FileFormat.Docx_2013);
}
}
首先需要确定一下你的word中的表格格式是否为固定格式,如果是固定格式的话可以用POI读取word中的数据,因为word中的内容都是表格,所以可以像读取excel一样去获取表格里每一个位置的内容,然后把读取到的内容返显到页面上,在页面修改后提交回去保存就可以了。需要注意的是一定要确定好每个小格的位置(最好是像坐标一样去标注位置)。我之前实现导入word文档的需求时用的就是这个办法