use of org.docx4j.wml.Tr in project docx4j-template by vindell.
the class Docx4j_合并单元格_S4_Test method mergeCellsHorizontal.
/**
* @Description: 跨列合并
*/
public void mergeCellsHorizontal(Tbl tbl, int row, int fromCell, int toCell) {
if (row < 0 || fromCell < 0 || toCell < 0) {
return;
}
List<Tr> trList = getTblAllTr(tbl);
if (row > trList.size()) {
return;
}
Tr tr = trList.get(row);
List<Tc> tcList = getTrAllCell(tr);
for (int cellIndex = fromCell, len = Math.min(tcList.size() - 1, toCell); cellIndex <= len; cellIndex++) {
Tc tc = tcList.get(cellIndex);
TcPr tcPr = getTcPr(tc);
HMerge hMerge = tcPr.getHMerge();
if (hMerge == null) {
hMerge = new HMerge();
tcPr.setHMerge(hMerge);
}
if (cellIndex == fromCell) {
hMerge.setVal("restart");
} else {
hMerge.setVal("continue");
}
}
}
use of org.docx4j.wml.Tr in project docx4j-template by vindell.
the class Docx4j_工具类_S3_Test method mergeCellsHorizontal.
/**
* @Description: 跨列合并
*/
public void mergeCellsHorizontal(Tbl tbl, int row, int fromCell, int toCell) {
if (row < 0 || fromCell < 0 || toCell < 0) {
return;
}
List<Tr> trList = getTblAllTr(tbl);
if (row > trList.size()) {
return;
}
Tr tr = trList.get(row);
List<Tc> tcList = getTrAllCell(tr);
for (int cellIndex = fromCell, len = Math.min(tcList.size() - 1, toCell); cellIndex <= len; cellIndex++) {
Tc tc = tcList.get(cellIndex);
TcPr tcPr = getTcPr(tc);
HMerge hMerge = tcPr.getHMerge();
if (hMerge == null) {
hMerge = new HMerge();
tcPr.setHMerge(hMerge);
}
if (cellIndex == fromCell) {
hMerge.setVal("restart");
} else {
hMerge.setVal("continue");
}
}
}
use of org.docx4j.wml.Tr in project docx4j-template by vindell.
the class Docx4j_工具类_S3_Test method mergeCellsHorizontalByGridSpan.
/*------------------------------------Word 表格相关--------------------------------------------------- */
/**
* @Description: 跨列合并
*/
public void mergeCellsHorizontalByGridSpan(Tbl tbl, int row, int fromCell, int toCell) {
if (row < 0 || fromCell < 0 || toCell < 0) {
return;
}
List<Tr> trList = getTblAllTr(tbl);
if (row > trList.size()) {
return;
}
Tr tr = trList.get(row);
List<Tc> tcList = getTrAllCell(tr);
for (int cellIndex = Math.min(tcList.size() - 1, toCell); cellIndex >= fromCell; cellIndex--) {
Tc tc = tcList.get(cellIndex);
TcPr tcPr = getTcPr(tc);
if (cellIndex == fromCell) {
GridSpan gridSpan = tcPr.getGridSpan();
if (gridSpan == null) {
gridSpan = new GridSpan();
tcPr.setGridSpan(gridSpan);
}
gridSpan.setVal(BigInteger.valueOf(Math.min(tcList.size() - 1, toCell) - fromCell + 1));
} else {
tr.getContent().remove(cellIndex);
}
}
}
use of org.docx4j.wml.Tr in project docx4j-template by vindell.
the class Docx4j_替换模板 method getTblAllTr.
public static List<Tr> getTblAllTr(Tbl tbl) {
List<Object> objList = getAllElementFromObject(tbl, Tr.class);
List<Tr> trList = new ArrayList<Tr>();
if (objList == null) {
return trList;
}
for (Object obj : objList) {
if (obj instanceof Tr) {
Tr tr = (Tr) obj;
trList.add(tr);
}
}
return trList;
}
use of org.docx4j.wml.Tr in project docx4j-template by vindell.
the class Docx4j_替换模板 method replaceTemplateDocx.
public void replaceTemplateDocx() throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
HashMap<String, String> staticMap = getStaticData();
// 替换普通变量
documentPart.variableReplace(staticMap);
Document document = (Document) documentPart.getContents();
Body body = document.getBody();
MyTblFinder tblFinder = new MyTblFinder();
new TraversalUtil(body, tblFinder);
// 替换表格模板第三行数据
Tbl firstTbl = tblFinder.getTbls().get(0);
List<Object> trObjList = firstTbl.getContent();
Tr tr = (Tr) trObjList.get(2);
replaceTrTotalData(tr, getTotalData());
int lvlIndex = 3;
// 替换表格模板第四行数据
int lvlTotalSize = 4;
tr = (Tr) trObjList.get(lvlIndex);
List<String[]> lvDataList = getLvDataList(lvlTotalSize);
replaceTrData(firstTbl, tr, lvDataList, lvlIndex);
// 重新获取表格数据
trObjList = firstTbl.getContent();
int sexTotalSize = 2;
// 替换表格模板第五行数据
tr = (Tr) trObjList.get(lvlIndex + lvlTotalSize);
List<String[]> sexDataList = getSexDataList(2);
replaceTrSexData(tr, sexDataList.get(0));
// 替换表格模板第六行数据
tr = (Tr) trObjList.get(4 + lvlTotalSize);
replaceTrSexData(tr, sexDataList.get(1));
// 替换表格模板第七行数据
tr = (Tr) trObjList.get(5 + lvlTotalSize);
int nationTotalSize = 56;
List<String[]> nationDataList = getNationDataList(nationTotalSize);
replaceTrData(firstTbl, tr, nationDataList, lvlIndex + lvlTotalSize + sexTotalSize);
// 合并层次单元格 层次位于第3行
mergeCellsVertically(firstTbl, 0, lvlIndex, lvlIndex + lvlTotalSize - 1);
// 合并民族单元格 层次+性别2行
mergeCellsVertically(firstTbl, 0, lvlIndex + lvlTotalSize + sexTotalSize, lvlIndex + lvlTotalSize + sexTotalSize + nationTotalSize - 1);
// 替换图表数据
String[] chartArr = getChartData();
replacePieChartData(wordMLPackage, chartArr);
// 保存结果
saveWordPackage(wordMLPackage, outputfilepath);
}
Aggregations