資源簡介
應公司業務要求,需要在world文檔中生成表格,最開始同事使用的freemarker操作xml標簽可以實現world中插入表格,
但是每次修改模板需要改xml文件,幾萬行中去找對應的標簽然后修改,容易找錯位置并且電腦非常卡,相當麻煩;,最后還是用poi操作world簡單多了

代碼片段和文件信息
package?com.test;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.OutputStream;
import?java.math.BigInteger;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
import?org.apache.poi.xwpf.usermodel.XWPFDocument;
import?org.apache.poi.xwpf.usermodel.XWPFParagraph;
import?org.apache.poi.xwpf.usermodel.XWPFRun;
import?org.apache.poi.xwpf.usermodel.XWPFTable;
import?org.apache.poi.xwpf.usermodel.XWPFTableRow;
import?org.apache.xmlbeans.xmlCursor;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
import?org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
/**
?*?
?*?在world文檔指定位置插入表格
?*
?*/
public?class?Test1?{
public?static?void?main(String[]?args)?{
String?templatePath?=?“D:\\ok\\demo.docx“;
InputStream?in?=?null;
OutputStream?out?=?null;
try?{
in?=?new?FileInputStream(templatePath);
XWPFDocument?doc?=?new?XWPFDocument(in);
//文本替換
Map?param?=?new?HashMap();
param.put(“PartyA“?“我是甲方“);
param.put(“PartyB“?“我是乙方“);
param.put(“date“?new?SimpleDateFormat(“yyyy-MM-dd“).format(new?Date()));
param.put(“text“?“合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容合同內容“);
List?allXWPFParagraphs?=?doc.getParagraphs();
for?(XWPFParagraph?xwpfParagraph?:?allXWPFParagraphs)?{
List?runs?=?xwpfParagraph.getRuns();
for?(XWPFRun?run?:?runs)?{
String?text?=?run.getText(0);
if?(text!=null?&&?text?!=““)?{
if?(text.equals(“table“))?{//指定位置?用table作為標記
//表格生成?6行5列.
int?rows?=?6;
int?cols?=?5;
xmlCursor?cursor?=?xwpfParagraph.getCTP().newCursor();
XWPFTable?tableOne?=?doc.insertNewTbl(cursor);
//樣式控制
CTTbl?ttbl?=?tableOne.getCTTbl();
CTTblPr?tblPr?=?ttbl.getTblPr()?==?null???ttbl.addNewTblPr()?:?ttbl.getTblPr();??
????????CTTblWidth?tblWidth?=?tblPr.isSetTblW()???tblPr.getTblW()?:?tblPr.addNewTblW();??
????????CTJc?cTJc?=?tblPr.addNewJc();??
????????cTJc.setVal(STJc.Enum.forString(“center“));//表格居中
????????tblWidth.setW(new?BigInteger(“9000“));//每個表格寬度
????????tblWidth.setType(STTblWidth.DXA);??
????????
//表格創建
XWPFTableRow?tableRowtitle?=?tableOne.getRow(0);
tableRowtitle.getCell(0).setText(“標題“);
tableRowtitle.addNewTableCell().setText(“內容“);
tableRowtitle.addNewTableCell().setText(“姓名“);
tableRowtitle.addNewTableCell().setText(“日期“);
tableRow
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????318??2018-11-05?11:16??說明.txt
?????文件????????789??2018-11-05?10:50??wroldAddTable\.classpath
?????文件????????565??2018-11-05?10:48??wroldAddTable\.project
?????文件?????????88??2018-11-05?10:50??wroldAddTable\.settings\org.eclipse.core.resources.prefs
?????文件????????243??2018-11-05?10:48??wroldAddTable\.settings\org.eclipse.jdt.core.prefs
?????文件?????????90??2018-11-05?10:48??wroldAddTable\.settings\org.eclipse.m2e.core.prefs
?????文件????????580??2018-11-05?10:53??wroldAddTable\pom.xm
?????文件???????4189??2018-11-05?11:05??wroldAddTable\src\main\java\com\test\Test1.java
?????文件???????2002??2018-11-05?11:07??wroldAddTable\src\main\java\com\test\Test2.java
?????文件???????7140??2018-11-05?11:05??wroldAddTable\target\classes\com\test\Test1.class
?????文件???????2089??2018-11-05?11:07??wroldAddTable\target\classes\com\test\Test2.class
?????文件????????107??2018-11-05?11:00??wroldAddTable\target\classes\me
?????文件????????238??2018-11-05?11:00??wroldAddTable\target\classes\me
?????文件????????580??2018-11-05?11:00??wroldAddTable\target\classes\me
?????文件?????105364??2018-09-18?15:56??ok\demo.docx
?????文件??????96374??2018-11-05?11:00??ok\demo2.docx
?????文件??????96369??2018-11-05?11:03??ok\demo3.docx
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\me
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\src\main\java\com\test
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\me
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\src\main\java\com
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\com\test
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\me
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\src\main\java
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\com
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes\me
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\src\main
?????目錄??????????0??2018-11-05?10:50??wroldAddTable\src\test
?????目錄??????????0??2018-11-05?11:08??wroldAddTable\target\classes
?????目錄??????????0??2018-11-05?10:48??wroldAddTable\target\test-classes
............此處省略8個文件信息
評論
共有 條評論