实践:读取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();

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4学习笔记 FPS游戏制作2 制作第一人称控制器

文章目录 章节目标前置概念Rotator与Vector&#xff1a;roll与yaw与pitch 添加按键输入蓝图结构区域1区域2区域3区域4 章节目标 本章节将实现FPS基础移动 前置概念 Rotator与Vector&#xff1a; Vector是用向量表示方向&#xff0c;UE中玩家的正前方是本地坐标系的(1,0,0)&…

多智能体强化学习--理论与算法

目录标题 基础概念MADDPG的actor和critic网络actor网络&#xff1a;**critic网络&#xff1a;** MAPPO的actor和critic网络actor网络&#xff1a;critic网络&#xff1a; QMix (QMIX)VDN (Value Decomposition Networks) 参考博士论文&#xff1a;基于强化学习的多智能体协同关…

go数据操作-MySQL

1.快速入门 下载依赖 go get -u github.com/go-sql-driver/mysql使用MySQL驱动 func Open(driverName, dataSourceName string) (*DB, error)Open打开一个dirverName指定的数据库&#xff0c;dataSourceName指定数据源&#xff0c;一般至少包括数据库文件名和其它连接必要的…

【Linux】信号量

信号量 一、POSIX信号量1、信号量的原理2、信号量的概念&#xff08;1&#xff09;PV操作必须是原子操作&#xff08;2&#xff09;申请信号量失败被挂起等待 3、信号量函数4、销毁信号量5、等待信号量&#xff08;申请信号量&#xff09;6、发布信号量&#xff08;释放信号量&…

20240131在WIN10下配置whisper

20240131在WIN10下配置whisper 2024/1/31 18:25 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最新的545版本的驱动程序和CUDA。 2、安装Torch 3、配置whisper http…

仰暮计划|“从米票、肉票、糖果票到肥皂票、煤票、棉花票等,生活里头的方方面面都能用粮票买到”

口述人&#xff1a;牛翠英(女) 整理人&#xff1a;霍芝冉 口述人基本信息&#xff1a;现68岁&#xff0c;河南省安阳市北关区霍家村人&#xff0c;现居河南安阳市区。 奶奶一生辛劳&#xff0c;操持家务&#xff1b;亲眼见证了时代变迁&#xff0c;社会发展&#xff0c;…

docker笔记整理

Docker 安装 添加yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装docker yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin 启动docker systemctl start docker 查看docker状态 s…

09. 异常处理

目录 1、前言 2、常见的异常 3、异常处理try...except...finally 4、异常信息解读 5、raise 6、自定义异常 7、小结 1、前言 在编程中&#xff0c;异常&#xff08;Exception&#xff09;是程序在运行期间检测到的错误或异常状况。当程序执行过程中发生了一些无法继续执…

C languange DGEQRF 示例,link liblapack.a

1.示例源码 #include <stdio.h>int min(int m, int n){ return m<n? m:n;}void print_matrix(double* A, int m, int n, int lda) {for (int i 0; i < m; i){for (int j 0; j < n; j){//printf("%7.4f ", A[i j*lda]);printf("%7.4f, &quo…

springboot 文件上传

前言 用户访问当前系统,将自己本地计算机中文件通过浏览器上传到当前系统所在的服务器过程中称之为文件的上传 具体思路 1.文件上传 文件上传: 用户将本地计算机中文件上传到服务器过程称之为文件上传 2.文件上传开发思路: a.提供一张上传页面 提交方式必须:post enctype属…

Oracle RMAN全备脚本(正式测试可行)

Oracle RMAN全备脚本 正式环境测试可行 请参考。 run{ allocate channel c1 type disk maxpiecesize20G; allocate channel c2 type disk maxpiecesize20G; allocate channel c3 type disk maxpiecesize20G; allocate channel c4 type disk maxpiecesize20G; crosscheck arch…

创建表与删除表(六)

表的基本操作&#xff08;六&#xff09; 一、创建表 1.1 使用DDL语句创建表 CREATE TABLE 表名(列名 类型,列名 类型......); 示例&#xff1a; 创建一个 employees 表包含雇员 ID &#xff0c;雇员名字&#xff0c;雇员薪水。 create table employees(employee_id int,em…

【python基础】—函数式编程三个基本函数map()/filter()/reduce()

文章目录 前言一、map()函数二、filter()函数三、reduce()函数 前言 map()、filter()、reduce()是python内置函数&#xff0c;它们提供了一种便捷的方式来处理可迭代对象中的元素&#xff0c;这些函数在许多编程任务中非常有用&#xff0c;包括数据转换&#xff0c;筛选和累积…

​LeetCode解法汇总2670. 找出不同元素数目差数组

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你一个下…

从创新者到引领者:探索第四范式的AI之旅

大数据产业创新服务媒体 ——聚焦数据 改变商业 如今&#xff0c;人工智能已成为改变世界、驱动各行各业变革的核心源动力。在国内&#xff0c;有一些公司已走在前列&#xff0c;其中就包括北京第四范式智能技术股份有限公司&#xff0c;在AI这个赛道&#xff0c;他是一名创新…

Patch2QL:开源供应链漏洞挖掘和检测的新方向

背景 开源生态的上下游中&#xff0c;漏洞可能存在多种成因有渊源的其它缺陷&#xff0c;统称为“同源漏洞”&#xff0c;典型如&#xff1a; 上游代码复用缺陷。开源贡献者在实现功能相似的模块时&#xff0c;常复用已有模块代码或逻辑&#xff1b;当其中某个模块发现漏洞后…

聊聊 FTP、SFTP、FTPS

文章目录 FTP概述两种工作方式FTP、SFTP、FTPSSFTP和FTPS的区别命令详解SFTPFTP 个人简介 FTP概述 文件传送协议FTP(File Transfer Protocol)是TCP/IP协议簇中的一个成员&#xff0c;也是现在因特网上最广泛的文件传送协议。FTP协议包括两个部分&#xff0c;一个是FTP客户端&a…

java:java反编译工具--jd-gui

JD-GUI是一款反编译软件&#xff0c;JD分为JD-GUI、JD-Eclipse两种运行方式&#xff0c;JD-GUI是以单独的程序的方式运行&#xff0c;JD-Eclipse则是以一个Eclipse插件的方式运行。 官方下载地址&#xff1a; https://github.com/java-decompiler/jd-gui/releases 我这边下载…

Unity Shader 滚动进度条效果

Unity Shader 滚动进度条效果 前言项目场景布置导入图片修改场景设置修改图片尺寸即可调整进度 ASE连线 前言 UI要实现一个滚动进度&#xff0c;于是使用Shader制作一个。 项目 场景布置 导入图片 修改一下导入图片的格式&#xff0c;这样才能循环起来 WrapMode改为Repea…

提高 Code Review 质量的最佳实践

Code Review 是软件开发中至关重要的环节&#xff0c;它有助于确保代码质量、提高团队协作水平&#xff0c;同时也是一个学习和知识分享的机会。以下是一些提高 Code Review 质量的最佳实践&#xff1a; 1. 设置清晰的标准和目标 在进行 Code Review 之前&#xff0c;确保整个…