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

[简单]poi word2007设置表格边框样式

    博客分类:
  • poi
 
阅读更多

        直接上代码:

       

import java.io.FileOutputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;
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.STBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
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_表格边框相关_S2_Test {
	public static void main(String[] args) throws Exception {
		POI_表格边框相关_S2_Test t=new POI_表格边框相关_S2_Test();
		XWPFDocument document = new XWPFDocument();
		t.createSimpleTableWithBdColor(document);
		t.addNewPage(document, BreakType.TEXT_WRAPPING);
		t.createSimpleTableNormal(document);
		t.addNewPage(document, BreakType.TEXT_WRAPPING);
		t.createSimpleTableWithNotBd(document);
		t.saveDocument(document, "f:/saveFile/temp/sys_"+ System.currentTimeMillis() + ".docx");
	}
	
	//表格自定义边框 请忽略这么丑的颜色样式,主要说明可以自定义样式
	public  void createSimpleTableWithBdColor(XWPFDocument doc) throws Exception {
		List<String> columnList = new ArrayList<String>();
		columnList.add("序号");
		columnList.add("姓名信息|姓甚|名谁");
		columnList.add("名刺信息|籍贯|营生");
		XWPFTable table = doc.createTable(2,5);
		
		CTTblBorders borders=table.getCTTbl().getTblPr().addNewTblBorders();
		CTBorder hBorder=borders.addNewInsideH();
		hBorder.setVal(STBorder.Enum.forString("dashed"));
		hBorder.setSz(new BigInteger("1"));
		hBorder.setColor("0000FF");
		
		CTBorder vBorder=borders.addNewInsideV();
		vBorder.setVal(STBorder.Enum.forString("dotted"));
		vBorder.setSz(new BigInteger("1"));
		vBorder.setColor("00FF00");
		
		CTBorder lBorder=borders.addNewLeft();
		lBorder.setVal(STBorder.Enum.forString("double"));
		lBorder.setSz(new BigInteger("1"));
		lBorder.setColor("3399FF");
		
		CTBorder rBorder=borders.addNewRight();
		rBorder.setVal(STBorder.Enum.forString("single"));
		rBorder.setSz(new BigInteger("1"));
		rBorder.setColor("F2B11F");
		
		CTBorder tBorder=borders.addNewTop();
		tBorder.setVal(STBorder.Enum.forString("thick"));
		tBorder.setSz(new BigInteger("1"));
		tBorder.setColor("C3599D");
		
		CTBorder bBorder=borders.addNewBottom();
		bBorder.setVal(STBorder.Enum.forString("wave"));
		bBorder.setSz(new BigInteger("1"));
		bBorder.setColor("BF6BCC");
		
		CTTbl ttbl = table.getCTTbl();
		CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
		CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
		CTJc cTJc=tblPr.addNewJc();
		cTJc.setVal(STJc.Enum.forString("center"));
		tblWidth.setW(new BigInteger("8000"));
		tblWidth.setType(STTblWidth.DXA);
		
		XWPFTableRow firstRow=null;
		XWPFTableRow secondRow=null;
		XWPFTableCell firstCell=null;
		XWPFTableCell secondCell=null;
		
		for(int i=0;i<2;i++){
			firstRow=table.getRow(i);
			firstRow.setHeight(380);
			for(int j=0;j<5;j++){
				firstCell=firstRow.getCell(j);
				setCellText(firstCell, "测试", "FFFFC9", 1600);
			}
		}
		
		firstRow=table.insertNewTableRow(0);
	    secondRow=table.insertNewTableRow(1);
		firstRow.setHeight(380);
		secondRow.setHeight(380);
		for(String str:columnList){
			if(str.indexOf("|") == -1){
				firstCell=firstRow.addNewTableCell();
				secondCell=secondRow.addNewTableCell();
				createVSpanCell(firstCell, str,"CCCCCC",1600,STMerge.RESTART);
				createVSpanCell(secondCell, "", "CCCCCC", 1600,null);
			}else{
				String[] strArr=str.split("\\|");
				firstCell=firstRow.addNewTableCell();
				createHSpanCell(firstCell, strArr[0],"CCCCCC",1600,STMerge.RESTART);
				for(int i=1;i<strArr.length-1;i++){
					firstCell=firstRow.addNewTableCell();
					createHSpanCell(firstCell, "","CCCCCC",1600,null);
				}
				for(int i=1;i<strArr.length;i++){
					secondCell=secondRow.addNewTableCell();
					setCellText(secondCell, strArr[i], "CCCCCC", 1600);
				}
			}
		}
	}
	
	//表格正常边框
	public  void createSimpleTableNormal(XWPFDocument doc) throws Exception {
		List<String> columnList = new ArrayList<String>();
		columnList.add("序号");
		columnList.add("姓名信息|姓甚|名谁");
		columnList.add("名刺信息|籍贯|营生");
		XWPFTable table = doc.createTable(2,5);
		
		CTTbl ttbl = table.getCTTbl();
		CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
		CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
		CTJc cTJc=tblPr.addNewJc();
		cTJc.setVal(STJc.Enum.forString("center"));
		tblWidth.setW(new BigInteger("8000"));
		tblWidth.setType(STTblWidth.DXA);
		
		XWPFTableRow firstRow=null;
		XWPFTableRow secondRow=null;
		XWPFTableCell firstCell=null;
		XWPFTableCell secondCell=null;
		
		for(int i=0;i<2;i++){
			firstRow=table.getRow(i);
			firstRow.setHeight(380);
			for(int j=0;j<5;j++){
				firstCell=firstRow.getCell(j);
				setCellText(firstCell, "测试", "FFFFC9", 1600);
			}
		}
		
		firstRow=table.insertNewTableRow(0);
	    secondRow=table.insertNewTableRow(1);
		firstRow.setHeight(380);
		secondRow.setHeight(380);
		for(String str:columnList){
			if(str.indexOf("|") == -1){
				firstCell=firstRow.addNewTableCell();
				secondCell=secondRow.addNewTableCell();
				createVSpanCell(firstCell, str,"CCCCCC",1600,STMerge.RESTART);
				createVSpanCell(secondCell, "", "CCCCCC", 1600,null);
			}else{
				String[] strArr=str.split("\\|");
				firstCell=firstRow.addNewTableCell();
				createHSpanCell(firstCell, strArr[0],"CCCCCC",1600,STMerge.RESTART);
				for(int i=1;i<strArr.length-1;i++){
					firstCell=firstRow.addNewTableCell();
					createHSpanCell(firstCell, "","CCCCCC",1600,null);
				}
				for(int i=1;i<strArr.length;i++){
					secondCell=secondRow.addNewTableCell();
					setCellText(secondCell, strArr[i], "CCCCCC", 1600);
				}
			}
		}
	}
	
	//表格无边框
	public  void createSimpleTableWithNotBd(XWPFDocument doc) throws Exception {
		List<String> columnList = new ArrayList<String>();
		columnList.add("序号");
		columnList.add("姓名信息|姓甚|名谁");
		columnList.add("名刺信息|籍贯|营生");
		XWPFTable table = doc.createTable(2,5);
		
		CTTblBorders borders=table.getCTTbl().getTblPr().addNewTblBorders();
		CTBorder hBorder=borders.addNewInsideH();
		hBorder.setVal(STBorder.Enum.forString("none"));
		hBorder.setSz(new BigInteger("1"));
		hBorder.setColor("0000FF");
		
		CTBorder vBorder=borders.addNewInsideV();
		vBorder.setVal(STBorder.Enum.forString("none"));
		vBorder.setSz(new BigInteger("1"));
		vBorder.setColor("00FF00");
		
		CTBorder lBorder=borders.addNewLeft();
		lBorder.setVal(STBorder.Enum.forString("none"));
		lBorder.setSz(new BigInteger("1"));
		lBorder.setColor("3399FF");
		
		CTBorder rBorder=borders.addNewRight();
		rBorder.setVal(STBorder.Enum.forString("none"));
		rBorder.setSz(new BigInteger("1"));
		rBorder.setColor("F2B11F");
		
		CTBorder tBorder=borders.addNewTop();
		tBorder.setVal(STBorder.Enum.forString("none"));
		tBorder.setSz(new BigInteger("1"));
		tBorder.setColor("C3599D");
		
		CTBorder bBorder=borders.addNewBottom();
		bBorder.setVal(STBorder.Enum.forString("none"));
		bBorder.setSz(new BigInteger("1"));
		bBorder.setColor("F7E415");
		
		CTTbl ttbl = table.getCTTbl();
		CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
		CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
		CTJc cTJc=tblPr.addNewJc();
		cTJc.setVal(STJc.Enum.forString("center"));
		tblWidth.setW(new BigInteger("8000"));
		tblWidth.setType(STTblWidth.DXA);
		
		XWPFTableRow firstRow=null;
		XWPFTableRow secondRow=null;
		XWPFTableCell firstCell=null;
		XWPFTableCell secondCell=null;
		
		for(int i=0;i<2;i++){
			firstRow=table.getRow(i);
			firstRow.setHeight(380);
			for(int j=0;j<5;j++){
				firstCell=firstRow.getCell(j);
				setCellText(firstCell, "测试", "FFFFC9", 1600);
			}
		}
		
		firstRow=table.insertNewTableRow(0);
	    secondRow=table.insertNewTableRow(1);
		firstRow.setHeight(380);
		secondRow.setHeight(380);
		for(String str:columnList){
			if(str.indexOf("|") == -1){
				firstCell=firstRow.addNewTableCell();
				secondCell=secondRow.addNewTableCell();
				createVSpanCell(firstCell, str,"CCCCCC",1600,STMerge.RESTART);
				createVSpanCell(secondCell, "", "CCCCCC", 1600,null);
			}else{
				String[] strArr=str.split("\\|");
				firstCell=firstRow.addNewTableCell();
				createHSpanCell(firstCell, strArr[0],"CCCCCC",1600,STMerge.RESTART);
				for(int i=1;i<strArr.length-1;i++){
					firstCell=firstRow.addNewTableCell();
					createHSpanCell(firstCell, "","CCCCCC",1600,null);
				}
				for(int i=1;i<strArr.length;i++){
					secondCell=secondRow.addNewTableCell();
					setCellText(secondCell, strArr[i], "CCCCCC", 1600);
				}
			}
		}
	}
	
	public  void setCellText(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);
		CTTcPr ctPr = cttc.addNewTcPr();
		CTShd ctshd = ctPr.addNewShd();
		ctshd.setFill(bgcolor);
		ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cell.setText(text);
	}
	public void createHSpanCell(XWPFTableCell cell,String value, String bgcolor, int width,STMerge.Enum stMerge){
		CTTc cttc = cell.getCTTc();
		CTTcPr cellPr = cttc.addNewTcPr();
		cellPr.addNewTcW().setW(BigInteger.valueOf(width));
		cell.setColor(bgcolor);
		cellPr.addNewHMerge().setVal(stMerge);
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cttc.getPList().get(0).addNewR().addNewT().setStringValue(value);
	}
	
	public void createVSpanCell(XWPFTableCell cell,String value, String bgcolor, int width,STMerge.Enum stMerge){
		CTTc cttc = cell.getCTTc();
		CTTcPr cellPr = cttc.addNewTcPr();
		cellPr.addNewTcW().setW(BigInteger.valueOf(width));
		cell.setColor(bgcolor);
		cellPr.addNewVMerge().setVal(stMerge);
		cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
		cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
		cttc.getPList().get(0).addNewR().addNewT().setStringValue(value);
	}
	
	public void addNewPage(XWPFDocument document,BreakType breakType){
		XWPFParagraph xp = document.createParagraph();
		xp.createRun().addBreak(breakType);
	}
	
	public void saveDocument(XWPFDocument document,String savePath) throws Exception{
		FileOutputStream fos = new FileOutputStream(savePath);
		document.write(fos);
		fos.close();
	}
	
}

    结果如下

   

    有关单元格合并的内容,可以参考我的另一篇文章:http://53873039oycg.iteye.com/blog/2152009

    全文完

  • 大小: 71.2 KB
