【Java 演示灵活导出数据】

演示灵活导出数据

🎉🎉🎉🎉🎉🎉【小吴小吴bug全无开通公众号】关注公众号获取第一时间博客动态

在这里插入图片描述

背景今天临时起兴打开稀土掘金导航栏看到页面推广gitee项目恰巧最近也在学习python了解到python爬虫很厉害,想着能不能用Java把数据爬下来,于是在原先框架wu-easy-excel-starter基础上新增demo进行演示测试

在这里插入图片描述

实现过程

获取需要获取数据的接口
curl 'https://e.juejin.cn/resources/gitee' \-H 'accept: */*' \-H 'accept-language: zh-CN,zh;q=0.9' \-H 'content-type: application/json' \--data-raw '{"lang":"java","offset":0,"limit":30,"cursor":"0"}'

::: 告诉一个你们都不知道的工具ApiPost 里面有个可以一键将curl命令转换成不同语言的代码

找到生成代码按钮

在这里插入图片描述

选择你想要的语言

在这里插入图片描述

安装Java wu-easy-excel-starter 依赖

这里使用的是快照哦(快照仓库地址放在最下面了)

        <dependency><groupId>top.wu2020</groupId><artifactId>wu-easy-excel-starter</artifactId><version>1.2.6-JDK17-SNAPSHOT</version></dependency>
编写代码
获取接口数据
        HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://e.juejin.cn/resources/gitee")).header("accept", "*/*").header("accept-language", "zh-CN,zh;q=0.9").header("content-type", "application/json").method("POST", HttpRequest.BodyPublishers.ofString("{\"lang\":\"java\",\"offset\":0,\"limit\":30,\"cursor\":\"0\"}")).build();HttpResponse<byte[]> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofByteArray());byte[] body = response.body();// 需要导出的数据Map<?,?> map = JsonUtils.parseObject(body, LinkedHashMap.class);System.out.println(map);

输出格式

{"code": 200,"data": [{"id": 13010970,"title": "小诺/Snowy","username": "","url": "https://gitee.com/xiaonuobase/snowy","date": {"__type": "Date","iso": "2024-05-10T11:45:16.000Z"},"summary": "最新:💖国内首个国密前后分离快速开发平台💖,采用Vue3+AntDesignVue3 + Vite+SpringBoot+Mp+HuTool+SaToken。集成国密加解密插件,在前后分离框架中,实现前后分离“密”不可分;同时实现国产化机型、中间件、数据库适配,是您的不二之选;最后官网提供工作流、多租户、多数据源、Vue3表单设计器等丰富插件灵活使用。","language": "Java","category": "","img": [],"view": 0,"comment": 0,"like": 0,"hot": 0,"collect": 0,"langColor": "#b07219"}]
}
导出数据参数配置

配置导出字段

  • 属性数据导出如:user.id
  • 集合数据导出:userList.$id
  • 字段导出:id

::: tip 如下导出数据中的data中集合属性ID为数据ID、title属性为标题
:::

        // 需要导出的数据设置信息List<ExportFieldCommand> exportFieldCommands = new ArrayList<>();exportFieldCommands.add(new ExportFieldCommand("data.$id","数据ID"));exportFieldCommands.add(new ExportFieldCommand("data.$title","标题"));exportFieldCommands.add(new ExportFieldCommand("data.$username","用户"));exportFieldCommands.add(new ExportFieldCommand("data.$url","地址"));exportFieldCommands.add(new ExportFieldCommand("data.$summary","描述"));exportFieldCommands.add(new ExportFieldCommand("data.$language","语言"));exportFieldCommands.add(new ExportFieldCommand("data.$category","类型"));List<EasyExcelFiledPoint> easyExcelFiledPointList = ExportFieldCommandUtils.exportFieldCommandList2EasyExcelFiledPointList(exportFieldCommands);
导出数据
        // 设置导出数据信息DynamicEasyExcelContextHolder.pushOnlyExportField(easyExcelFiledPointList);
//        easyExcelPoint.setExcelFiledPointList(easyExcelFiledPointList);// 声明导出文件地址FileOutputStream fileOutputStream = new FileOutputStream(easyExcelWorkbookTest.getPath());// 执行导出excelExcelServiceAdapter.exportExcel(map,easyExcelPoint,fileOutputStream);
查看数据

在这里插入图片描述

完整代码

