最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场,几乎没有人用这个版本了, 所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的文字内容即可,其中的文字样式、图片等信息可以忽略,也不用直接操作 word 文件, 所以我们选择 用 apache 的 POI 进行读取。
读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个 jar 包即可, 而 2007 版本(.docx)就麻烦多,我说的这个麻烦不是我们写代码的时候麻烦,是要导入的 jar 包比较的多,有如下 7 个之多:
1. openxml4j-bin-beta.jar
2. poi-3.5-beta6-20090622.jar
3. poi-ooxml-3.5-beta6-20090622.jar
4 .dom4j-1.6.1.jar
5. geronimo-stax-api_1.0_spec-1.0.jar
6. ooxml-schemas-1.0.jar
7. xmlbeans-2.3.0.jar
其中 4-7 是 poi-ooxml-3.5-beta6-20090622.jar 所依赖的 jar 包(在 poi-bin-3.5-beta6-20090622.tar.gz 中的 ooxml-lib 目录下可以找到)。
编写代码之前我们得先下载所需要的 jar 包, 我们只需下载 poi-bin-3.5-beta6-20090622.tar.gz 和 openxml4j-bin-beta.jar 即可,因为所需要的其他 jar 包都能在 poi-bin-3.5-beta6-20090622.tar.gz 中找到, 下面是下载地址:
poi-bin-3.5-beta6-20090622.tar.gz:http://apache.etoak.com/poi/dev/bin/poi-bin-3.5-beta6-20090622.tar.gz
openxml4j-bin-beta.jar:http://mirror.optus.net/sourceforge/o/op/openxml4j/openxml4j-bin-beta.jar
下方是读取 word 文件的 Java 代码,值得注意的是: POI 在读取 word 文件的时候不会读取 word 文件中的图片信息, 还有就是对于 2007 版的 word(.docx), 如果 word 文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。
以下是Java对几种文本文件内容读取代码。其中,OFFICE文档(WORD,EXCEL)使用了POI控件,PDF使用了PDFBOX控件。 WORD Java代码 package textReader; import java.io.*; import org.apache.poi.hwpf.extractor.WordExtr
以下是Java对几种文本文件内容读取代码。其中,OFFICE文档(WORD,EXCEL)使用了POI控件,PDF使用了PDFBOX控件。 WORD Java代码 package textReader; import java.io.*; import org.apache.poi.hwpf.extractor.WordExtractor; public class WordReader { public WordReader(){ } /** * @param filePath 文件路径 * @return 读出的Word的内容 */ public String getTextFromWord(String filePath){ String result = null; File file = new File(filePath); try{ FileInputStream fis = new FileInputStream(file); WordExtractor wordExtractor = new WordExtractor(fis); result = wordExtractor.getText(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }; return result; } } EXCEL Java代码 package textReader; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException;
public class ExcelReader { @SuppressWarnings("deprecation") /** * @param filePath 文件路径 * @return 读出的Excel的内容 */ public String getTextFromExcel(String filePath) { StringBuffer buff = new StringBuffer(); try { //创建对Excel工作簿文件的引用 HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath)); //创建对工作表的引用。 for (int numSheets = 0; numSheets < wb.getNumberOfSheets(); numSheets++) { if (null != wb.getSheetAt(numSheets)) { HSSFSheet aSheet = wb.getSheetAt(numSheets);//获得一个sheet for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) { if (null != aSheet.getRow(rowNumOfSheet)) { HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //获得一个行 for (int cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) { if (null != aRow.getCell(cellNumOfRow)) { HSSFCell aCell = aRow.getCell(cellNumOfRow);//获得列值 switch(aCell.getCellType()){ case HSSFCell.CELL_TYPE_FORMULA: break; case HSSFCell.CELL_TYPE_NUMERIC: buff.append(aCell.getNumericCellValue()).append('\t');break; case HSSFCell.CELL_TYPE_STRING: buff.append(aCell.getStringCellValue()).append('\t');break; } } } buff.append('\n'); } } } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buff.toString(); } }
PDF Java代码
package textReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.pdfbox.pdfparser.PDFParser; import org.pdfbox.pdmodel.PDDocument; import org.pdfbox.util.PDFTextStripper; public class PdfReader { public PdfReader(){ } /** * @param filePath 文件路径 * @return 读出的pdf的内容 */ public String getTextFromPdf(String filePath) { String result = null; FileInputStream is = null; PDDocument document = null; try { is = new FileInputStream(filePath); PDFParser parser = new PDFParser(is); parser.parse(); document = parser.getPDDocument(); PDFTextStripper stripper = new PDFTextStripper(); result = stripper.getText(document); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { try {is.close();}catch(IOException e){e.printStackTrace();} } if (document != null) { try{document.close();}catch (IOException e){e.printStackTrace();} } } return result; } }
package textReader; import java.io.*; public class TxtReader { public TxtReader() { } /** * @param filePath 文件路径 * @return 读出的txt的内容 */ public String getTextFromTxt(String filePath) throws Exception {
FileReader fr = new FileReader(filePath); BufferedReader br = new BufferedReader(fr); StringBuffer buff = new StringBuffer(); String temp = null; while((temp = br.readLine()) != null){ buff.append(temp + "\r\n"); } br.close(); return buff.toString(); } }
package textReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultStyledDocument; import javax.swing.text.rtf.RTFEditorKit;
public class RtfReader { public RtfReader(){ } /** * @param filePath 文件路径 * @return 读出的rtf的内容 */ public String getTextFromRtf(String filePath) { String result = null; File file = new File(filePath); try { DefaultStyledDocument styledDoc = new DefaultStyledDocument(); InputStream is = new FileInputStream(file); new RTFEditorKit().read(is, styledDoc, 0); result = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1")); //提取文本,读取中文需要使用ISO8859_1编码,否则会出现乱码 } catch (IOException e) { e.printStackTrace(); } catch (BadLocationException e) { e.printStackTrace(); } return result; } }
package textReader; import java.io.*;
public class HtmlReader { public HtmlReader() { } /** * @param filePath 文件路径 * @return 获得html的全部内容 */ public String readHtml(String filePath) { BufferedReader br=null; StringBuffer sb = new StringBuffer(); try { br=new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "GB2312")); String temp=null; while((temp=br.readLine())!=null){ sb.append(temp); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } /** * @param filePath 文件路径 * @return 获得的html文本内容 */ public String getTextFromHtml(String filePath) { //得到body标签中的内容 String str= readHtml(filePath); StringBuffer buff = new StringBuffer(); int maxindex = str.length() - 1; int begin = 0; int end; //截取>和<之间的内容 while((begin = str.indexOf('>',begin)) < maxindex){ end = str.indexOf('<',begin); if(end - begin > 1){ buff.append(str.substring(++begin, end)); } begin = end+1; }; return buff.toString(); } }
|
分享到:
相关推荐
JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)
java读写Excel,POI.JAR,Word内容读取
java 利用POI读取Word文件中的内容 java 利用POI读取Word文件中的内容
Java读取Word中的表格(Excel),并导出文件为Excel
包括中文字符处理,直接是个工程包,可以直接用, 主要用到的包 *需要引入的包(附件中都在) ... * itextpdf-5.4.2.jar * pdfbox-app-1.8.2.jar * antlr-2.7.6.jar * chardet-1.0.jar * cpdetector_1.0.8.jar
Java通过POI读取Excel遍历数据,根本word模板批量生成word文档,demo可运行,可根据需求修改
利用POI读取excel写入到word 利用POI读取excel写入到word 利用POI读取excel写入到word,压缩包里包含了jar包
java POI完整示例,POI将word转HTML,数据库倒出数据到Excel等
Java用poi读取excel文件.pdf
poi.zip java读取excel文件,其中bin压缩文件中含有jar包,eclipse导入时可直接使用;src压缩文件含有java源代码,需要阅读源码的童鞋可以下载使用
Java读取Word文档中指定位置(可以自己自定义位置)的表格数据或文本内容 * @param filePath 文档路径 * @param start 指定位置开始读取表格数据的该位置上的字符串 * @param end 指定位置开始结束读取表格数据的该...
使用Java读取Excel文件的内容,主要是使用POI框架,可以读取最新的Excel文件xlsx后缀文件,即2007版本之后的。
java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)iText-2.0.8.jar core-renderer.jar iTextAsian.jar iTextAsianCmaps.jar jsoup-1.8.1.jar
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
文档详细介绍了java中创建和读取excel的方法,非常实用,特此推荐。
java 读取 word poi用到的jar包文件
JAVA利用poi完成word转pdf,内容包括两个现成工具类和使用到的所有jar包,易用简单,word转pdf在实际项目中有很多使用,工具类中已经包括了字节流,以及变参的替换
使用POI和JACOB分别读取Word文件文本内容;
这是一个POI读取word 2003 和 word 2007的例子 是一个Eclipse工程 下载后直接导入工程 运行 src 目录下的 Test java 类即可 这个 rar 包中包含着 POI 读取word 2003 和 word 2007 所需要的 jar 包 也有需要读取的 ...
java开发中可能会用到的jar包 OFFICE文档(WORD,EXCEL)使用了POI控件,PDF使用了PDFBOX控件