您的位置:首页 > 编程语言 > Java开发

java 生成word表格

2014-08-16 15:04 134 查看
J***A生成WORD文件的方法目前有以下种:

一种是jacob 但是局限于windows平台 往往许多J***A程序运行于其他操作系统 在此不讨论该方案。(需要下载jacob.jar以及jacob.dll)

一种是poi,他对excel处理的很好(读和写),poi对word的操作,基本上处在读word模板阶段,对于写word文件就更弱项了,特别是word上画表格等复杂操作。

还有就是itext,用它生成rtf文件并保存格式为word ;(itext主要是用来生成pdf的文档)

iText-1.2.7.jar和支持rtf的iText-rtf-2.1.7.jar这两个貌似对了,其实还有一个包是比较重要的iTextAsian.jar这个包对于设置字体什么的起了关键作用上网可以搜到的.

package com.rye.test;

import java.awt.Color;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;



import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Font;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Table;

import com.lowagie.text.rtf.RtfWriter2;

/**

* 创建word文档 步骤:

* 1,建立文档

* 2,创建一个书写器

* 3,打开文档

* 4,向文档中写入数据

* 5,关闭文档

*/

public class WordDemo {



public WordDemo() {

}



/**

* @param args

*/

public static void main(String[] args) {

// 创建word文档,并设置纸张的大小

Document document = new Document(PageSize.A4);

try {

RtfWriter2.getInstance(document,

new FileOutputStream("E:/word.doc"));



document.open();



//设置合同头



Paragraph ph = new Paragraph();

Font f = new Font();



Paragraph p = new Paragraph("出口合同",

new Font(Font.NORMAL, 18, Font.BOLDITALIC, new Color(0, 0, 0)) );

p.setAlignment(1);

document.add(p);

ph.setFont(f);



// 设置中文字体

// BaseFont bfFont =

// BaseFont.createFont("STSongStd-Light",

"UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

// Font chinaFont = new Font();

/*

* 创建有三列的表格

*/

Table table = new Table(4);

document.add(new Paragraph("生成表格"));

table.setBorderWidth(1);

table.setBorderColor(Color.BLACK);

table.setPadding(0);

table.setSpacing(0);



/*

* 添加表头的元素

*/

Cell cell = new Cell("表头");//单元格

cell.setHeader(true);

cell.setColspan(3);//设置表格为三列

cell.setRowspan(3);//设置表格为三行

table.addCell(cell);

table.endHeaders();// 表头结束



// 表格的主体

cell = new Cell("Example cell 2");

cell.setRowspan(2);//当前单元格占两行,纵向跨度

table.addCell(cell);

table.addCell("1,1");

table.addCell("1,2");

table.addCell("1,3");

table.addCell("1,4");

table.addCell("1,5");

table.addCell(new Paragraph("用java生成的表格1"));

table.addCell(new Paragraph("用java生成的表格2"));

table.addCell(new Paragraph("用java生成的表格3"));

table.addCell(new Paragraph("用java生成的表格4"));

document.add(new Paragraph("用java生成word文件"));

document.add(table);

document.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}



}

代码2:

[java] view
plaincopy

<span style="">import java.awt.Color;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.rtf.RtfWriter2;

public class CreateWordDemo {

public void createDocContext(String file,String contextString)throws DocumentException, IOException{

//设置纸张大小

Document document = new Document(PageSize.A4);

//建立一个书写器,与document对象关联

RtfWriter2.getInstance(document, new FileOutputStream(file));

document.open();

//设置中文字体

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

//标题字体风格

Font titleFont = new Font(bfChinese,12,Font.BOLD);

//正文字体风格

Font contextFont = new Font(bfChinese,10,Font.NORMAL);

Paragraph title = new Paragraph("标题");

//设置标题格式对齐方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

Paragraph context = new Paragraph(contextString);

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

//段间距

context.setSpacingBefore(3);

//设置第一行空的列数

context.setFirstLineIndent(20);

document.add(context);

//设置Table表格,创建一个三列的表格

Table table = new Table(3);

int width[] = {25,25,50};//设置每列宽度比例

table.setWidths(width);

table.setWidth(90);//占页面宽度比例

table.setAlignment(Element.ALIGN_CENTER);//居中

table.setAlignment(Element.ALIGN_MIDDLE);//垂直居中

table.setAutoFillEmptyCells(true);//自动填满

table.setBorderWidth(1);//边框宽度

//设置表头

Cell haderCell = new Cell("表格表头");

haderCell.setHeader(true);

haderCell.setColspan(3);

table.addCell(haderCell);

table.endHeaders();



Font fontChinese = new Font(bfChinese,12,Font.NORMAL,Color.GREEN);

Cell cell = new Cell(new Paragraph("这是一个3*3测试表格数据",fontChinese));

cell.setVerticalAlignment(Element.ALIGN_MIDDLE);

table.addCell(cell);

table.addCell(new Cell("#1"));

table.addCell(new Cell("#2"));

table.addCell(new Cell("#3"));



document.add(table);

document.close();



}

public static void main(String[] args) {

CreateWordDemo word = new CreateWordDemo();

String file = "test.doc";

try {

word.createDocContext(file, "测试iText导出Word文档");

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}</span>

图片版:

[java] view
plaincopy

<span style="font-size: medium;">/**



* @param args



*/



public static void main(String[] args) {



// TODO Auto-generated method stub



try {



RTFCreate rtfMain = new RTFCreate();



rtfMain.createRTFContext(FILE_NAME);









} catch (FileNotFoundException e) {



// TODO Auto-generated catch block



e.printStackTrace();



} catch (DocumentException e) {



// TODO Auto-generated catch block



e.printStackTrace();



} catch (IOException e) {



// TODO Auto-generated catch block



e.printStackTrace();



}



}









public void createRTFContext(String path) throws DocumentException,



IOException {



Document document = new Document(PageSize.A4);



RtfWriter2.getInstance(document, new FileOutputStream(path));



document.open();



// 设置中文字体



BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",



"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);



// 标题字体风格



Font titleFont = new Font(bfChinese, 12, Font.BOLD);









// 正文字体风格



Font contextFont = new Font(bfChinese, 10, Font.NORMAL);









Paragraph title = new Paragraph("标题");



// 设置标题格式对齐方式



title.setAlignment(Element.ALIGN_CENTER);



title.setFont(titleFont);



document.add(title);









String contextString = "iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。";



Paragraph context = new Paragraph(contextString);



// 正文格式左对齐



context.setAlignment(Element.ALIGN_LEFT);



context.setFont(contextFont);



// 离上一段落(标题)空的行数



context.setSpacingBefore(20);



// 设置第一行空的列数



context.setFirstLineIndent(20);









document.add(context);









// //在表格末尾添加图片



Image png = Image.getInstance("c:/fruit.png");



document.add(png);



document.close();



}









}



</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: