本文将介绍通过Spire.Doc for Java 添加表格到Word文本框并格式化表格的方法。添加图片、文本到文本框,可参考这篇文章。
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.TextBox;
import com.spire.doc.fields.TextRange;
import java.awt.*;
public class AddTextbox {
public static void main(String[] args) {
//创建文档
Document doc = new Document();
//添加指定大小的文本框
TextBox tb = doc.addSection().addParagraph().appendTextBox(380, 100);
//设置文本框的相对位置
tb.getFormat().setHorizontalOrigin(HorizontalOrigin.Left_Margin_Area);
tb.getFormat().setHorizontalPosition(120f);
tb.getFormat().setVerticalOrigin(VerticalOrigin.Page);
tb.getFormat().setVerticalPosition(100f);
//设置文本框边框样式
tb.getFormat().setLineStyle(TextBoxLineStyle.Thin_Thick);
tb.getFormat().setLineColor(Color.gray);
//声明数组内容
String[][] data = new String[][]{
new String[]{"中美进出口差额"},
new String[]{"国家", "年份", "出口额(美元)", "进口额(美元)"},
new String[]{"中国", "2017", "125468", "101109"},
new String[]{"美国", "2017", "86452", "124298"},
};
//添加表格
Table table = tb.getBody().addTable();
//指定表格行数、列数
table.resetCells(4,4);
//将数组内容填充到表格
for (int i = 0; i < data.length; i++) {
TableRow dataRow = table.getRows().get(i);
dataRow.getCells().get(i).setWidth(70);
dataRow.setHeight(22);
dataRow.setHeightType(TableRowHeightType.Exactly);
for (int j = 0; j < data[i].length; j++) {
dataRow.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
TextRange range2 = dataRow.getCells().get(j).addParagraph().appendText(data[i][j]);
range2.getCharacterFormat().setFontName("楷体");
range2.getCharacterFormat().setFontSize(11f);
range2.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
range2.getCharacterFormat().setBold(true);
}
}
//设置指定行的背景色
TableRow row = table.getRows().get(1);
for (int z = 0; z < row.getCells().getCount(); z++) {
row.getCells().get(z).getCellFormat().setBackColor(new Color(176,224,238));
}
//横向合并单元格
table.applyHorizontalMerge(0,0,3);
//应用表格样式
table.applyStyle(DefaultTableStyle.Table_Grid_5);
//保存文档
doc.saveToFile("AddTabletoTextbox.docx", FileFormat.Docx_2013);
}
}
表格添加效果: