java 动态添加行_java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片)...
时间: 2024-02-03 13:13:40 浏览: 134
使用POI操作Word可以实现动态添加行和表格中动态行,同时也支持插入图片。这里提供一个简单的示例代码:
```
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
public class WordUtils {
private XWPFDocument document;
public WordUtils() {
document = new XWPFDocument();
}
public void addParagraph(String text) {
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText(text);
}
public void addTable(int rows, int cols) {
XWPFTable table = document.createTable(rows, cols);
for (int i = 0; i < rows; i++) {
XWPFTableRow row = table.getRow(i);
for (int j = 0; j < cols; j++) {
XWPFTableCell cell = row.getCell(j);
cell.setText(String.format("row %d, col %d", i, j));
}
}
}
public void addDynamicTable(int rows, int cols, String[][] data) {
XWPFTable table = document.createTable(rows, cols);
for (int i = 0; i < rows; i++) {
XWPFTableRow row = table.getRow(i);
for (int j = 0; j < cols; j++) {
XWPFTableCell cell = row.getCell(j);
if (data[i][j].startsWith("<img")) {
try {
String fileName = data[i][j].substring(data[i][j].indexOf("src=") + 5, data[i][j].indexOf(">") - 1);
FileInputStream fis = new FileInputStream(fileName);
cell.removeParagraph(0);
XWPFParagraph paragraph = cell.addParagraph();
XWPFRun run = paragraph.createRun();
run.addPicture(fis, Document.PICTURE_TYPE_JPEG, fileName, Units.toEMU(100), Units.toEMU(100));
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
cell.setText(data[i][j]);
}
}
}
}
public void save(String fileName) {
try {
FileOutputStream fos = new FileOutputStream(fileName);
document.write(fos);
fos.close();
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这个类中提供了三个方法分别用于添加段落、表格和动态表格。其中动态表格需要传入一个二维数组来表示表格中的数据,如果数据是以`<img>`开头的字符串,则表示该单元格需要插入一张图片,图片的文件名应该在`src=`和`>`之间。最后调用`save`方法将文档保存到指定的文件中即可。
阅读全文