java 读取word内容

这篇具有很好参考价值的文章主要介绍了java 读取word内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接到一个任务,要读取doc文件的内容。解析里面的内容,进行一个处理和返回。

读取doc:

看了

很多文章,基本都是:

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class WordImportUtils {

    public static String readWordFile(String path) {
        File file = new File(path);
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream((file.getAbsolutePath()));
            HWPFDocument document = new HWPFDocument(fileInputStream);
            WordExtractor extractor = new WordExtractor(document);
            return extractor.getText();//此处还有很多别的方法可以使用
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fileInputStream != null){
                try {
                    fileInputStream.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
        return "";
    }

    public static void main(String args[]) throws Exception {
        String path="D:\\tmp\\invest.doc";
        String content = readWordFile(path);
        System.out.println(content);
    }

}
  • extractor对象的几个get方法说明:
    • getText() :返回String,全文内容
    • getMainTextboxText() 返回String[],读取的是多个文本框中的内容
    • getParagraphText() 返回String[],读取的是多个自然段的内容
  • 读取的图片都没了,表格只保留了文字部分,格式都没有了。其余的格式(换行、回车等)均被保留

里面
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

这两行报错。

看了下引用:

    implementation 'org.apache.poi:poi:3.16'
    implementation 'org.apache.poi:poi-ooxml:3.16'

细看了下代码,确实没有。就直接搜 WordExtractor

原来是少了:poi-scratchpad 的引用  引用版本查询

implementation 'org.apache.poi:poi-scratchpad:3.16'

这样就正常。 

如果是docx或者pdf格式怎么处理呢?

读取docx

import org.apache.pdfbox.io.RandomAccessBuffer;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class WordImportUtils {

    public static void main(String args[]) throws Exception {
        String path="D:\\tmp\\invest2.docx";
        String docx = readWord(path);
        System.out.println(docx);
    }
    
    public static String readWord(String path) throws Exception {
        File file = new File(path);
        String suffix =  StringUtils.substringAfterLast(path, ".");
        FileInputStream fileInputStream = new FileInputStream((file.getAbsolutePath()));
        return readWord(fileInputStream, suffix);
    }

    public static String readWord(InputStream inputStream, String suffix) throws Exception{
        if ("doc".equals(suffix)) {
            HWPFDocument document = new HWPFDocument(inputStream);
            WordExtractor extractor = new WordExtractor(document);
            return extractor.getText();
        } else if ("docx".equals(suffix)) {
            OPCPackage opcPackage = OPCPackage.open(inputStream);
            POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
            return extractor.getText();
        } else if("pdf".equals(suffix)){
            RandomAccessBuffer rab = new RandomAccessBuffer(inputStream);
            PDFParser pdfParser = new PDFParser(rab);
            pdfParser.parse();
            PDDocument document = pdfParser.getPDDocument();
            // 获取页码
            int pages = document.getNumberOfPages();
            PDFTextStripper stripper = new PDFTextStripper();
            // 设置按顺序输出
            stripper.setSortByPosition(true);
            stripper.setStartPage(1);
            stripper.setEndPage(pages);
            return stripper.getText(document);
        }else{
            return null;
        }
    }

   

}

pdf的引用包:

    implementation 'org.apache.pdfbox:fontbox:2.0.22'
    implementation 'org.apache.pdfbox:pdfbox:2.0.22'

文件上传后读取

controller

@ApiOperation("读取word")
@RequestMapping(value = "/extractWordFile", method = RequestMethod.POST)
public ResultVO extractWordFile(@RequestPart("file") MultipartFile file) throws Exception {
    Map<String, Object> data = importDocService.extractWordFile(file);
    return ResultVO.createSuccess(data);
}

service

@Service
public class ImportDocService {
    private static final Logger logger = LoggerFactory.getLogger(VisitImportDocService.class);

    public Map<String, Object> extractWordFile(MultipartFile file) throws Exception{
        String fileSuffix = StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
        String data = WordImportUtils.readWord(file.getInputStream(), fileSuffix);
        // 根据实际的要求去获取到副标题和内容
        String subFirstFix = "";
        String content = "";
        Map<String, Object> result = new HashMap<>();
        result.put("subHead", subFirstFix);
        result.put("content", content);
        return result;
    }

}

总结:

        读取doc文件主要是 poi-scratchpad的正确引入。这边主要是处理文本的。后续有需要处理其它的,再进行添加处理文章来源地址https://www.toymoban.com/news/detail-802244.html

到了这里,关于java 读取word内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ios 实现PDF,Word,Excel等文档类型的读取与预览

    最近正在研发的项目有一个需求: 允许用户将iCloud中的文档上传,实现文件的流转。 以前接触的项目对于资料类的上传大多是仅限于图片与视频。对于文档类(PDF, Word, Excel, Text等), 因苹果的沙箱环境限制,想要读取文件是无法实现的。目前虽然可以支持选择文件,但只能通

    2024年02月06日
    浏览(34)
  • Java Word提取内容

    2024年02月13日
    浏览(26)
  • java读取txt文件内容

    有一个txt文件,需要按行读取内容,并按逗号分隔 共19条数据,故输出19。 大家还有什么好的读取方法吗(有没有直接读取int的方法)?可以教教我吗?

    2024年02月13日
    浏览(39)
  • java 读取pdf文件内容

    https://blog.csdn.net/ThinkPet/article/details/131256428

    2024年02月08日
    浏览(38)
  • java读取文件并输出内容

    方法一:使用BuffererReader.继承Reader类 方法二: 使用FileInputStream类

    2024年02月15日
    浏览(35)
  • Java poi之word文本图片内容提取

    应公司需求,需实现以下功能 word文本内容的替换; word文本内容的提取; word文档中图片的提取存放 此文章将使用Apache POI实现Word文档中文本内容及图片的提取; Apache POI 是基于 Office Open XML 标准(OOXML)和 Microsoft 的 OLE 2 复合文档格式(OLE2)处理各种文件格式的开源项目。

    2024年02月10日
    浏览(42)
  • java通过url读取文件内容

     使用java获取远程服务器的文件,并读取内容(该文件可以通过Url直接获取) 使用的时候稍作修改,将inputLine赋值,然后使用,否则直接在下面调用为nul,因为循环过后inputLine变成null!!!(按行读取)

    2024年02月12日
    浏览(46)
  • 通过Java读取csv文件内容

    1、通过 FileReader(String fileName) 读取整个文件,并通过 BufferedReader(Reader in) 作为每行的缓冲; 2、在通过 readLine() 读取每行内容,通过空格作为分隔符,每行转为数组,并存在 ListString[] 列表中; 3、最后打印 csv文件中的内容。 csv 文件内容如下: 打印的代码如下: 输出的内容

    2024年02月15日
    浏览(28)
  • java中按行读取文件内容

          java中按行来读取文件内容,一般对文件也是又要求的,比如文件编码utf-8,内容是按行可读,而不是一堆字节码。这类文件,我们按行读取,主要是方便快速查看内容,并且用这些内容来作别的用途,这类文件内容不宜过多,否则加载容易出现意想不到的问题,比如内

    2024年02月03日
    浏览(29)
  • Java按行读取文件文本内容

    在工作和学习中,有时候会有一些场景,代码需要配合读取文件来执行,比如:读文件数据,来进行计算、组装SQL、更新操作...... 下面我们来讨论下,在Java中按行读取文件文件内容的方式有哪些? 读取的文件内容 测试代码 输出结果 分析:虽然读取1个字符,但每行后面可能

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包