package com.wu.framework.easy;import com.fasterxml.jackson.databind.ObjectMapper;
import org.wu.framework.core.utils.FileUtil;
import org.wu.framework.core.utils.JsonUtils;
import org.wu.framework.easy.excel.adapter.ExcelExcelServiceAdapter;
import org.wu.framework.easy.excel.endpoint.EasyExcelFiledPoint;
import org.wu.framework.easy.excel.endpoint.EasyExcelPoint;
import org.wu.framework.easy.excel.endpoint.ExportFieldCommand;
import org.wu.framework.easy.excel.factory.ExcelExcelServiceAdapterFactory;
import org.wu.framework.easy.excel.toolkit.DynamicEasyExcelContextHolder;
import org.wu.framework.easy.excel.util.EasyWorkbookTest;
import org.wu.framework.easy.excel.util.ExportFieldCommandUtils;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;/*** 自定义 表头数据导出*/
public class CustomerDataExportTest {public static void main(String[] args) throws IOException, InterruptedException {HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://e.juejin.cn/resources/gitee")).header("accept", "*/*").header("accept-language", "zh-CN,zh;q=0.9").header("content-type", "application/json").method("POST", HttpRequest.BodyPublishers.ofString("{\"lang\":\"java\",\"offset\":0,\"limit\":30,\"cursor\":\"0\"}")).build();HttpResponse<byte[]> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofByteArray());byte[] body = response.body();// 需要导出的数据Map<?,?> map = JsonUtils.parseObject(body, LinkedHashMap.class);System.out.println(map);// 创建一个导出适配器ExcelExcelServiceAdapter excelExcelServiceAdapter = ExcelExcelServiceAdapterFactory.excelExcelServiceAdapter();// 演示导出文件到本地String localClassPath = FileUtil.readLocalClassFolder(CustomerDataExportTest.class);File easyExcelWorkbookTest = FileUtil.createFile(localClassPath, "CustomerDataExportTest.xls");EasyExcelPoint easyExcelPoint = new EasyExcelPoint();easyExcelPoint.setSheetName("导出稀土掘金首页Gitee推荐");easyExcelPoint.setUseAnnotation(false);// 不使用注解导出// 需要导出的数据设置信息List<ExportFieldCommand> exportFieldCommands = new ArrayList<>();exportFieldCommands.add(new ExportFieldCommand("data.$id","数据ID"));exportFieldCommands.add(new ExportFieldCommand("data.$title","标题"));exportFieldCommands.add(new ExportFieldCommand("data.$username","用户"));exportFieldCommands.add(new ExportFieldCommand("data.$url","地址"));exportFieldCommands.add(new ExportFieldCommand("data.$summary","描述"));exportFieldCommands.add(new ExportFieldCommand("data.$language","语言"));exportFieldCommands.add(new ExportFieldCommand("data.$category","类型"));List<EasyExcelFiledPoint> easyExcelFiledPointList = ExportFieldCommandUtils.exportFieldCommandList2EasyExcelFiledPointList(exportFieldCommands);// 设置导出数据信息DynamicEasyExcelContextHolder.pushOnlyExportField(easyExcelFiledPointList);
//        easyExcelPoint.setExcelFiledPointList(easyExcelFiledPointList);// 声明导出文件地址FileOutputStream fileOutputStream = new FileOutputStream(easyExcelWorkbookTest.getPath());// 执行导出excelExcelServiceAdapter.exportExcel(map,easyExcelPoint,fileOutputStream);System.out.println(map);}
}

当前使用框架地址

快照仓库地址

