Java:Java的jar包之POI的简介、安装、使用方法(基于POI将Word、Excel、PPT转换为html)之详细攻略


GBASE培训中心
GBASE培训中心 2022-09-19 13:49:40 51092
分类专栏: 资讯

Java:Java的jar包之POI的简介、安装、使用方法(基于POI的转换—Word、Excel、Ppt等转html)之详细攻略

目录

POI的简介

1、基本功能

POI的安装

POI的使用方法(基于POI的转换—Word、Excel、Ppt等转html)

1、基础案例

1.1、创建Excel 文档—利用Jakarta POI API 创建Excel 文档

1.2、读取Excel文档中的数据

1.3、处理WORD文档

2、进阶案例应用

2.1、word转html

2.2、excel转html

2.3、ppt转html


POI的简介

         Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。Poor Obfuscation Implementation即 简洁版的模糊实现。

1、基本功能

  • HSSF - 提供读写Microsoft Excel格式档案的功能。
  • XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
  • HWPF - 提供读写Microsoft Word格式档案的功能。
  • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
  • HDGF - 提供读写Microsoft Visio格式档案的功能。

POI的安装

下载地址https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.0.0-20180907.tar.gz

  1. % gpg --import KEYS
  2. % gpg --verify downloaded_file.asc downloaded_file
  3. or
  4. % pgpk -a KEYS
  5. % pgpv downloaded_file.asc
  6. or
  7. % pgp -ka KEYS
  8. % pgp downloaded_file.asc

POI的使用方法(基于POI的转换—Word、Excel、Ppt等转html)

1、基础案例

1.1、创建Excel 文档—利用Jakarta POI API 创建Excel 文档

  1. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  2. import org.apache.poi.hssf.usermodel.HSSFSheet;
  3. import org.apache.poi.hssf.usermodel.HSSFRow;
  4. import org.apache.poi.hssf.usermodel.HSSFCell;
  5. import java.io.FileOutputStream;
  6. public class CreateXL {
  7. /** Excel 文件要存放的位置,假定在D盘下*/
  8. public static String -variable">outputFile -operator">= "D:\\test.xls";
  9. public static void main(String argv[]) {
  10. try {
  11. // 创建新的Excel 工作簿
  12. HSSFWorkbook -variable">workbook -operator">= new HSSFWorkbook();
  13. // 在Excel工作簿中建一工作表,其名为缺省值
  14. // 如要新建一名为"效益指标"的工作表,其语句为:
  15. // HSSFSheet sheet = workbook.createSheet("效益指标");
  16. HSSFSheet -variable">sheet -operator">= workbook.createSheet();
  17. // 在索引0的位置创建行(最顶端的行)
  18. HSSFRow -variable">row -operator">= sheet.createRow((short)0);
  19. //在索引0的位置创建单元格(左上端)
  20. HSSFCell -variable">cell -operator">= row.createCell((short)0);
  21. // 定义单元格为字符串类型
  22. cell.setCellType(HSSFCell.CELL_TYPE_STRING);//已过时
  23. // 在单元格中输入一些内容
  24. cell.setCellValue("增加值");
  25. // 新建一输出文件流
  26. FileOutputStream -variable">fOut -operator">= new FileOutputStream(outputFile);
  27. // 把相应的Excel 工作簿存盘
  28. workbook.write(fOut);
  29. fOut.flush();
  30. // 操作结束,关闭文件
  31. fOut.close();
  32. System.out.println("文件生成...");
  33. } catch (Exception e) {
  34. System.out.println("已运行 xlCreate() : " + e);
  35. }
  36. }
  37. }

1.2、读取Excel文档中的数据

