Java中对于doc、docx、xls、xlsx、pdf内容读取

一、引用所需要的jar包

 <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>4.0.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.23</version>
    </dependency>

二、进行进行导包

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

三、读取文件内容

1、对于doc文件读取文件内容

    /**
     * doc读取文件内容
     * @param file       文件路径
     */
public String searchContent(File file) {
    String text = "";
    try (FileInputStream fis = new FileInputStream(file);
         HWPFDocument document = new HWPFDocument(fis)) {
        Range range = document.getRange();
        text = range.text();
        return text;
    } catch (Exception e) {
        return text;
    }
}

2、docx文件读取文件内容

   /**
     * 读取文件内容并搜索匹配的文本
     *
     * @param file       文件路径
     */
    public String docxSearchContent(File file) {
     	String s = "";
        try {
            FileInputStream fis = new FileInputStream(file);
            XWPFDocument document = new XWPFDocument(fis);
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            for (XWPFParagraph paragraph : paragraphs) {
                String text = paragraph.getText();
                s += text;
            }
            document.close();
            fis.close();
            return s;
        } catch (Exception e) {
            return s;
        }
    }

3、pdf文件内容读取

/**
 * 读取pdf进行匹配
 *
 * @param file 文件
 */
private String pdfSearch(File file) {
    String info = "";
    try {
        //multipartFile为multipartFile文件类型,将文件转化为文件流被PDDocument加载
        PDDocument document = PDDocument.load(file);
        document.getClass();
        //使用PDFTextStripper 工具
        PDFTextStripper tStripper = new PDFTextStripper();
        //设置文本排序,有规则输出
        tStripper.setSortByPosition(true);
        //获取所有文字信息
        info = tStripper.getText(document);
        document.close();
        return info;
    } catch (Exception e) {
        return info;
    }
}

4、xlsx文件内容读取

 /**
 * @param file 文件
 * @return List<List<String>> 
 */
private List<List<String>>  xlsxSearch(File file) {
 List<List<String>> listAll = new ArrayList<>();
    try {
       
        // 1. 创建 Workbook 对象
        Workbook workbook = new XSSFWorkbook(new FileInputStream(file));

        // 2. 创建 Sheet 对象
        // 第一个工作表
        Sheet sheet = workbook.getSheetAt(0);

        // 3. 遍历每一行,获取单元格数据
        for (Row row : sheet) {
            List<String> list = new ArrayList<>();
            for (Cell cell : row) {
                String value;
                cell.setCellType(CellType.STRING);
                if (null == cell) {
                    value = "";
                } else {
                    value = cell.toString();
                }
                list.add(value);
            }
            listAll.add(list);
        }
        // 4. 关闭 Workbook 对象
        workbook.close();
        return listAll;
    } catch (Exception e) {
        log.info("xlsxSearch==[{}]", e);
         return listAll;
    }
}

5、xls文件内容读取

 /**
     * 
     * @param file 文件
     * @return List<List<String>>
     */
private List<List<String>> xlsSearch(File file) {
    List<List<String>> listAll = new ArrayList<>();
    boolean flag = false;
    try {
        // 1. 创建 Workbook 对象
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
        // 2. 创建 Sheet 对象
        // 第一个工作表
        HSSFSheet sheet = workbook.getSheetAt(0);
        // 3. 遍历每一行,获取单元格数据
        for (Row row : sheet) {
            List<String> list = new ArrayList<>();
            for (Cell cell : row) {
                String value;
                cell.setCellType(CellType.STRING);
                if (null == cell) {
                    value = "";
                } else {
                    value = cell.toString();
                }
                list.add(value);
            }
            listAll.add(list);
        }
        // 4. 关闭 Workbook 对象
        workbook.close();
        return listAll;
    } catch (Exception e) {
       return listAll;
    }
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,演示如何在Spring Boot和Vue实现点击查看多种类型文件(包括docdocxxlsxlsxpdf): 1. 后端Spring Boot代码: ```java @RestController @RequestMapping("/api/files") public class FileController { @GetMapping("/{fileName}") public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) throws IOException { // 根据文件名获取文件路径 String filePath = "path/to/files/" + fileName; // 读取文件内容 Path path = Paths.get(filePath); Resource resource = new InputStreamResource(Files.newInputStream(path)); // 设置响应头,让浏览器能够正确解析文件类型 HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=" + fileName); // 返回文件内容和响应头 return ResponseEntity.ok() .headers(headers) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } } ``` 2. 前端Vue代码: ```vue <template> <div> <ul> <li v-for="file in files" :key="file.name"> <a @click="viewFile(file.name)">{{ file.name }}</a> </li> </ul> <div v-if="selectedFile"> <iframe :src="selectedFileUrl" width="100%" height="500px"></iframe> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { files: [], selectedFile: null }; }, methods: { getFileList() { axios.get('/api/files') .then(response => { this.files = response.data; }) .catch(error => { console.error(error); }); }, viewFile(fileName) { this.selectedFile = fileName; } }, computed: { selectedFileUrl() { return `/api/files/${this.selectedFile}`; } }, created() { this.getFileList(); } }; </script> ``` 以上示例,后端的`FileController`定义了一个GET请求的接口`/api/files/{fileName}`,用于下载文件。前端的Vue组件,通过调用后端接口获取文件列表,并为每个文件添加点击事件,点击时将文件名赋值给`selectedFile`,然后通过动态生成的URL来展示文件内容。 请根据实际情况修改代码的文件路径和URL路径。希望对您有所帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值