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

单击完成

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

输入文件夹名称MyPoi

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

在项目上点击右键->Porpertiex

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

将下载的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.

java wps 二次开发,Wps二次开发(POI)相关推荐

  1. java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码...

    A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 , ...

  2. SpringBoot实现Java高并发秒杀系统之Service层开发(二)

    继上一篇文章:SpringBoot实现Java高并发秒杀系统之DAO层开发 我们创建了SpringBoot项目并熟悉了秒杀系统的表设计,下面我们将讲解一下秒杀系统的核心部分:Service业务层的开发 ...

  3. java游戏开发入门(二) - 菜单

    java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言   上一章我们创建了一个600x600的 ...

  4. wps之excel学习(二)

    wps之excel学习(二) 数据格式 数据格式

  5. 记京东Java开发实习生二面

    京东Java开发实习生二面已挂,心情虽然失落,但是还是要在这里做一点作结,以便日后做些参考.让每一次失败都变的有意义! 面试流程 这次面试的流程比较简洁,首先问了两道技术问题,然后面试官对于我的简历中 ...

  6. java淘宝客开发(二)

    java淘宝客开发(二) 淘宝客订单获取接口 第三方淘宝客订单接口调用示例 淘宝客订单获取接口 通过接口获取淘宝客订单,非渠道管理模块,只需要淘宝客授权即可.         通过在淘宝联盟开发平台文 ...

  7. java快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码

    获取[下载地址]    A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技 ...

  8. java快速开发平台 二次开发 外包项目利器 springmvc SS-M后台框架源码 (转载)

    获取[下载地址]   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系 ...

  9. 华为Java开发一面二面 附笔试(OD)

    华为Java开发一面二面(OD)4.3 面试的是1-3年工作经验的岗位 一面:45min     主要是问项目和平时用到的一些工具之类的,因为我写的比较少,所以基本上都是问的springboot和sp ...

最新文章

  1. [置顶] AMF序列化为对象和AMF序列化为二进制字节流
  2. 基本类型与字符串之间的转换
  3. nginx(一)安装与命令总结
  4. iptables 范例
  5. hdu 1511(dp)
  6. [云炬创业基础笔记] 第三章测试10~12
  7. oracle rac ora 12560,rac ORA-12541: TNS:no listener问题 非常急!!
  8. 存数字,储未来——新华三2018存储瞄准闪存、海量、AI与超融合
  9. 三千万海外用户的天才程序员之死
  10. oracle对用户的管理
  11. mysql opxe_PXE安装系统
  12. mxnet入门--第5篇
  13. php pdf 生成分页,关于XSL生成PDF分页的问题
  14. 怎么使用java初始化链表_Java链表基本操作和Java.util.ArrayList
  15. [工具] f.lux – 随时间改变屏幕色温护眼
  16. 【阿里云】云解析DNS
  17. android 百度地图驾车导航,使用百度地图API实现驾车导航
  18. mysql释放所有_mysql表空间释放情况汇总
  19. 智慧电厂三维可视化定位技术,高效管控人员/车辆
  20. 使用JS判定PC浏览器和IE浏览器

热门文章

  1. ANTHILL 自动化构建
  2. 正则表达式的基本语法规则
  3. 软件工程知识点总结——第三、四部分
  4. 你真的了解getline()的返回值吗?—— basic_istream::getline() 与 string::getline
  5. 【C语言】数据结构实验报告--单链表
  6. maven 修改maven本地仓库的位置
  7. 数字 IC 技能拓展(1)Xilinx_Vivado_SDK_2019.1 安装详细教程
  8. 视频会议终端到终端的加密
  9. 编写电话号码查询系统
  10. 【论文精读】基于周期编码深度自编码器的心肺音盲单耳声源分离