读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为test1.xls的Excel文件。

  1. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  2. import org.apache.poi.hssf.usermodel.HSSFSheet;
  3. import org.apache.poi.hssf.usermodel.HSSFRow;
  4. import org.apache.poi.hssf.usermodel.HSSFCell;
  5. import java.io.FileInputStream;
  6. public class ReadXL {
  7. /** Excel文件的存放位置。注意是反斜线*/
  8. public static String -variable">fileToBeRead -operator">= "D:\\test1.xls";
  9. public static void main(String argv[]) {
  10. try {
  11. // 创建对Excel工作簿文件的引用
  12. HSSFWorkbook -variable">workbook -operator">= new HSSFWorkbook(new FileInputStream(fileToBeRead));
  13. // 创建对工作表的引用。
  14. // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
  15. HSSFSheet -variable">sheet -operator">= workbook.getSheet("Sheet1");
  16. // 也可用getSheetAt(int index)按索引引用,
  17. // 在Excel文档中,第一张工作表的缺省索引是0,
  18. // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
  19. // 读取左上端单元
  20. HSSFRow -variable">row -operator">= sheet.getRow(0);
  21. HSSFCell -variable">cell -operator">= row.getCell((short)0);
  22. // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
  23. System.out.println("左上端单元是: " + cell.getStringCellValue());
  24. } catch (Exception e) {
  25. System.out.println("已运行xlRead() : " + e);
  26. }
  27. }
  28. }

1.3、处理WORD文档

  1. import java.io. * ;
  2. import org.apache.poi.hwpf.extractor.WordExtractor;
  3. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  4. import org.apache.poi.hssf.usermodel.HSSFSheet;
  5. import org.apache.poi.hssf.usermodel.HSSFRow;
  6. import org.apache.poi.hssf.usermodel.HSSFCell;
  7. public class TestPoi {
  8. public TestPoi() {}
  9. public static void main(String args[])throws Exception{
  10. FileInputStream -variable">in -operator">= new FileInputStream("D:\\a.doc");
  11. WordExtractor -variable">extractor -operator">= new WordExtractor();
  12. String -variable">str -operator">= extractor.extractText(in);
  13. //System.out.println("the result length is"+str.length());
  14. System.out.println(str);
  15. }
  16. }

2、进阶案例应用

