实践:读取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();
刷新响应的缓冲区,确保所有的数据都被写入到输出流。
相关文章:
实践:读取html文本提取相应内容按照格式导出到excel中
最近在做一个需求,需要将html文本中的内容提取出来,然后导出到excel里面,实现交代情景,html文本中存在许多标签,且很乱,因此需要之间将标签里面的文本提取出来,再进行处理。 ............String…...
oracle 修改表结构语句
oracle 修改表结构语句 Oracle中可以使用ALTER TABLE语句来修改表的结构。 添加列: ALTER TABLE table_name ADD column_name data_type; 示例:ALTER TABLE employees ADD email VARCHAR2(50); 删除列: ALTER TABLE table_name DROP COL…...
LabVIEW核能设施监测
LabVIEW核能设施监测 在核能领域,确保设施运行的安全性和效率至关重要。LabVIEW通过与硬件的紧密集成,为高温气冷堆燃料装卸计数系统以及脉冲堆辐射剂量监测与数据管理系统提供了解决方案。这些系统不仅提高了监测和管理的精确度,也保证了核…...
使用Process.Start()打开文件夹时出现访问被拒绝异常
默认的打开形式 Process.Start(folderPath); 解决方案 System.Diagnostics.Process.Start(Environment.GetEnvironmentVariable("WINDIR") "\explorer.exe", folderPath); 参考文献 c# - 使用 Process.Start() 打开文件夹时访问被拒绝异常 - IT工具网…...
spdk技术原理简介和实践经验
一、导读 与机械硬盘相比,NVMe-ssd在性能、功耗和密度上都有巨大的优势,并且随着固态存储介质的高速发展,其价格也在大幅下降,这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多&…...
【开源】基于JAVA+Vue+SpringBoot的用户画像活动推荐系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…...
023 for循环详解
什么是for循环 // 练习1 int odd 0; int even 0; for (int i 0; i < 100; i) {if (i % 2 0) {even i;} else {odd i;} } System.out.println("奇数和为:" odd ",偶数和为:" even);// 练习2 for (int i 1; i < 1000; i) {if (i % 5 0) {Sy…...
舟山长寿医学中心:引领生命科技前沿
在浩瀚的东海之滨,舟山群岛如一颗璀璨的明珠,镶嵌在碧波荡漾的大海之中。这里不仅拥有得天独厚的自然美景,更是一块充满生机与活力的健康宝地。舟山长寿医学中心,正是这片神奇的土地上的一颗璀璨明珠,致力于为全球人士…...
springboot 整合 PowerJob实现定时任务调度
最近项目需要使用定时任务,而使用了PowerJob做任务调度模块,感觉这个框架真香,今天我们就来深入了解一下新一代的定时任务框架——PowerJob! 简介 PowerJob是基于java开发的企业级的分布式任务调度平台,与xxl-job一样…...
【C语言】通讯录实现(下)
目录 1.进阶通讯录特点(下) 2.实现步骤 (1)保存增加的联系人数据到文件中 (2)加载保存的联系人数据 3.完整C语言通讯录代码 (1)contact.h (2)test.c (3)contact.c 4.结语 1.…...
数据结构与算法面试系列-03
1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 程序代码 package com.jingxuan.system;public class Sphere {public static void main(String[] args) {double s = 0;double t = 100;for (int i…...
elk之基本crud
写在前面 本文看下工作中用的最多的CRUD。让我们一起来做一个帅帅的CRUD BOY吧!!! 1:基本操作 Create 格式1(指定ID):PUT 索引名称/_create/文档ID {文档json} 格式2(不指定ID):POST 索引名称…...
搭建gitlab仓库
yum安装gitlab仓库 搭建gitlab仓库 配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 gpgcheck0 Repo_gpgcheck0 Enabled1 Gpgkeyhttps://packages.gitlab.com/gpg.keysudo yum ins…...
C语言-算法-最短路
【模板】Floyd 题目描述 给出一张由 n n n 个点 m m m 条边组成的无向图。 求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径。 输入格式 第一行为两个整数 n , m n,m n,m,分别代表点的个数和边的条数。 接下来 m m m 行,每行三个整数 u …...
【操作系统·考研】I/O管理概述
1.I/O设备 1.1 块设备 信息交换以数据块为单位,它属于有结构设备。 块设备传输速率较高,可寻址,且可对该设备随机地的读写。 栗子🌰:磁盘。 1.2 字符设备 信息交换以字符为单位,属于无结构类型。 字符…...
Linux实验记录:使用vsftpd服务传输文件
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 为了解决在多样复杂的设备之间解决传…...
实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)
实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 (1)管理员登录 (2)实训方向管理 (3)公告信息管理 (4࿰…...
商品介绍和规则参数图片映射和IP设置
虚拟路径映射配置: registry.addResourceHandler("/image/productIntroImgs/**").addResourceLocations("file:D:\\java1234-mall-v3\\productIntroImgs\\");registry.addResourceHandler("/image/productParaImgs/**").addResourceL…...
【React】前端React 代码中预览展示excel文件
封装了ExcelView来展示excel文件,支持显示loading 1.安装依赖 npm i js-preview/excel源码 import React, { useEffect, useRef, useState } from react import jsPreviewExcel, { JsExcelPreview } from js-preview/excel import js-preview/excel/lib/index.cs…...
QButtonGroup使用介绍
一、简介 QButtonGroup是PyQt5库中的一个组件,主要用于组织和管理一组按钮。通过QButtonGroup,可以方便地实现单选框或多选框功能,统一处理按钮的信号,并且可以为按钮分组设定ID以进行识别。 1、原始工程 from PyQt5.Qt import …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...
