java如何读取doc文件

问题描述

使用java如何读取doc文件,保证不会乱码

解决方案

如果不需要把图片读取出来,可以用下面的方法 public static void testWord1(){ try { //word 2003: 图片不会被读取 InputStream is = new FileInputStream(new File("c:\a.doc")); WordExtractor ex = new WordExtractor(is); String text2003 = ex.getText().trim(); System.out.println(text2003); //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后 // OPCPackage opcPackage = POIXMLDocument.openPackage("c:\a.doc"); // POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage); // String text2007 = extractor.getText(); //System.out.println(text2007); } catch (Exception e) { e.printStackTrace(); } 如果是word2003用前半部分如果是2007用后半部分
解决方案二:
没什么用,表格和图片都读不了。连最基本的格式都读不出来。
解决方案三:
这种问题,明显是查API就能解决的事!
解决方案四:
使用poi:package org.apache.poi.hwpf;19 20 import org.apache.poi.hwpf.model.FileInformationBlock;21 import org.apache.poi.poifs.filesystem.DocumentEntry;22 import org.apache.poi.poifs.filesystem.POIFSFileSystem;23 import org.apache.poi.POIDataSamples;24 25 26 public final class HWPFDocFixture27 {28 public static final String DEFAULT_TEST_FILE = "test.doc";29 30 public byte[] _tableStream;31 public byte[] _mainStream;32 public FileInformationBlock _fib;33 private String _testFile;34 35 public HWPFDocFixture(Object obj, String testFile)36 {37 _testFile = testFile;38 }39 40 public void setUp()41 {42 try43 {44 POIFSFileSystem filesystem = new POIFSFileSystem(45 POIDataSamples.getDocumentInstance().openResourceAsStream(_testFile));46 47 DocumentEntry documentProps =48 (DocumentEntry) filesystem.getRoot().getEntry("WordDocument");49 _mainStream = new byte[documentProps.getSize()];50 filesystem.createDocumentInputStream("WordDocument").read(_mainStream);51 52 // use the fib to determine the name of the table stream.53 _fib = new FileInformationBlock(_mainStream);54 55 String name = "0Table";56 if (_fib.getFibBase().isFWhichTblStm())57 {58 name = "1Table";59 }60 61 // read in the table stream.62 DocumentEntry tableProps =63 (DocumentEntry) filesystem.getRoot().getEntry(name);64 _tableStream = new byte[tableProps.getSize()];65 filesystem.createDocumentInputStream(name).read(_tableStream);66 67 _fib.fillVariableFields(_mainStream, _tableStream);68 }69 catch (Throwable t)70 {71 t.printStackTrace();72 }73 }74 75 public void tearDown()76 {77 }78 79 }
解决方案五:
http://download.csdn.net/detail/hcs371239924/3761147
解决方案六:
如果只有文字,没有图片、表格等可以用下面的方法先下载jacobhttp://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368需要将acob-1.15-M4-x86.dll放在system32和jdk的bin下先将word文档转成txt,然后从txt中读取import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import com.jacob.com.Variant;public class WordReader1 { public static void extractDoc(String inputFIle, String outputFile) { boolean flag = false; // 打开Word 应用程序 ActiveXComponent app = new ActiveXComponent("Word.Application"); try { // 设置word 不可见 app.setProperty("Visible", new Variant(false)); // 打开word 文件 Dispatch doc1 = app.getProperty("Documents").toDispatch(); Dispatch doc2 = Dispatch.invoke(doc1,"Open",Dispatch.Method,new Object[] { inputFIle, new Variant(false), new Variant(true) }, new int[1]).toDispatch(); // 作为txt 格式保存到临时文件 Dispatch.invoke(doc2, "SaveAs", Dispatch.Method, new Object[] {outputFile, new Variant(7) }, new int[1]); // 关闭wordVariant f = new Variant(false); Dispatch.call(doc2, "Close", f); flag = true; } catch (Exception e) { e.printStackTrace(); } finally { app.invoke("Quit", new Variant[] {}); } if (flag == true) { System.out.println("Transformed Successfully"); } else { System.out.println("Transform Failed"); } } public static void main(String[] args) { WordReader1.extractDoc("c:/a.doc", "c:/a.txt");}}
解决方案七:
POI 设置编码

时间: 2024-11-02 02:22:42

java如何读取doc文件的相关文章

Android如何读取doc文件

在Android中读取doc文件需要用第三方jar包tm-extractors-0.4.jar,读取的过程很简单 和普通的文件流操作基本一样,下面写一个简单的例子: package com.word.read; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import org.textmining.text.extraction.WordExtractor;

java遍历读取xml文件内容_java

本文实例讲解了java遍历读取xml文件内容的详细代码,分享给大家供大家参考,具体内容如下 package test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; imp

java如何将doc文件中的内容按照原样输出到jsp页面上

问题描述 java如何将一个doc文件中的内容按照原来的样式排版输出到页面上 如果doc文件中只包含文字的话就好弄了,但是文件中可能包含图片,表格 好纠结 ! 解决方案 将word直接转换成html解决方案二:利用openoffice/jcom可以实现上述功能,自己找找资料,实在不行,你再找我

java 怎样读取txt文件部分字段写入excel

问题描述 java 怎样读取txt文件部分字段写入excel txt文件中有很多行记录,要将"时间"."账号=xxx"."金额=xxx"等几个字段记录下来变成一条记录,然后将这些类似的多条记录存入excel文件中 解决方案 使用poi技术,Apache软件基金会的一个项目,文本文档的格式得有,比如用空格分隔数据项,这样再结合poi就行了! 解决方案二: 可以加我QQ853695231,我帮你实现!! 解决方案三: 要处理的数据为以下数据,需要将数

如何用Java编写读取txt文件中数据并播放出来的软件,该怎么弄???

问题描述 如何用Java编写读取txt文件中数据并播放出来的软件,该怎么弄?? 解决方案 解决方案二:播放出来?不懂解决方案三:javax.sound.midi结合java.io自己找文档看看

数据库读取 asp-求救!怎么读取Doc文件以ntext类型保存在数据库的值

问题描述 求救!怎么读取Doc文件以ntext类型保存在数据库的值 存到数据库中的时候是以DocumentText方法保存上传到数据库中的,现在想读取出来,我是用下面的方法读的 int num = pModel.Reason1.Length; Response.ContentType = "Application/msword"; Response.AddHeader("Content-Disposition", "attachment; filename

java中读取一个文件一中的内容,这个文件的每行都是一个词,在文件二中查找文件一中词出现的次数

问题描述 java中读取一个文件一中的内容,这个文件的每行都是一个词,在文件二中查找文件一中词出现的次数 String lineTxt1 = new String(); String lineTxt2 = new String(); while((lineTxt1 = bufferedReader1.readLine()) != null) { while((lineTxt2 = bufferedReader2.readLine()) != null){ if(lineTxt2.indexOf(

Java中读取属性文件以及做资源国际化

在src下的文件,没写包名   import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; public class Demo {  /**   * ResourceBundle类的主要是读取属性文件,读取属性文件名称的时候可以   * 直接指定属性文件的名称(指定名称是不需要文件的后缀),也可以根据Local   * 所指定的区域码来选取指定的资源文件.   *   * 国际

Java高效读取大文件(转)

1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung(http://www.baeldung.com/) 上"Java--回归基础"系列教程的一部分. 2.在内存中读取 读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: 1 2 3 Files.readLines(new File(path), Charsets.UTF_8);   FileUtils.readLines(new Fil