Java实现读取html文本内容并按照格式导出到excel中

 更新时间:2024年02月03日 11:16:52   作者:酱学编程  
这篇文章主要为大家详细介绍了如何使用Java实现读取html文本提取相应内容按照格式导出到excel中,文中的示例代码讲解详细,需要的可以参考下

最近在做一个需求,需要将html文本中的内容提取出来,然后导出到excel里面,实现交代情景,html文本中存在许多标签,且很乱,因此需要之间将标签里面的文本提取出来,再进行处理。

            ............
        String text = Jsoup.parse(content).wholeText();
        // 解析字符串并将数据添加到表格
        String[] dataArray = text.split("\n");
        // 创建Excel工作簿和工作表
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet");

        int rowNum = 0;
        Row row = null;

        for (String data : dataArray) {
        //对每一行数据进行处理,插入到Sheet中
               ............
                row = sheet.createRow(rowNum++);
                // 创建新行并填充数据
                row.createCell(0).setCellValue(entry[0].trim());
                row.createCell(1).setCellValue(entry[1].trim());
        }

        // 导出Excel
             ............ 
    }

1.利用Jsoup解析HTML文档

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version> <!-- 版本号可能需要根据实际情况调整 -->
</dependency>

Jsoup(发音为 “jay-soup”)是一款用于解析HTML文档、从HTML中提取数据和操作HTML的Java库。它提供了简单而直观的API,使得在Java中处理HTML变得非常容易。

Jsoup.parse(content).wholeText(); 这行代码是使用Jsoup库解析HTML内容并提取其中的纯文本信息。

1.Jsoup.parse(content): 这部分代码使用Jsoup的parse方法,将传入的content字符串解析为一个Jsoup的Document对象。Document对象表示整个HTML文档。

2.wholeText(): 一旦解析为Document对象,然后调用wholeText()方法。这个方法用于获取整个文档的纯文本内容,即去除HTML标签后的文本信息。

解析出来的文档里面包含了 /n 等转义字符,可用于后续的字符处理

2.使用 Apache POI 库创建Excel 文档

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.0</version> <!-- 版本号可能需要根据实际情况调整 -->
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.0</version> <!-- 版本号可能需要根据实际情况调整 -->
</dependency>
   // 创建Excel工作簿和工作表
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet");

Workbook 类:

Workbook 是 Apache POI 中表示 Excel 工作簿(Workbook)的接口。

在这里,通过 new XSSFWorkbook() 创建了一个 XSSFWorkbook 对象,XSSFWorkbook 是 Workbook 接口的一个实现,用于处理基于 XML 格式的 .xlsx 文件(Excel 2007及以上版本)。

Sheet 类:

Sheet 是 Workbook 中的一个接口,表示 Excel 工作簿中的一个表单或工作表。

通过 workbook.createSheet(“Sheet”) 创建了一个名为 “Sheet” 的工作表。可以通过不同的工作表名称创建多个工作表,每个工作表包含一组行和列,用于组织和存储数据。

这段代码创建了一个空的 Excel 工作簿,其中包含一个名为 “Sheet” 的工作表。一旦创建了工作簿和工作表,你可以通过 Apache POI 提供的 API 向工作表中添加数据、设置格式、创建图表等。这样你就能够使用 Java 编程来生成、修改和操作 Excel 文档。

3.按照一定规则插入表格数据

    row = sheet.createRow(rowNum++);
    // 创建新行并填充数据
    row.createCell(0).setCellValue(entry[0].trim());
    row.createCell(1).setCellValue(entry[1].trim());

4.导出excel

 /**
     * 将 Workbook 导出到 HttpServletResponse 输出流
     *
     * @param workbook Excel Workbook 对象
     * @param fileName 导出文件名
     */
    public void exportToResponse(Workbook workbook, String fileName) {
        try {
            // 设置响应头
            httpServletResponse.setContentType("application/octet-stream");
            httpServletResponse.setHeader("Content-Disposition", "attachment; filename=" + fileName);

            // 将 Workbook 写入 HttpServletResponse 的输出流
            workbook.write(httpServletResponse.getOutputStream());
            workbook.close();

            // 刷新响应
            httpServletResponse.flushBuffer();
        } catch (IOException e) {
            // 处理异常
            log.error("导出文件{}失败", fileName);
            throw new BusinessException(BusinessError.EXPORT_FILE_FAIL);
        }
    }

