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

[简单]poi导出简单word2007

    博客分类:
  • poi
 
阅读更多

        最近在Git上看到一个导出表信息到word的项目(名字叫DBDocTool),下载后运行出错,看了下是用poi-3.10导出的,懒得修改别人的代码,自己随手写了个,代码如下
      

import java.io.FileOutputStream;
import java.math.BigInteger;

import org.apache.poi.xwpf.usermodel.Borders;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.TextAlignment;
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.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;
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.CTTc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;

public class POI_创建简单Word2007_S2_Test {
	public static void main(String[] args) throws Exception {
		POI_创建简单Word2007_S2_Test t = new POI_创建简单Word2007_S2_Test();
		t.createSimpleTable("f:/saveFile/temp/sys_"+ System.currentTimeMillis() + ".docx");
	}

	public void createSimpleTable(String savePath) throws Exception {
		XWPFDocument xdoc = new XWPFDocument();
		XWPFParagraph xp = xdoc.createParagraph();
		XWPFRun r1 = xp.createRun();
		r1.setText("测试一个简单的表格");
		r1.setFontFamily("宋体");
		r1.setFontSize(12);
		r1.setTextPosition(10);
		r1.setBold(true);
		xp.setAlignment(ParagraphAlignment.CENTER);

		XWPFTable xTable = xdoc.createTable(5, 7);
		CTTbl ttbl = xTable.getCTTbl();
		CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl
				.getTblPr();
		CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr
				.addNewTblW();
		tblWidth.setW(new BigInteger("8600"));
		tblWidth.setType(STTblWidth.DXA);

		int i = 0;
		xTable.getRow(i).setHeight(380);
		setCellText(xdoc, xTable.getRow(i).getCell(0), "列名", "CCCCCC",
				getCellWidth(0));
		setCellText(xdoc, xTable.getRow(i).getCell(1), "注释", "CCCCCC",
				getCellWidth(1));
		setCellText(xdoc, xTable.getRow(i).getCell(2), "类型", "CCCCCC",
				getCellWidth(2));
		setCellText(xdoc, xTable.getRow(i).getCell(3), "默认值", "CCCCCC",
				getCellWidth(3));
		setCellText(xdoc, xTable.getRow(i).getCell(4), "标识", "CCCCCC",
				getCellWidth(4));
		setCellText(xdoc, xTable.getRow(i).getCell(5), "主键", "CCCCCC",
				getCellWidth(5));
		setCellText(xdoc, xTable.getRow(i).getCell(6), "空值", "CCCCCC",
				getCellWidth(6));

		i++;
		for (int i2 = i; i2 < 5; i2++) {
			for (int j = 0; j < 7; j++) {
				setCellText(xdoc, xTable.getRow(i2).getCell(j), "测试", null,
						getCellWidth(i));
			}
		}

		XWPFTableRow row = xTable.insertNewTableRow(0);
		row.setHeight(380);
		XWPFTableCell cell = row.addNewTableCell();
		CTTc cttc = cell.getCTTc();
		CTTcPr cellPr = cttc.addNewTcPr();
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(0)));
		cell.setColor("CCCCCC");
		cell.setText("中文名称");

		cell = row.addNewTableCell();
		cttc = cell.getCTTc();
		cellPr = cttc.addNewTcPr();
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(1)));
		cell.setText("测试测试");

		cell = row.addNewTableCell();
		cttc = cell.getCTTc();
		cellPr = cttc.addNewTcPr();
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(2)));
		cell.setColor("CCCCCC");
		cell.setText("英文名称");

		cell = row.addNewTableCell();
		cttc = cell.getCTTc();
		cellPr = cttc.addNewTcPr();
		cellPr.addNewGridSpan().setVal(BigInteger.valueOf(4));
		cellPr.addNewHMerge().setVal(STMerge.CONTINUE);
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cttc.getPList().get(0).addNewR().addNewT().setStringValue("测试水平垂直居中");

		row = xTable.insertNewTableRow(1);
		row.setHeight(380);
		cell = row.addNewTableCell();
		cttc = cell.getCTTc();
		cellPr = cttc.addNewTcPr();
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(0)));
		cell.setColor("CCCCCC");
		cell.setText("功能描述");

		cell = row.addNewTableCell();
		cttc = cell.getCTTc();
		cellPr = cttc.addNewTcPr();
		cellPr.addNewGridSpan().setVal(BigInteger.valueOf(6));
		cellPr.addNewHMerge().setVal(STMerge.CONTINUE);
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cttc.getPList().get(0).addNewR().addNewT().setStringValue("测试功能描述");

		XWPFParagraph p1 = xdoc.createParagraph();
		p1.setAlignment(ParagraphAlignment.CENTER);
		p1.setVerticalAlignment(TextAlignment.CENTER);
		r1 = p1.createRun();
		r1.setBold(true);
		r1.setText("默认单倍行距");
		r1.setFontSize(13);

		p1 = xdoc.createParagraph();
		p1.setAlignment(ParagraphAlignment.CENTER);
		p1.setVerticalAlignment(TextAlignment.CENTER);
		CTPPr pr = p1.getCTP().getPPr() != null ? p1.getCTP().getPPr() : p1.getCTP().addNewPPr();
		CTSpacing spacing =pr.addNewSpacing();
		spacing.setLine(new BigInteger("360"));
		spacing.setLineRule(STLineSpacingRule.AUTO);
		r1 = p1.createRun();
		r1.setBold(true);
		r1.setText("测试1.5倍行距");
		r1.setFontSize(13);

		p1 = xdoc.createParagraph();
		p1.setAlignment(ParagraphAlignment.CENTER);
		p1.setBorderBottom(Borders.DOUBLE);
		p1.setBorderTop(Borders.DOUBLE);
		p1.setBorderRight(Borders.DOUBLE);
		p1.setBorderLeft(Borders.DOUBLE);
		p1.setBorderBetween(Borders.SINGLE);
		p1.setSpacingBeforeLines(100);
		p1.setAlignment(ParagraphAlignment.CENTER);
		p1.setVerticalAlignment(TextAlignment.CENTER);
		r1 = p1.createRun();
		r1.setBold(true);
		r1.setText("学而时习之");
		r1.setFontSize(13);
		CTRPr rpr= r1.getCTR().isSetRPr() ?  r1.getCTR().getRPr() : r1.getCTR().addNewRPr();
		CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts();
		fonts.setAscii("黑体");
		fonts.setEastAsia("黑体");
		fonts.setHAnsi("黑体");
		
		FileOutputStream fos = new FileOutputStream(savePath);
		xdoc.write(fos);
		fos.close();

	}

	private static void setCellText(XWPFDocument xDocument, XWPFTableCell cell,
			String text, String bgcolor, int width) {
		CTTc cttc = cell.getCTTc();
		CTTcPr cellPr = cttc.addNewTcPr();
		cellPr.addNewTcW().setW(BigInteger.valueOf(width));
		cell.setColor(bgcolor);
		cell.setVerticalAlignment(XWPFVertAlign.CENTER);
		CTTcPr ctPr = cttc.addNewTcPr();
		ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cell.setText(text);

	}

	private static int getCellWidth(int index) {
		int cwidth = 1000;
		if (index == 0) {
			cwidth = 1600;
		} else if (index == 1) {
			cwidth = 3000;
		} else if (index == 2) {
			cwidth = 1200;
		} else if (index == 3) {
			cwidth = 900;
		} else if (index == 4) {
			cwidth = 600;
		} else if (index == 5) {
			cwidth = 600;
		} else if (index == 6) {
			cwidth = 700;
		}
		return cwidth;
	}
}

 

     结果为

    

 

     全文完

  • 大小: 57.8 KB
