org.apache.poi.xwpf.usermodel.ParagraphAlignment Java Examples

The following examples show how to use org.apache.poi.xwpf.usermodel.ParagraphAlignment. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: WordExport.java    From frpMgr with MIT License 4 votes vote down vote up
public void fillTableAtBookMark(String bookMarkName, List<Map<String, String>> content) {

		//rowNum来比较标签在表格的哪一行
		int rowNum = 0;

		//首先得到标签
		BookMark bookMark = bookMarks.getBookmark(bookMarkName);
		Map<String, String> columnMap = new HashMap<String, String>();
		Map<String, Node> styleNode = new HashMap<String, Node>();

		//标签是否处于表格内
		if (bookMark.isInTable()) {

			//获得标签对应的Table对象和Row对象
			XWPFTable table = bookMark.getContainerTable();
			XWPFTableRow row = bookMark.getContainerTableRow();
//			CTRow ctRow = row.getCtRow();
			List<XWPFTableCell> rowCell = row.getTableCells();
			for (int i = 0; i < rowCell.size(); i++) {
				columnMap.put(i + "", rowCell.get(i).getText().trim());
				//System.out.println(rowCell.get(i).getParagraphs().get(0).createRun().getFontSize());
				//System.out.println(rowCell.get(i).getParagraphs().get(0).getCTP());
				//System.out.println(rowCell.get(i).getParagraphs().get(0).getStyle());

				//获取该单元格段落的xml,得到根节点
				Node node1 = rowCell.get(i).getParagraphs().get(0).getCTP().getDomNode();

				//遍历根节点的所有子节点
				for (int x = 0; x < node1.getChildNodes().getLength(); x++) {
					if (node1.getChildNodes().item(x).getNodeName().equals(BookMark.RUN_NODE_NAME)) {
						Node node2 = node1.getChildNodes().item(x);

						//遍历所有节点为"w:r"的所有自己点,找到节点名为"w:rPr"的节点
						for (int y = 0; y < node2.getChildNodes().getLength(); y++) {
							if (node2.getChildNodes().item(y).getNodeName().endsWith(BookMark.STYLE_NODE_NAME)) {

								//将节点为"w:rPr"的节点(字体格式)存到HashMap中
								styleNode.put(i + "", node2.getChildNodes().item(y));
							}
						}
					} else {
						continue;
					}
				}
			}

			//循环对比,找到该行所处的位置,删除改行			
			for (int i = 0; i < table.getNumberOfRows(); i++) {
				if (table.getRow(i).equals(row)) {
					rowNum = i;
					break;
				}
			}
			table.removeRow(rowNum);

			for (int i = 0; i < content.size(); i++) {
				//创建新的一行,单元格数是表的第一行的单元格数,
				//后面添加数据时,要判断单元格数是否一致
				XWPFTableRow tableRow = table.createRow();
				CTTrPr trPr = tableRow.getCtRow().addNewTrPr();
				CTHeight ht = trPr.addNewTrHeight();
				ht.setVal(BigInteger.valueOf(360));
			}

			//得到表格行数
			int rcount = table.getNumberOfRows();
			for (int i = rowNum; i < rcount; i++) {
				XWPFTableRow newRow = table.getRow(i);

				//判断newRow的单元格数是不是该书签所在行的单元格数
				if (newRow.getTableCells().size() != rowCell.size()) {

					//计算newRow和书签所在行单元格数差的绝对值
					//如果newRow的单元格数多于书签所在行的单元格数,不能通过此方法来处理,可以通过表格中文本的替换来完成
					//如果newRow的单元格数少于书签所在行的单元格数,要将少的单元格补上
					int sub = Math.abs(newRow.getTableCells().size() - rowCell.size());
					//将缺少的单元格补上
					for (int j = 0; j < sub; j++) {
						newRow.addNewTableCell();
					}
				}

				List<XWPFTableCell> cells = newRow.getTableCells();

				for (int j = 0; j < cells.size(); j++) {
					XWPFParagraph para = cells.get(j).getParagraphs().get(0);
					XWPFRun run = para.createRun();
					if (content.get(i - rowNum).get(columnMap.get(j + "")) != null) {

						//改变单元格的值,标题栏不用改变单元格的值 
						run.setText(content.get(i - rowNum).get(columnMap.get(j + "")) + "");

						//将单元格段落的字体格式设为原来单元格的字体格式
						run.getCTR().getDomNode().insertBefore(styleNode.get(j + "").cloneNode(true), run.getCTR().getDomNode().getFirstChild());
					}

					para.setAlignment(ParagraphAlignment.CENTER);
				}
			}
		}
	}
 
Example #2
Source File: M2DocEvaluator.java    From M2Doc with Eclipse Public License 1.0 4 votes vote down vote up
/**
 * Converts the horizontal alignment.
 * 
 * @param hAlignment
 *            the horizontal alignment
 * @return the horizontal alignment
 */
private ParagraphAlignment getHAllignment(HAlignment hAlignment) {
    final ParagraphAlignment res;

    switch (hAlignment) {
        case BOTH:
            res = ParagraphAlignment.BOTH;
            break;

        case CENTER:
            res = ParagraphAlignment.CENTER;
            break;

        case DISTRIBUTE:
            res = ParagraphAlignment.DISTRIBUTE;
            break;

        case HIGH_KASHIDA:
            res = ParagraphAlignment.HIGH_KASHIDA;
            break;

        case LEFT:
            res = ParagraphAlignment.LEFT;
            break;

        case LOW_KASHIDA:
            res = ParagraphAlignment.LOW_KASHIDA;
            break;

        case MEDIUM_KASHIDA:
            res = ParagraphAlignment.MEDIUM_KASHIDA;
            break;

        case NUM_TAB:
            res = ParagraphAlignment.NUM_TAB;
            break;

        case RIGHT:
            res = ParagraphAlignment.RIGHT;
            break;

        case THAI_DISTRIBUTE:
            res = ParagraphAlignment.THAI_DISTRIBUTE;
            break;

        default:
            throw new IllegalStateException("can't convert " + hAlignment);
    }

    return res;
}