`
53873039oycg
  • 浏览: 852905 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

 
阅读更多

       从本篇博文开始,不提供全部的代码,详细代码见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;
	}

 

     全文完。

 

分享到:
评论

相关推荐

    iphone各种型号尺寸.docx

    标题中的"iphone各种型号尺寸.docx"可能是一个文档,包含了...97. `&lt;tr&gt;`:定义表格的行。 98. `&lt;u&gt;`:HTML5中不推荐,定义带下划线的文本,现在推荐使用CSS。 99. `&lt;ul&gt;`:定义无序列表,列表项用圆点或数字标记。 100

    web前端综合笔试题.docx

    表格在HTML4中通过`&lt;table&gt;`标签创建,`&lt;tr&gt;`用于定义行,`&lt;td&gt;`表示单元格,`&lt;th&gt;`定义表头。跨行使用`rowspan`属性,跨列使用`colspan`属性。文本对齐可以通过`align`属性实现,如`align="center"`居中对齐。 ...

    HTML5+CSS.docx

    表格`&lt;table&gt;`包含`&lt;caption&gt;`(标题)、`&lt;th&gt;`(表头)、`&lt;tr&gt;`(行)、`&lt;td&gt;`(单元格)等元素,可以进行单元格的跨行`rowspan`和跨列`colspan`合并。媒体元素如视频`&lt;video&gt;`和音频`&lt;audio&gt;`提供了内置的播放控制...

    Web前端开发项目教程(HTML5+CSS3+JavaScript)全册习题参考答案.docx

    元素用于创建表格,&lt;tr&gt;表示行,表示单元格,表示表头。CSS可以美化表格,如边框、对齐方式、行高和列宽。 【表单】 元素用于创建表单,表单控件如、、用于收集用户数据。表单提交可以通过GET或POST方法,action...

    web前端开发知识点总结.docx编程资料

    - `&lt;tr&gt;`:表格行。 - `&lt;td&gt;`:单元格。 - `&lt;th&gt;`:表头单元格。 - **表单标签** - `&lt;form&gt;`:表单。 - `&lt;input&gt;`:输入字段。 - `&lt;textarea&gt;`:多行文本输入字段。 - `&lt;select&gt;`:下拉列表。 - `&lt;option&gt;`...

    HTML和CSS面试题及答案.docx编程资料

    - **C**: `&lt;TR&gt;` 用于表格中的行。 - **D**: `&lt;T1&gt;` 不是有效的 HTML 标签。 #### 7. 内存越界或异常问题 **题目分析与解答**: - **原题**: 处理 a.html 文件时, 以下哪行伪代码可能导致内存越界或者抛出异常? - ...

    OU-TT284-TMA01

    1. **表格**: `&lt;table&gt;`元素用于创建数据表格,`&lt;tr&gt;`定义行,`&lt;th&gt;`定义表头,`&lt;td&gt;`定义单元格。 2. **图像**: `&lt;img&gt;`元素插入图像,`src`属性指向图像源,`alt`属性提供替代文本。 3. **列表**: 有序列表`&lt;ol&gt;`...

Global site tag (gtag.js) - Google Analytics