当前位置: 首页 > news >正文

实践:读取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.lryc.cn/news/292771.html

相关文章:

  • oracle 修改表结构语句
  • LabVIEW核能设施监测
  • 使用Process.Start()打开文件夹时出现访问被拒绝异常
  • spdk技术原理简介和实践经验
  • 【开源】基于JAVA+Vue+SpringBoot的用户画像活动推荐系统
  • 023 for循环详解
  • 舟山长寿医学中心:引领生命科技前沿
  • springboot 整合 PowerJob实现定时任务调度
  • 【C语言】通讯录实现(下)
  • 数据结构与算法面试系列-03
  • elk之基本crud
  • 搭建gitlab仓库
  • C语言-算法-最短路
  • 【操作系统·考研】I/O管理概述
  • Linux实验记录:使用vsftpd服务传输文件
  • 实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)
  • 商品介绍和规则参数图片映射和IP设置
  • 【React】前端React 代码中预览展示excel文件
  • QButtonGroup使用介绍
  • 最近nvm安装报错的原因找到了——npm原淘宝镜像正式到期!
  • docker面试问题二
  • 嵌入式中C 语言中的三块技术难点
  • 基于SSM的个性化旅游攻略定制系统设计与实现(有报告)。Javaee项目。ssm项目。
  • [React源码解析] Fiber (二)
  • Nginx 多项目部署,vue刷新404 解决方案
  • [C++]类和对象(中)
  • Kubernetes operator(五)api 和 apimachinery 篇
  • 接口自动化测试中解决接口间数据依赖
  • 七、测试计划(软件工程)
  • ElementUI Form:Checkbox 多选框