POI读取word转换html
文章分类:Java编程
apache POI读取word文档的文档比较少,所以只有自己慢慢的摸索,这篇文章也属于比较基础入门的,主要是针对读取word中的图片,以及文字的各种样式,如有不好的地方,请各位多多指教!
Java代码
1./**
2. *
3. */
4.package com.util;
5.
6.import java.io.BufferedWriter;
7.import java.io.File;
8.import java.io.FileInputStream;
9.import java.io.FileNotFoundException;
10.import java.io.FileOutputStream;
11.import java.io.IOException;
12.import java.io.OutputStream;
13.import java.io.OutputStreamWriter;
14.
15.import org.apache.poi.hwpf.HWPFDocument;
16.import org.apache.poi.hwpf.model.PicturesTable;
17.import https://www.sodocs.net/doc/385390536.html,ermodel.CharacterRun;
18.import https://www.sodocs.net/doc/385390536.html,ermodel.Picture;
19.import https://www.sodocs.net/doc/385390536.html,ermodel.Range;
20.
21./**
22. *
23. * @author 张廷下午10:36:40
24. *
25. */
26.public class WordToHtml {
27.
28./**
29. * 回车符ASCII码
30. */
31.private static final short ENTER_ASCII = 13;
32.
33./**
34. * 空格符ASCII码
35. */
36.private static final short SPACE_ASCII = 32;
37.
38./**
JavaToHtml 为了方便在blog中粘贴源代码,特意找了这方面的工具(本来琢磨自己写,可惜能力有限,再次受打击了~~~) JavaToHtml开源,Eclipse Plugin 大家都知道读源代码很累,读乱七八糟的源代码那就想吐了,所以格式化源代码还是很有必要的,不信看看下面的例子。 格式化后的漂亮效果: import java.util.Vector; public class Stack
} } 下面是原版的: import java.util.Vector; public class Stack
// 文件二进制输入流 private InputStream is = null; // 当前的Sheet private int currSheet; // 当前位置 private int currPosition; // Sheet数量 private int numOfSheets; // HSSFWorkbook HSSFWorkbook workbook = null; // 设置Cell之间以空格分割 private static String EXCEL_LINE_DELIMITER = " "; // 设置最大列数 private static int MAX_EXCEL_COLUMNS = 64; // 构造函数创建一个ExcelReader public ExcelReader(String inputfile) throws IOException, Exception { // 判断参数是否为空或没有意义 if (inputfile == null || inputfile.trim().equals("")) { throw new IOException("no input file specified"); } // 取得文件名的后缀名赋值给filetype this.filetype = inputfile.substring(https://www.sodocs.net/doc/385390536.html,stIndexOf(".") + 1); // 设置开始行为0 currPosition = 0; // 设置当前位置为0 currSheet = 0; // 创建文件输入流 is = new FileInputStream(inputfile);
*本事例主要讲了如下几点: * 1:将图片转换为BASE64加密字符串. * 2:将图片流转换为BASE64加密字符串. * 3:将BASE64加密字符串转换为图片. * 4:在jsp文件中以引用的方式和BASE64加密字符串方式展示图片. 首先看工具类: import ; import ; import ; import ; import ; import ; import ; import ; import ; /** * @author IluckySi 1
* @since */ public class ImageUtil { private static BASE64Encoder encoder = new ; private static BASE64Decoder decoder = new ; /** * 将图片转换为BASE64加密字符串. * @param imagePath 图片路径. * @param format 图片格式. * @return */ public String convertImageToByte(String imagePath, String format) { File file = new File(imagePath); BufferedImage bi = null; ByteArrayOutputStream baos = null; String result = null;
try { bi = ImageIO.read(file); baos = new ByteArrayOutputStream(); ImageIO.write(bi, format == null ? "jpg" : format, baos); byte[] bytes = baos.toByteArray(); result = encoder.encodeBuffer(bytes).trim(); "将图片转换为BASE64加密字符串成功!"); } catch (IOException e) { "将图片转换为BASE64加密字符串失败: " + e); } finally { try { if(baos != null) { baos.close(); baos = null; } } catch (Exception e) { "关闭文件流发生异常: " + e); } 3
一、Excel基础 二、HSSF概况 三、通过usermodel读取文件 四、通过usermodel写入文件 五、通过eventusermodel读取文件 六、HSSF电子表格结构 七、通过HPSF读取文档属性 八、文档摘要信息 九、附录 ━━━━━━ 正文: ━━━━━━ 在上一篇文章中,我们介绍了POI项目的基本概念,了解了如何用POI来读写OLE 2复合文档结构,并给出了两个简单的例子:用POI来读写Excel文件的Workbook流。本文继续前文的话题,阐述如何用POI来读取/写入完整的Excel文件。 约定:POI项目2.0版现在已经接近正式发行阶段,开发进度迅速,不断有新的功能集成到原有的系统,同时也有对原有系统的修改。为了保证本文的及时性,本文将按照最近的1.9开发版说明。虽然编译最近的发行版源代码也能正常运行,但现在的代码和2.0的发行版会有一些出入。 一、Excel基础 Microsoft Excel 97文件格式也被称为BIFF8,最近版本的Excel只对该格式作了少量的改动。增加对新格式的支持除了增加项目的复杂性之外,唯一的效果也许只是不得不使每个用户升级代码,没有什么实际的好处。因此,在下文说明中,凡是提到Excel 97格式的地方其实都是指Excel从97到XP的格式。 二、HSSF概况 POI项目实现的Excel 97文件格式称为HSSF——也许你已经猜到,HSSF是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”(微软使某些原本简单的事情过分复杂,同时又过分简单地处理了某些原本需要灵活性的事情,让人不胜佩服!)也
. Word转html存在域代码丢失。 Aspose ,jacob,poi都无法解决 在使用jocob转换成html时域代码会被包裹 可以统一提取出来转换成latex ,latex转换成图片,解决word域代码丢失问题 private void processFormula(List
标签。 为了显示美观,对关键字加粗显示,即在关键字左右加标签。比如: public 对单行注释文本用绿色显示,可以使用标签,形如: //这是我的单行注释! 注意:如果“//”出现在字符串中,则注意区分,不要错误地变为绿色。 不考虑多行注释的问题(/* .... */ 或 /** .... */) 你的任务是:编写程序,把给定的源文件转化为相应的html表达。 【输入、输出格式要求】 与你的程序同一目录下,存有源文件 a.txt,其中存有标准的java源文件。
要求编写程序把它转化为b.html。 例如:目前的 a.txt 文件与 b.html 文件就是对应的。可以用记事本打开b.html查看转换后的内容。用浏览器打开b.html则可以看到显示的效果。 注意:实际评测的时候使用的a.txt与示例是不同的。 【注意】 请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分! 请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 请不要使用package语句。 源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。 a.txt // 我的工具类 public class MyTool { public static void main(String[] args) { int a = 100; int b = 20; if(a>b && true) System.out.println(a); else System.out.println("this! //aaa//kkk"); // 测试注释显示是否正确 } } 代码 package com; import java.io.BufferedReader; import java.io.BufferedWriter;
Java读写Excel之POI入门 Apache POI 是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API。用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)。 如果处理.xlsx、docx、pptx的话可以试试Docx4j 。 ?HSSF -提供读写Microsoft Excel XLS格式档案的功能。 ?XSSF -提供读写Microsoft Excel OOXML XLSX格式档案的功能。 ?HWPF -提供读写Microsoft Word DOC格式档案的功能。 ?HSLF -提供读写Microsoft PowerPoint格式档案的功能。 ?HDGF -提供读Microsoft Visio格式档案的功能。 ?HPBF -提供读Microsoft Publisher格式档案的功能。 ?HSMF -提供读Microsoft Outlook格式档案的功能。 版本:poi-3.8-20120326.jar 1、生成Workbook Java代码
2、生成Workbook OOXML形式(.xlsx) Java代码 3、打开Workbook Java代码
https://www.sodocs.net/doc/385390536.html,/itedu/200707/126842_3.html 一、表达式的组成 1、数字 2、运算符:+ - / * ^ % = 3、圆括号 4、变量 二、运算符优先级 由高到低分别为:+-(正负号)、^、*/%、+-、= 优先级相等的运算符按照从左到右的顺序计算 三、关键技术点 1、确定运算的优先级,从高到低分别为:原子元素表达式,包括数字和变量;括号表达式;一元表达式,取数的负数;指数表达式;乘、除、取模表达式;加、减表达式;赋值表达式。 2、对于每一级别的运算,都由一个方法实现,在方法中先完成比自己高一级别的运算,再处理本级别的运算。因此,在计算整个表达式的主方法中,只需要调用最低级别的运算的实现方法即可。 3、确定表达式中的分隔符,(+、-、*、/、%、^、=、(、)、)。利用这些分隔符将表达式分成多段,每一段叫做一个token,分隔符也算token。 4、用长度为26的int数组vars存储变量的值。 5、Character的isWhitespace方法判断字符是否为空白符,用于去掉表达式中的空白符。 6、Character的isLetter方法判断字符是否为字母,用于提取表达式中的变量 7、Character的isDigit方法判断字符是否为数字,用于获取表达式中的数字 四、演示实例 /** *//** * 文件名ExpressionParser.java */ package book.oo.String; /** *//** * 表达式解析器 * @author joe * */
public class ExpressionParser ...{ //4种标记类型 public static final int NONE_TOKEN = 0; //标记为空或者结束符 public static final int DELIMITER_TOKEN = 1; //标记为分隔符 public static final int VARIABLE_TOKEN = 2; //标记为变量 public static final int NUMBER_TOKEN = 3; //标记为数字 //4种错误类型 public static final int SYNTAX_ERROR = 0; //语法错误 public static final int UNBALPARENS_ERROR = 1; //括号没有结束错误 public static final int NOEXP_ERROR = 2; //表达式为空错误 public static final int DIVBYZERO_ERROR = 3; //被0除错误 //针对4种错误类型定义的4个错误提示 public static final String[] ERROR_MESSAGES = ...{"Syntax Error", "Unbalanced " + "Parentheses", "No Expression Present", "Division by Zero"}; //表达式的结束标记 public static final String EOE = ""\0"; private String exp; //表达式字符串 private int expIndex; //解析器当前指针在表达式中的位置 private String token; //解析器当前处理的标记 private int tokenType; //解析器当前处理的标记类型 private double[] vars = new double[26]; //变量数组 /** * */ public ExpressionParser() { } /** * 解析一个表达式,返回表达式的值 */ public double evaluate(String expStr) throws Exception { double result; this.exp = expStr; this.expIndex = 0; //获取第一个标记 this.getToken(); if (this.token.equals(EOE)) { //没有表达式异常
使用POI读取excel文件内容 package edu.sjtu.erplab.poi;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import https://www.sodocs.net/doc/385390536.html,ermodel.HSSFCell;import https://www.sodocs.net/doc/385390536.html,ermodel.HSSFDateUtil;import https://www.sodocs.net/doc/385390536.html,ermodel.HSSFRow;import https://www.sodocs.net/doc/385390536.html,ermodel.HSSFSheet;import https://www.sodocs.net/doc/385390536.html,ermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/** * 操作Excel表格的功能类*/public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; /** * 读取Excel表格表头的内容* @param InputStream * @return String 表头内容的数组*/ public String[] readExcelTitle(InputStream is) { try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e)