    <repositories><repository><id>oss.snapshots</id><name>oss.sonatype.org</name><url>https://oss.sonatype.org/content/repositories/snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>

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

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

相关文章

java基础之特殊类枚举

一、什么是枚举 枚举是JDK5新增特性&#xff0c;用来表示一组常量值&#xff0c;比如一年由四个季节&#xff0c;一年中有12个月份&#xff0c;、订单有未付款​、已付款、已发货、已收货状态等。 二、枚举的好处 ​用枚举来表示组常量值&#xff0c;可以避免非法值。 publ…

# 从浅入深 学习 SpringCloud 微服务架构(十八)

从浅入深 学习 SpringCloud 微服务架构&#xff08;十八&#xff09; 一、开源配置中心 Apollo&#xff1a;概述 1、开源配置中心 Apollo Apollo -A reliable configuration management system Apollo(阿波罗)是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理…

一篇文章告诉你:通信网优比计算机岗位好在哪?

据优橙2023年就业人员专业分布统计&#xff0c;通信专业学员占比32.7%&#xff0c;非通信专业学员占比64.8%&#xff0c;其他占比2.5%。 可见从事网优的学员中大部分为非通信专业。而非通信专业中72%的学生在学习通信网优还是计算机专业中&#xff0c;选择了通信网优。 为什么越…

聚焦光量子应用开发!Quandela 发布新版量子计算云服务

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1200字丨5分钟阅读 摘要&#xff1a;法国光量子计算公司 Quandela宣布推出新版量子计算云服务 Quandela Cloud 2.0&#xff0c;通过创新技术确保量…

很难找到全的!150个软件测试领域专业术语汇总

1. 单元测试&#xff08;Unit Testing&#xff09;&#xff1a;对软件中的最小功能单元&#xff08;通常是函数或方法&#xff09;进行测试&#xff0c;以验证其是否按预期工作。 2. 集成测试&#xff08;Integration Testing&#xff09;&#xff1a;测试不同模块之间的交互…

Python 运筹优化13 Thompson Sampling 解读

说明 这部分应该是Multi-Armed Bandit的最后一部分了。 内容 1 On Line Ads 这个实验&#xff0c;最初的目的就是为了选出最佳的广告。首先&#xff0c;通过伯努利分布&#xff0c;模拟了某个广告的有效率。在真实场景里&#xff0c;我们是无法知道那个广告更好的。可能在t…

java springboot连接sqlserver使用

pom.xml增加sqlserver驱动 <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>9.4.0.jre8</version></dependency>application.yml配置文件 server:port: 9001 #spring: …

【Vue】vue项目中使用百度地图教程

在Vue项目中显示百度地图&#xff0c;你需要遵循以下步骤&#xff1a; 1. 注册百度开发者账号并获取API密钥2. 在Vue项目中引入百度地图API3.在Vue组件中创建地图容器4. 在Vue组件中初始化地图5. 添加其他地图组件&#xff08;可选&#xff09;6. 处理地图事件&#xff08;可选…

【Power BI】DAX语言 VS Power Query M语言

DAX&#xff08;Data Analysis Expressions&#xff09;和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处&#xff0c;特别是用于数据建模和数据转换&#xff0c;但它们在用途、语法和功能上有显著的区别。本…

嵌入式单片机笔试题

DC-DC 和 LDO两者有何区别&#xff1f; DC-DC转换器&#xff08;直流-直流转换器&#xff09;和LDO&#xff08;低压差线性稳压器&#xff09;都是用于电源管理的设备&#xff0c;但它们在原理和特性上有一些显著的区别&#xff1a; 原理&#xff1a; DC-DC转换器通过改变输…

Linux 第二十七章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…

互联网医院源码|禾高互联网医院系统功能和优势

互联网医院系统是一种建立在互联网基础上的医疗服务平台&#xff0c;其目标是通过数字化手段改善患者和医生之间的医疗互动。这一系统不仅使患者能够更轻松地获取医疗服务&#xff0c;而且也为医生提供了更灵活的工作方式。 1、智能导诊:提供人体模拟图&#xff0c;模拟门诊医生…

【学习笔记】C++每日一记[20240513]

简述静态全局变量的概念 在全局变量前加上static关键字&#xff0c;就定义了一个静态全局变量。通常情况下&#xff0c;静态全局变量的声明和定义放在源文件中&#xff0c;并且不能使用extern关键字将静态全局变量导出&#xff0c;因此静态全局变量的**作用于仅限于定义静态全…

振弦式应变计的与实际测量值不一致怎么办

在进行结构健康监测或其他工程测量时&#xff0c;精确性和可靠性至关重要。振弦式表面应变计是一种广泛使用的测量工具&#xff0c;它通过测量材料表面的应变来评估结构的应力状态。然而&#xff0c;在实际应用中&#xff0c;振弦式应变计的测量值与实际应变值之间的不一致问题…

【JavaScript】---- 使用 Tween 实现转盘抽奖

1. 实现效果 2. 需求分析 它和正常的转盘抽奖不一样&#xff0c;一般实现都是指针形式的&#xff0c;转盘转动&#xff0c;最后指针停留在奖品的随机位置&#xff1b;通过上边图发现奖品必须刚好停留在奖品的位置&#xff0c;因为不是指针&#xff0c;所以不能最后落到随机位置…

福建聚鼎:做装饰画到底能不能赚钱

在探讨做装饰画能否成为盈利的行当之前&#xff0c;我们必须认识到任何一门艺术或手工的价值并非仅仅取决于其直接的经济收益。艺术创作本身就是一种文化传承和个人情感表达的方式&#xff0c;它对创作者和社会都有着不可估量的精神价值。然而&#xff0c;将话题限定在经济回报…

武汉星起航跨境电商:亚马逊自发货订单处理全流程解析

在亚马逊电商平台上&#xff0c;自发货订单的处理是卖家日常运营中的重要环节。正确的处理流程不仅能确保交易的顺畅进行&#xff0c;还能提升买家满意度&#xff0c;进而促进销售业绩的提升。武汉星起航在这里整理了亚马逊自发货订单的处理流程&#xff0c;帮助卖家更好地管理…

基于ChatGPT 和 OpenAI 模型的现代生成式 AI

书籍&#xff1a;Modern Generative AI with ChatGPT and OpenAI Models: Leverage the capabilities of OpenAIs LLM for productivity and innovation with GPT3 and GPT4 作者&#xff1a;Valentina Alto 出版&#xff1a;Packt Publishing 书籍下载-《基于ChatGPT 和 Op…

4 局域网技术(一):局域网概述

目录 1 局域网概述1.1 局域网的特点1.2 局域网的介质访问控制方法1、具有冲突检测的载波侦听多路访问&#xff08;CSMA/CD&#xff09;对几个概念进行解释CSMA/CD的说明 2、令牌&#xff08;Token&#xff09;技术 1.3 网络适配器1、网络适配器的功能2、网卡的总类3、Ethernet网…