代码解析:

httpServletResponse.setContentType(“application/octet-stream”);:

通过 setContentType 方法设置响应的内容类型。在这里,设置为 application/octet-stream,表示二进制流数据。这个 MIME 类型通常用于下载文件,因为它指示浏览器应该处理响应的数据作为二进制流而不是尝试解析它。

httpServletResponse.setHeader(“Content-Disposition”, “attachment; filename=” + fileName);:

通过 setHeader 方法设置响应头的属性。在这里,设置了 Content-Disposition 属性。

Content-Disposition 属性指示浏览器如何处理响应体。在这个上下文中,attachment 表示要将响应作为附件下载,而不是直接在浏览器中打开。filename 参数用于指定下载的文件名。

filename= 后面的部分是具体的文件名,通常是服务器上的文件名或者用户在下载时看到的文件名。

workbook.write(httpServletResponse.getOutputStream());:

使用 Excel Workbook 对象的 write 方法将 Workbook 写入 HttpServletResponse 的输出流。这样,Excel 数据就会以二进制流的形式发送到客户端。

workbook.close();

关闭 Workbook 对象,释放资源。

httpServletResponse.flushBuffer();

刷新响应的缓冲区,确保所有的数据都被写入到输出流。

以上就是Java实现读取html文本内容并按照格式导出到excel中的详细内容,更多关于Java读取html文本内容的资料请关注脚本之家其它相关文章!

相关文章

  • jmeter中json提取器如何提取多个参数值

    jmeter中json提取器如何提取多个参数值

    关于jmeter中的正则表达式及json提取器可以提取响应值,但是实际可以需要上个接口的多个响应值,本文就详细的介绍一下如何使用,感兴趣的可以了解一下
    2021-11-11
  • SpringBoot整合MongoDB实现事务管理

    SpringBoot整合MongoDB实现事务管理

    Spring Boot是一种快速开发Spring应用的方式,它提供了大量的自动配置和默认设置,以简化开发流程,MongoDB是一个基于文档的NoSQL数据库,本文将介绍如何在Spring Boot应用中整合MongoDB,并实现事务管理,需要的朋友可以参考下
    2024-07-07
  • Mybatis-Plus 多表联查分页的实现代码

    Mybatis-Plus 多表联查分页的实现代码

    本篇文章主要介绍了Mybatis-Plus 多表联查分页的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 查看vscode中JDK版本的两个简单方法小结

    查看vscode中JDK版本的两个简单方法小结

    这篇文章主要介绍了查看vscode中JDK版本的两个简单方法,分别是通过命令面板或资源管理器Explorer来查找和设置JDK版本,包括具体步骤和操作说明,需要的朋友可以参考下
    2025-05-05
  • java并发编程专题(二)----如何创建并运行java线程

    java并发编程专题(二)----如何创建并运行java线程

    这篇文章主要介绍了java并发编程如何创建并运行java线程,文中讲解非常详细,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • RestTemplate 401 获取错误信息的处理方案

    RestTemplate 401 获取错误信息的处理方案

    这篇文章主要介绍了RestTemplate 401 获取错误信息的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • spring-boot 如何实现单次执行程序

    spring-boot 如何实现单次执行程序

    这篇文章主要介绍了spring-boot 实现单次执行程序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java Map 按照Value排序的实现方法

    Java Map 按照Value排序的实现方法

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
    2016-08-08
  • Spring Boot项目优雅上线之日志、监控、异常处理最佳实践指南

    Spring Boot项目优雅上线之日志、监控、异常处理最佳实践指南

    要让Spring Boot项目优雅、稳健地上线并持续高效运行,日志、监控、异常处理就是那不可或缺的 仪表盘、导航和故障预警系统,是我们必须重视的关键环节,这篇文章主要介绍了Spring Boot项目优雅上线之日志、监控、异常处理最佳实践指南的相关资料,需要的朋友可以参考下
    2026-05-05
  • mapstruct中的@Mapper注解的基本用法

    mapstruct中的@Mapper注解的基本用法

    在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍mapstruct中的@Mapper注解的相关知识,感兴趣的朋友一起看看吧
    2025-06-06

最新评论