Wps二次开发(POI)

Wps二次开发(POI)

一、POI的介绍

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对办公Office格式档案读和写的功能。以下是POI的几个重要组成部分,以及各组件的功能概述。
HSSF:WPS表格和Excel 97-2003(.xls),基于BIFF8格式的JAVA接口。
XSSF:WPS表格和Excel 2007+(.xlsx),基于OOXML格式的JAVA接口。
HWPF:WPS文字和Word 97-2003(.doc),基于BIFF8格式的JAVA接口。
XWPF:WPS文字和Word 2007+(.docx),基于OOXML格式的JAVA接口。
HSLF:提供读写Microsoft PowerPoint格式档案的功能。
HDGF:提供读Microsoft Visio格式档案的功能。
HPBF:提供读Microsoft Publisher格式档案的功能。
HSMF:提供读Microsoft Outlook格式档案的功能。
下面我们对最常用的HSSF和HWPF进行入门基础的介绍讲解。

二、环境搭建设置

1需要的环境搭建

需要用到的工具有Eclipse3.7和JDK1.6

2需要的类库导入

          打开Eclipse 
           依次点击File->New->Java Project 
           输入项目名称,本例中设置为POIExample

Wps二次开发(POI)_第1张图片

          单击完成 

在项目上点击右键->New->Folder 

输入文件夹名称MyPoi

我们现在需要添加Poi-3.7包

在项目上点击右键->Porpertiex
在弹出框左边选择中->Java Build Path,右边页面选中Libraries,点开选择增加包的路径文件Add External JARs...

Wps二次开发(POI)_第2张图片
          将下载的POI-3.7包加载上去

POI对文档的创建、写入、读取

1创建WPS表格、文字 (样例:CreateETandWPS.java)

首先创建名为POIExample的项目,从中在F盘根目录下创建名为ETExample的WPS表格文件和名为WPSExample的WPS文字文件。

代码如下:

          

1. FileOutputStream ETfile;

2. FileOutputStream WPSfile;

3. ETfile = new FileOutputStream("F:/ETExample.et");

4. WPSfile= new FileOutputStream("F:/WPSExample.doc");

5. ETfile.close();

6. WPSfile.close();

2在创建的文档中写入内容(样例:WriteETandWPS.java)

在生成的文件中插入文字内容,在ETExample表格第一个表中B2单元格中插入“我是表格内容”的文字。在WPSExample文档文件中插入“我是文字内容”的文字。最后保存退出。

代码如下:

          

1. WPS表格写入///

2. HSSFWorkbook wb = new HSSFWorkbook(); //创建一个空白的工作簿对象

3. HSSFSheet st = wb.createSheet("表格工作表第1页"); //基于上面的工作簿创建属于此工作簿的工作表名为"表格工作表第1页"

4. HSSFRow row = st.createRow(0); //创建属于上面工作表的第1行,参数从0开始可以是0~65535之间的任何一个

5. HSSFCell cell = row.createCell((short)1); //创建属于上面行的单元格,参数从0开始可以是0~255之间的任何一个,

6. cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置此单元格的格式为文本,此句可以省略,WPS表格会自动识别。

7. cell.setCellValue(new HSSFRichTextString("我是表格内容")); //直接在上面定义好的单元格输入内容("我是表格内容"),

8. FileOutputStream ETFile;

9. ETFile = new FileOutputStream("F:/ETExample.et"); //创建一个文件输出流,指定到F盘根目录下的ETExample.et空白的表格文件

10. wb.write(ETFile); //把工作表内容写到流里

11. ETFile.close(); //记得手动关闭流,POI不关闭用户打开的流。

12. WPS文字写入///

13. String str="我是文字内容"; //需要输入WPS文字里的内容

14. writeWPS("F:/WPSExample.doc",str); //调用写入的方法

15. /writeWPS方法//

16. byte b[] = string.getBytes("GBK"); //字符集的类型为"GBK" 

17. ByteArrayInputStream bais = new ByteArrayInputStream(b); //创建一个字符数组输入对象

18. POIFSFileSystem fs = new POIFSFileSystem(); //创建POI文件集对象

19. DirectoryEntry directory = fs.getRoot(); //获取文件录入节点

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

21. //创建文件对象

22. FileOutputStream ostream = new FileOutputStream(path);

23. //设置输出流对象,参数为地址

24. fs.writeFilesystem(ostream); //将文件内容写入流,参数为输出流

25. bais.close(); //关闭流对象

26. ostream.close(); 

3读取出文档中的信息内容(样例:ReadETandWPS.java)

在Eclipse控制台中输出ETExample第一个表B2的内容以及WPSExample文档中的内容。

代码如下:

          

1. ///ET表格读取内容/

2. FileInputStream ETreadFile = new FileInputStream("F:/ETExample.et");

3. //指定要读取的文件,本例使用之前生成的ETExample.et

4. HSSFWorkbook wb = new HSSFWorkbook(ETreadFile); 

5. //创建一个工作表对象,从指定的文件流中创建,即上面指定了的文件流

6. HSSFSheet st = wb.getSheet("表格工作表第1页"); 

7. //获取名称为"表格工作表第1页"的工作表,可以用getSheetAt(int)方法取得Sheet

