Java POI 如何操作word 格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java POI 如何操作word 格式相关的知识,希望对你有一定的参考价值。

最近做项目,需要把jsp页面的数据写入word里面,内容是能写进去,可是打开一看,格式全是乱的.求教各位朋友,谁能帮忙给点思路或者源码.谢谢!
...
可能我的问题描述的不是太清楚,先要谢谢你的答案~

我的意思是 我能把jsp的内容写到 word 里面,但是呢.内容是杂乱无章的,比如字体都是2号的

现在我就想问一下,poi里面有没有哪个类能对 word进行段落设置 字体设置.或者 能再word 里面绘处 表格吗?

1、环境支持

1.1 添加poi支持:包下载地址http://www.apache.org/dyn/closer.cgi/poi/release/

1.2 POI对Excel文件的读取操作比较方便,POI还提供对Word的DOC格式文件的读取。但在它的发行版本中没有发布对Word支持的模块,需要另外下载一个POI的扩展的Jar包。下载地址为http://www.ibiblio.org/maven2/org/textmining/tm-extractors/0.4/ 下载extractors-0.4_zip这个文件

package com.ray.poi.util;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.textmining.text.extraction.WordExtractor;

/**
* 读写doc
* @author wangzonghao
*
*/
public class POIWordUtil
/**
* 读入doc
* @param doc
* @return
* @throws Exception
*/
public static String readDoc(String doc) throws Exception
// 创建输入流读取DOC文件
FileInputStream in = new FileInputStream(new File(doc));
WordExtractor extractor = null;
String text = null;
// 创建WordExtractor
extractor = new WordExtractor();
// 对DOC文件进行提取
text = extractor.extractText(in);
return text;

/**
* 写出doc
* @param path
* @param content
* @return
*/
public static boolean writeDoc(String path, String content)
boolean w = false;
try

// byte b[] = content.getBytes("ISO-8859-1");
byte b[] = content.getBytes();

ByteArrayInputStream bais = new ByteArrayInputStream(b);

POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();

DocumentEntry de = directory.createDocument("WordDocument", bais);

FileOutputStream ostream = new FileOutputStream(path);

fs.writeFilesystem(ostream);

bais.close();
ostream.close();

catch (IOException e)
e.printStackTrace();

return w;



测试

package com.ray.poi.util;

import junit.framework.TestCase;

public class POIUtilTest extends TestCase

public void testReadDoc()
try
String text = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc");
System.out.println(text);
catch(Exception e)
e.printStackTrace();




public void testWriteDoc()
String wr;
try
wr = POIWordUtil.readDoc("E:/work_space/poi/com/ray/poi/util/demo.doc");

boolean b = POIWordUtil.writeDoc("c:\\demo.doc",wr);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();




参考技术A http://wenku.baidu.com/view/8bad04c52cc58bd63186bdc1.html
教程下载

java poi XWPFTable操作word表格的问题?

动态增加列table.addNewCol();然后合并某一行的单元格,跨列合并一整行,但是最后一列找不到。比如第一行两列,执行table.addNewCol();后第一行应该是三列,此时执行table.getRow(0).getCell(2);获取第一行的第三列的时候报错;java.lang.IndexOutOfBoundsException: Index: 2, Size: 1

参考技术A

1.下载

下载3.8beta4版本,请记得一定要下载该版本,其他版本读取word模板并改写内容生成新的文件后,打开新文件时会提示“word无法读取文档,文档可能损坏。”

2.集成到项目

这一步很简单,只要把下载后解压得到的poi-3.8-beta4-20110826.jar和poi-scratchpad-3.8-beta4-20110826.jar两个文件复制到java web项目的lib目录下就行了

3.制作word模板

把需要变动的值全部用代码来代替,例如你需要改变名称的值,则可以在模板中用name来表示。详细见附件中的doc文件。

4.调用接口方法实现对word的读写操作

整个过程就是先读取模板,然后修改内容,再重新生成新的文档保存到本地或者输出文件流提供下载,下面分别是生成新文档和输出文件流两种方式的代码片断,详细的代码请见下列代码中的readwriteWord()两个重载方法。

以上是关于Java POI 如何操作word 格式的主要内容,如果未能解决你的问题,请参考以下文章

Java操作Poi--word图表中颜色的设置

关于用poi操作word

java poi XWPFTable操作word表格的问题?

java poi xwpf操作word生成一个表格怎么合并单元格,求大神指导!

数据导出生成word附件使用POI的XWPFTemplate对象

java程序,使用poi,用word模板,如何在分页后重复展示表头