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文本内容的资料请关注脚本之家其它相关文章!

相关文章

  • Java中的注解、元注解详细解析

    Java中的注解、元注解详细解析

    这篇文章主要介绍了Java中的注解、元注解详细解析,注解也叫元数据,与类、接口、枚举是在同一个层次,它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释,需要的朋友可以参考下
    2023-11-11
  • Spring Boot 2.x 把 Guava 干掉了选择本地缓存之王 Caffeine(推荐)

    Spring Boot 2.x 把 Guava 干掉了选择本地缓存之王 Caffeine(推荐)

    这篇文章主要介绍了Spring Boot 2.x 把 Guava 干掉了选择本地缓存之王 Caffeine,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 如何用java计算两个时间相差多少小时

    如何用java计算两个时间相差多少小时

    最近工作中遇到需要计算时间差,下面这篇文章主要给大家介绍了关于如何用java计算两个时间相差多少小时的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Mybatis中的@Param及动态SQL详解

    Mybatis中的@Param及动态SQL详解

    这篇文章主要介绍了Mybatis中的@Param及动态SQL详解,@Param是MyBatis所提供的作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,需要的朋友可以参考下
    2023-10-10
  • java基于poi导出excel透视表代码实例

    java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • java 非常好用的反射框架Reflections介绍

    java 非常好用的反射框架Reflections介绍

    这篇文章主要介绍了java 反射框架Reflections的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 基于java中的PO VO DAO BO POJO(详解)

    基于java中的PO VO DAO BO POJO(详解)

    下面小编就为大家带来一篇基于java中的PO VO DAO BO POJO(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot中的ImportSelector类动态加载bean详解

    SpringBoot中的ImportSelector类动态加载bean详解

    这篇文章主要介绍了SpringBoot中的ImportSelector类动态加载bean详解,ImportSelector接口是spring中导入外部配置的核心接口,根据给定的条件(通常是一个或多个注释属性)判定要导入那个配置类,在spring自动化配置和@EnableXXX中都有它的存在,需要的朋友可以参考下
    2024-01-01
  • SpringBoot中Redis的缓存更新策略详解

    SpringBoot中Redis的缓存更新策略详解

    这篇文章主要介绍了SpringBoot中Redis的缓存更新策略,缓存一般是为了应对高并发场景、缓解数据库读写压力,而将数据存储在读写更快的某种存储介质中(如内存),以加快读取数据的速度,需要的朋友可以参考下
    2023-08-08
  • Servlet中文乱码问题解决方案解析

    Servlet中文乱码问题解决方案解析

    这篇文章主要介绍了Servlet中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论