文章参考
https://blog.csdn.net/yjclsx/article/details/51441632
http://blog.csdn.net/z69183787/article/details/17468039

          在现在这个互联网在线时代,java实现在线预览的这个需求,或许是大家都想要的。当然,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,比如永中office、office web 365(http://www.officeweb365.com/)等公司,都有云端在线预览服务,可想而知,这些扩展功能,肯定是需要钱了。
          但是,对于我们学生党,如果想要免费或者DIY,则可以用openoffice,还需要借助其他的工具(例如swfTools、FlexPaper等)才行。实现原理就是:

  • 1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件;
  • 2.通过swfTools将pdf文件转换成swf格式的文件;
  • 3.通过FlexPaper文档组件在页面上进行展示。

          当然如果装了Adobe Reader XI,那把pdf直接拖到浏览器页面就可以直接打开预览,这样就不需要步骤2、3了,前提就是客户装了Adobe Reader XI这个pdf阅读器。
          当然,本篇文章主要介绍的POI,所以,可以通过POI实现word、excel、ppt转html,这样就可以放在页面上了。

2.1、word转html

  1. package wordToHtml;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.InputStream;
  8. import java.util.List;
  9. import javax.xml.parsers.DocumentBuilderFactory;
  10. import javax.xml.transform.OutputKeys;
  11. import javax.xml.transform.Transformer;
  12. import javax.xml.transform.TransformerFactory;
  13. import javax.xml.transform.dom.DOMSource;
  14. import javax.xml.transform.stream.StreamResult;
  15. import org.apache.commons.io.FileUtils;
  16. import org.apache.poi.hwpf.HWPFDocument;
  17. import org.apache.poi.hwpf.converter.PicturesManager;
  18. import org.apache.poi.hwpf.converter.WordToHtmlConverter;
  19. import org.apache.poi.hwpf.usermodel.Picture;
  20. import org.apache.poi.hwpf.usermodel.PictureType;
  21. import org.w3c.dom.Document;
  22. public class PoiWordToHtml {
  23. public static void main(String[] args) throws Throwable {
  24. final String -variable">path -operator">= "D:\\poi-test\\wordToHtml\\";
  25. final String -variable">file -operator">= "人员选择系分.doc";
  26. InputStream -variable">input -operator">= new FileInputStream(path + file);
  27. HWPFDocument -variable">wordDocument -operator">= new HWPFDocument(input);
  28. WordToHtmlConverter -variable">wordToHtmlConverter -operator">= new WordToHtmlConverter(
  29. DocumentBuilderFactory.newInstance().newDocumentBuilder()
  30. .newDocument());
  31. wordToHtmlConverter.setPicturesManager(new PicturesManager() {
  32. public String savePicture(byte[] content, PictureType pictureType,
  33. String suggestedName, float widthInches, float heightInches) {
  34. return suggestedName;
  35. }
  36. });
  37. wordToHtmlConverter.processDocument(wordDocument);
  38. List -variable">pics -operator">= wordDocument.getPicturesTable().getAllPictures();
  39. if (pics != null) {
  40. for (int -variable">i -operator">= 0; i < pics.size(); i++) {
  41. Picture -variable">pic -operator">= (Picture) pics.get(i);
  42. try {
  43. pic.writeImageContent(new FileOutputStream(path
  44. + pic.suggestFullFileName()));
  45. } catch (FileNotFoundException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }
  50. Document -variable">htmlDocument -operator">= wordToHtmlConverter.getDocument();
  51. ByteArrayOutputStream -variable">outStream -operator">= new ByteArrayOutputStream();
  52. DOMSource -variable">domSource -operator">= new DOMSource(htmlDocument);
  53. StreamResult -variable">streamResult -operator">= new StreamResult(outStream);
  54. TransformerFactory -variable">tf -operator">= TransformerFactory.newInstance();
  55. Transformer -variable">serializer -operator">= tf.newTransformer();
  56. serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
  57. serializer.setOutputProperty(OutputKeys.INDENT, "yes");
  58. serializer.setOutputProperty(OutputKeys.METHOD, "html");
  59. serializer.transform(domSource, streamResult);
  60. outStream.close();
  61. String -variable">content -operator">= new String(outStream.toByteArray());
  62. FileUtils.writeStringToFile(new File(path, "人员选择系分.html"), content, "utf-8");
  63. }
  64. }

2.2、excel转html

  1. package excelToHtml;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.util.List;
  10. import javax.xml.parsers.DocumentBuilderFactory;
  11. import javax.xml.transform.OutputKeys;
  12. import javax.xml.transform.Transformer;
  13. import javax.xml.transform.TransformerFactory;
  14. import javax.xml.transform.dom.DOMSource;
  15. import javax.xml.transform.stream.StreamResult;
  16. import org.apache.commons.io.FileUtils;
  17. import org.apache.poi.hssf.converter.ExcelToHtmlConverter;
  18. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  19. import org.apache.poi.hwpf.converter.PicturesManager;
  20. import org.apache.poi.hwpf.converter.WordToHtmlConverter;
  21. import org.apache.poi.hwpf.usermodel.Picture;
  22. import org.apache.poi.hwpf.usermodel.PictureType;
  23. import org.w3c.dom.Document;
  24. public class PoiExcelToHtml {
  25. final static String -variable">path -operator">= "D:\\poi-test\\excelToHtml\\";
  26. final static String -variable">file -operator">= "exportExcel.xls";
  27. public static void main(String args[]) throws Exception {
  28. InputStream input=new FileInputStream(path+file);
  29. HSSFWorkbook excelBook=new HSSFWorkbook(input);
  30. ExcelToHtmlConverter -variable">excelToHtmlConverter -operator">= new ExcelToHtmlConverter (DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() );
  31. excelToHtmlConverter.processWorkbook(excelBook);
  32. List -variable">pics -operator">= excelBook.getAllPictures();
  33. if (pics != null) {
  34. for (int -variable">i -operator">= 0; i < pics.size(); i++) {
  35. Picture -variable">pic -operator">= (Picture) pics.get (i);
  36. try {
  37. pic.writeImageContent (new FileOutputStream (path + pic.suggestFullFileName() ) );
  38. } catch (FileNotFoundException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }
  43. Document -variable">htmlDocument -operator">=excelToHtmlConverter.getDocument();
  44. ByteArrayOutputStream -variable">outStream -operator">= new<

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=2770
赞同 0
评论 0 条
GBASE培训中心L2
粉丝 0 发表 98 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2944
【软件正版化】软件正版化工作要点  2863
统信UOS试玩黑神话:悟空  2823
信刻光盘安全隔离与信息交换系统  2718
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1251
grub引导程序无法找到指定设备和分区  1217
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!