8. HSSFRow row = st.getRow(0); 

9. //获得第一行,同上,如果此行没有被创建过则抛出异常

10. HSSFCell cell = row.getCell((short) 1); 

11. //获取第一个单元格,如果没有被创建过则抛出异常

12. System.out.println(cell.getRichStringCellValue()); 

13. //把cell中的内容按字符串方式读取出来,并显示在控制台上

14. ETreadFile.close(); //记得关闭流 

15. //WPS文字读取内容

16. FileInputStream WPSreadFile=newFileInputStream("F:/WPSExample.doc"); 

17. //指定要读取的文件,本例使用之前生成的WPSExample.wps

18. HWPFDocument hDocument= new HWPFDocument(WPSreadFile); //创建文档对象

19. Range rang= hDocument.getRange(); //定义文档Range,获得区域String string=rang.text(); //获得文档内容

20. System.out.println(string); //把文档中的内容读取出来,并显示在控制台上

21. WPSreadFile.close(); //记得关闭流

POI对文档的格式、方法

1对文档中的格式编辑(样例:SpecialPOIExample.java)

对ETExample表格文件第一个表B2单元格的边框、字体及颜色进行设置。

B2单元格效果为:纵向显示文字、背景颜色为红色、字体颜色为黄色。

对SpecialPOIExample.wps文档文件里的文字内容修改成自己想要的内容。

把文档里的文字内容“我是文字内容”改成“这是文字信息”。

代码如下:

   

1. WPS表格格式设置/

2. FileInputStream ETreadFile = new FileInputStream("F:/ETExample.et");

3. //指定要读取的文件,本例使用之前生成的ETExample.et

4. HSSFWorkbook wb = new HSSFWorkbook(ETreadFile); 

5. //创建一个工作表对象,从指定的文件流中创建,即上面指定了的文件流

6. HSSFSheet st = wb.getSheet("表格工作表第1页"); 

7. //获取名称为"表格工作表第1页"的工作表,可以用getSheetAt(int)方法取得Sheet

8. HSSFRow row = st.getRow(0); 

9. //获得第一行,同上,如果此行没有被创建过则抛出异常

10. HSSFCell cell = row.getCell((short) 1); 

11. //获取第一个单元格,如果没有被创建过则抛出异常

12. System.out.println(cell.getRichStringCellValue()); 

13. //把cell中的内容按字符串方式读取出来,并显示在控制台上

14. ETreadFile.close(); //记得关闭流

15. //设置字体

16. HSSFFont font=wb.createFont(); //定义字体格式对象

17. font.setFontName("宋体"); //字体为宋体

18. font.setColor(HSSFColor.YELLOW.index); //字体颜色为黄色

19. //设置单元格

20. HSSFCellStyle cellStyle=wb.createCellStyle(); //设置单元格样式对象

21. cellStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE); //设置单元格低边框样式

22. cellStyle.setBorderLeft((short)1); //设置单元格左边框

23. cellStyle.setBorderRight((short)1); //设置单元格右边框

24. cellStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE); //设置单元格上边框

25. cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //设置单元格填充方式

26. cellStyle.setFillForegroundColor(HSSFColor.RED.index); //设置单元格背景颜色

27. cellStyle.setRotation((short)90); //设置内容旋转90度,达到竖排显示效果

28. cellStyle.setFont(font); //将字体对象定义到单元格样式中

29. cell.setCellStyle(cellStyle); //设置定义的单元格格式赋予cell单元格对象

30. FileOutputStream fos=new FileOutputStream("F:/ETExample.et"); //输出流对象到指定文档 

31. wb.write(fos); //定义的写入文档

32. fos.flush(); //完成输出流

33. fos.close(); //关闭流

34. WPS文字格式设置/

35. HWPFDocument hDocument=new HWPFDocument(new FileInputStream("F:/WPSExample.doc"));

36. //定义输入流自定文件

37. Range range= hDocument.getRange(); //获取Range对象

38. range.replaceText("我是文字内容","这是文字信息"); //设置更改内容

39. String str=range.text(); //定义内容为字符串类型

40. writeWPS("F:/WPSExample.doc",str); //调用写入方法将指定内容写入到指定文档中

2个别特殊例子(样例:PictureOut.java)

在F盘根目录下SpecialPOIExample.wps包含图片的WPS文字文档,从这个文档中把图片提取出来另存成img.jpg图片文件在F盘根目录下。

代码如下:

1. 

2. String savePath= "F:\\";                                   //定义路径对象

3.     String docFile= savePath+ "SpecialPOIExample.wps";          //定义文件名+路径对象

4.     String imgFile= savePath+ "img.jpg";                       //定义图片名+路径对象

5.     FileInputStream file=new FileInputStream(docFile);          //定义输入流对象

6.     HWPFDocument poiDoc = new HWPFDocument(file);               //定义文档对象

7.     List picList = poiDoc.getPicturesTable().getAllPictures();  //定义获取文档图片对象集

8.     Picture picture = (Picture) picList.get(0);     //定义图片对象为图片集的第一个图片       picture.writeImageContent(new FileOutputStream(imgFile));       

9. //将图片对象输出到指定图片名+路径

10. 

11. 

你可能感兴趣的:(Wps二次开发(POI))