1
0
分享到:
评论
1 楼 ITCCYC 2017-10-26  
导出的word用不兼容WPS怎么解决?

相关推荐

    Java使用POI导出Word文档

    Java使用Apache POI库导出Word文档是一种常见的技术实践,特别是在企业级应用中,用于生成报告、合同或者自定义的数据输出。Apache POI是Apache软件基金会的一个开源项目,它提供了处理Microsoft Office格式(如Word...

    POI导出Word 页眉 页脚 标题设置

    在本主题中,我们将深入探讨如何使用POI库来导出Word文档,并进行页眉、页脚和标题的设置。这个过程涉及到对Word文档的高级布局控制,对于自动化报告生成或批量创建文档非常有用。 1. **Apache POI简介** Apache ...

    基于poi导出word以及图片

    在本教程中,我们将重点讨论如何利用Apache POI 3.13版本来导出Word文档,并结合图片操作。 首先,Apache POI提供了一个叫做HWPF(Horrible Word Processor Format)的API来处理老版的Word(.doc)文件,而XWPF...

    POI报表Word导出

    POI报表Word导出

    POI使用word模板文件循环输出行并导出word

    在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...

    java poi导出word

    在"java poi导出word"这个场景中,我们主要关注的是如何使用Java POI来创建和编辑Word文档。下面将详细介绍如何利用Java POI实现这些功能,并提供一些关键知识点。 1. 文字与段落: 在Java POI中,我们可以使用...

    POI导出word工具类

    《使用Apache POI库导出Word文档》 在Java编程中,处理Microsoft Office文档时,Apache POI是一个不可或缺的库。POI项目提供了一系列API,允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel、Word...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...

    poi导出word例子(图片)

    在这个例子中,我们将聚焦于使用POI库在Java中导出包含图片的Word文档。这个过程涉及到几个关键步骤,包括创建Word文档对象、添加文本内容、以及插入图片。 首先,你需要在项目中引入Apache POI的依赖。通常,这...

    poi导出word的几种方法

    ### POI导出Word的几种方法 在Java开发过程中,特别是在使用Grails框架时,我们经常需要处理文档的生成和转换任务。其中一种常见的需求就是将数据导出为Word文档。Apache POI库提供了一种非常高效且灵活的方式来...

    poi 导出 word 导出excel

    - Java源代码:包含使用Apache POI导出Word和Excel的示例或完整项目。 - 测试类:可能有单元测试或集成测试,验证导出功能的正确性。 - README文件:解释如何运行项目,以及可能的注意事项。 **最佳实践** - 使用...

    POI-将数据导出到Word的实例

    ### POI将数据导出至Word的实例解析 #### 一、概述 Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Word(.doc 和 .docx)、Excel(.xls 和 .xlsx)等。在本文中,我们将深入探讨...

    poi导出word文档jar包

    此外,由于这个"poi导出word文档jar包"的描述比较简单,可能包含了其他相关的jar包或工具,比如可能包含了处理图片、模板或者样式文件的工具。在具体应用时,你需要根据实际情况检查和使用这些资源,以确保完整地...

    POI根据模板导出word,实现文字、图片、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂

    实现了POI根据模板导出word,实现文字、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂。 其中表格和图表都写了两种实现方式,既可以只传简单的参数生成多个同结构的表格和...

    POI生成word文档

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。在这个场景中,我们关注的是使用POI来生成Word文档。POI库提供了丰富的API,使得开发者能够轻松地创建、修改和...

    POI导出Tree结构数据(连接线).doc

    POI框架导出Tree结构数据(连接线) 一、问题描述及现象需求说明 在效果评估系统中,存在指标管理和模板管理两个模块。模板管理中有一个导出模板功能,可以将模板导出到Excel表格中。模板下可以嵌套的是指标或模板...

    poi导出excel参考方法

    POI导出Excel参考方法 POI(Poor Obfuscation Implementation)是一个Java的API,用于操作Microsoft Office文档,包括Excel、Word、PowerPoint等。下面是POI导出Excel参考方法的相关知识点: 1. POI的基本概念 ...

    poi导出多条数据雷达图RADAR到ppt

    在Java编程环境中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,如Word、Excel和PowerPoint。在这个特定的场景中,我们需要使用POI来实现在PPT中生成多条数据的雷达图(也...

    [简单]poi读取word 2007简单文本框值

    标题中的“poi读取word 2007简单文本框值”指的是使用Apache POI库来读取Microsoft Word 2007文档中简单文本框内的文本内容。Apache POI是一个流行的开源Java库,用于处理Microsoft Office格式的文件,如Word(.docx...

    apache poi 导出excel、word

    3. **导出Word**: 在Word文档处理中,Apache POI使用HWPF来创建Document对象。可以插入Paragraphs、Runs来添加文本,使用Field对象插入字段,例如页码。此外,HWPF也支持插入图片,如JPEG或EMF格式,以及创建和...

Global site tag (gtag.js) - Google Analytics