2
0
分享到:
评论
2 楼 wenlongsust 2015-04-29  
单元格水平、垂直对齐接口都有了
1 楼 a754782339 2015-03-20  
你好,我这边遇到需求是要对word操作,不是简单的读写!样式很繁琐!您能把您的这个代码例子给我发下么!我有复制您的这个代码,但是出问题“报错”!邮箱754782339@qq.com  谢谢!

相关推荐

    poi将word转换成html、样式 表格 图片处理

    在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格和图片。下面我们将详细介绍这个过程中的关键知识点。 1. **Apache POI简介** Apache POI 提供了Java API,使得...

    poi操作word表格

    - 设置边框样式,包括颜色、线型、宽度等,通过`XWPFTableCell`的`getCTTcPr().addNewTcBorders()`方法。 - 修改单元格对齐方式,如左对齐、居中或右对齐,使用`cell.getCTTc().addNewTcPr().addNewJc().setVal...

    java使用poi操作.doc word模板替换,循环插入表格

    在实际应用中,你可能还需要处理更复杂的情况,比如样式设置、合并单元格、表格边框等。记得在完成操作后,你需要使用`document.write()`方法将修改后的文档保存到文件系统中。 在开发过程中,确保正确处理文件输入...

    POI操作Excel合并单元格边框问题解决方法

    POI操作Excel 合并单元格 边框问题解决方法,这个方法是我亲自测试,并运用于项目中的,可以放心使用,还一并写出了很多注释,其中有写poi的bug的解决方法

    POI.rar_POI_POI word_java poi word

    - **格式化**:设置单元格样式,如字体、颜色、边框、对齐方式等。 - **计算**:在Excel中执行公式计算。 - **处理复杂结构**:如Word文档中的段落、页眉页脚、表格、列表等。 在实际应用中,Java POI广泛应用于...

    java POI 导出复杂要求的表格

    例如,你可以设置单元格的字体、颜色、对齐方式、边框样式,甚至创建自定义的条件格式。此外,POI还支持多种数据类型,如字符串、数字、日期、布尔值等,这使得创建包含各种信息的复杂表格成为可能。 在实际操作中...

    Java Poi流 根据Word模板插入相应的文本、表格和图片,生成新的Word报告

    对于表格样式,可以设置边框、填充、对齐方式等属性,如`setBorderBottom()`, `setFillColor()`和`setAlignment()`。 4. **插入图片**: - Java POI支持多种图片格式,包括.jpg、.png、.gif等。首先,将图片转换为...

    poi 将echar报表生成到word table表格中

    - 表格样式:使用POI提供的方法可以设置表格、行和单元格的样式,如边框、字体、颜色等。 - 动态更新:如果数据是动态的,你需要确保在每次生成Word文档时都更新图表和表格。 - 错误处理:处理可能出现的异常,如...

    POI操作Word资料

    XWPFTable类提供了创建和修改Word表格的方法。你可以定义表格的行数、列数,设置单元格的内容,甚至调整表格样式。 5. **样式和格式**: POI提供了对字体、颜色、对齐方式、边框、填充等样式的控制。例如,你可以...

    Java使用POI导出Word文档

    此外,你还可以利用POI提供的API来设置复杂的样式,如边框、填充、对齐方式、列表样式等。 总之,使用Apache POI库,Java开发者可以轻松地创建和编辑Word文档,实现数据的自动化导出,提高工作效率。只要理解了基本...

    java生成word,包括word表格,表格插入图片,jar包都在了

    在生成Word表格和插入图片时,Apache POI提供了丰富的API接口。 2. **生成Word表格**:使用Apache POI,你可以创建表格,设定行数、列数,填充数据。表格的样式,如边框、颜色、字体等,也可以进行定制。例如,你...

    java POI生成word.zip

    - `XWPFTable`允许你创建多行多列的表格,并设置单元格的宽度、高度和边框样式。 6. **优化性能** - 大型文档处理时,要注意内存管理。可以使用流式API(如`XWPFFluent`)来减少内存占用。 - 为了避免内存溢出,...

    poi3.8 doc,excel转html

    1. **Apache POI基础**:Apache POI提供了HPSF(Hierarchical Property Set Facility)来处理Word文档的元数据,HWPF(Horrible Word Processor Format)用于读写Word97-2003的.DOC文件,而HSSF用于读写Excel的.BIFF...

    poi全面教程

    - **样式与格式**: POI提供了丰富的样式和格式功能,如字体、边框、填充、对齐方式和条件格式等,可以通过`CellStyle`对象进行设置。 2. **Word处理**: - **HWPF与XWPF**: 类似于Excel,Apache POI有HWPF处理...

    poi导出excel表格

    5. 设置样式:如果你需要对单元格进行格式化,如字体、颜色、边框等,可以使用CellStyle对象。 6. 响应流:创建ServletOutputStream,然后将工作簿对象写入输出流。在HTTP响应中设置正确的MIME类型("application/...

    poi导入导出Excel表格的所以jar包

    - **格式化和样式设置**:设置单元格的字体、颜色、边框、对齐方式、公式等。 - **处理复杂数据类型**:包括日期、时间、公式、超链接等。 - **工作簿和工作表操作**:创建、删除、重命名工作簿和工作表。 - **数据...

    ParseWord07Test(EasyPOi word隐藏边框+图片遍历导出)

    在`PoiWordStyleUtilTest.java`文件中,可能会包含处理边框隐藏的代码片段,例如设置段落或者表格的边框样式为无,以达到隐藏边框的效果。 接着,"图片遍历导出"是另一个关键功能。在Word文档中,图片可以丰富文本...

    Java POI读取word生成

    5. **样式管理**:POI还提供了对文档样式的控制,如字体、颜色、边框等,你可以通过XWPFStyles对象进行设置。 6. **写入文件**:最后,你需要将生成的文档保存到磁盘上。 ```java try (FileOutputStream out = new...

    word内容提取 word转html-POI wps doc docx转html

    Apache POI提供了对表格列数、行数、单元格内容的访问,以及边框、填充、对齐方式等样式信息的获取。 5. **Word转HTML**:整个转换过程通常分为以下几个步骤: - 使用Apache POI读取Word文档。 - 遍历文档内容,...

Global site tag (gtag.js) - Google Analytics