当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

[简单]docx4j表格新增行(Tr)

发表于: 2015-03-23   作者:53873039oycg   来源:转载   浏览:
摘要:        从本篇博文开始,不提供全部的代码,详细代码见http://53873039oycg.iteye.com/blog/2194479。关键代码如下:       /** * @Description: 在表格指定位置新增一行,默认居中 */ public vo

       从本篇博文开始,不提供全部的代码,详细代码见http://53873039oycg.iteye.com/blog/2194479。关键代码如下:

     

/**
	 * @Description: 在表格指定位置新增一行,默认居中
	 */
	public void addTrByIndex(Tbl tbl, int index) {
		addTrByIndex(tbl, index, STVerticalJc.CENTER, JcEnumeration.CENTER);
	}

	/**
	 * @Description: 在表格指定位置新增一行(默认按表格定义的列数添加)
	 */
	public void addTrByIndex(Tbl tbl, int index, STVerticalJc vAlign,
			JcEnumeration hAlign) {
		TblGrid tblGrid = tbl.getTblGrid();
		Tr tr = new Tr();
		if (tblGrid != null) {
			List<TblGridCol> gridList = tblGrid.getGridCol();
			for (TblGridCol tblGridCol : gridList) {
				Tc tc = new Tc();
				setTcWidth(tc, tblGridCol.getW().toString());
				if (vAlign != null) {
					// 垂直居中
					setTcVAlign(tc, vAlign);
				}
				P p = new P();
				if (hAlign != null) {
					PPr pPr = new PPr();
					Jc jc = new Jc();
					// 单元格居中对齐
					jc.setVal(hAlign);
					pPr.setJc(jc);
					p.setPPr(pPr);
				}
				R run = new R();
				p.getContent().add(run);
				tc.getContent().add(p);
				tr.getContent().add(tc);
			}
		} else {
			// 大部分情况都不会走到这一步
			Tr firstTr = getTblAllTr(tbl).get(0);
			int cellSize = getTcCellSizeWithMergeNum(firstTr);
			for (int i = 0; i < cellSize; i++) {
				Tc tc = new Tc();
				if (vAlign != null) {
					// 垂直居中
					setTcVAlign(tc, vAlign);
				}
				P p = new P();
				if (hAlign != null) {
					PPr pPr = new PPr();
					Jc jc = new Jc();
					// 单元格居中对齐
					jc.setVal(hAlign);
					pPr.setJc(jc);
					p.setPPr(pPr);
				}
				R run = new R();
				p.getContent().add(run);
				tc.getContent().add(p);
				tr.getContent().add(tc);
			}
		}
		if (index >= 0&&index<tbl.getContent().size()) {
			tbl.getContent().add(index, tr);
		} else {
			tbl.getContent().add(tr);
		}
	}
	
	/**
	 * @Description: 得到行的列数
	 */
	public int getTcCellSizeWithMergeNum(Tr tr) {
		int cellSize = 1;
		List<Tc> tcList = getTrAllCell(tr);
		if (tcList == null || tcList.size() == 0) {
			return cellSize;
		}
		cellSize = tcList.size();
		for (Tc tc : tcList) {
			TcPr tcPr = getTcPr(tc);
			GridSpan gridSpan = tcPr.getGridSpan();
			if (gridSpan != null) {
				cellSize += gridSpan.getVal().intValue() - 1;
			}
		}
		return cellSize;
	}

 

     全文完。

 

[简单]docx4j表格新增行(Tr)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
原文见:http://programmingbb.blogspot.com/2014/08/using-docx4j-to-generate-docx-files.html .下
word表格插入一行如下: 实现思路: 主要分在当前行上方插入行和在当前行下方插入行。对首尾2行特殊处
功能介绍: 主要实现往已有表格填充数据,在数据列大于表格列时不会新增列,因为新增列涉及单元格宽度
使用docx4j模板动态制作表格代码实现过程(一 ),模板在附件中 ,可以执行代码看结果 模板式样:
下面的例子使用jQuery动态在table中新增tr,删除tr,具体请看代码。代码如下: <!DOCTYPE html>
直接上代码: import java.io.File; import java.math.BigInteger; import java.util.Calendar; impo
word 2007内容控件位置: 代码如下: import java.io.File; import java.io.StringWriter; import jav
主要实现了按照模版行的样式填充数据,针对的是动态数据,静态数据可以直接替换变量实现,先说下缺点
昨天写了篇博客,有博友指出手动拼接html的写法不是很好,建议使用jsrender生成html,早上看了下jsr
建议直接看docx4j官网例子: https://github.com/plutext/docx4j/tree/master/src/samples/docx4j/or
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号