【Java 演示灵活导出数据】
演示灵活导出数据
背景今天临时起兴打开稀土掘金导航栏看到页面推广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命令转换成不同语言的代码
找到生成代码按钮
选择你想要的语言
TODO 开源中国图片不合规(不知道为啥)
安装Java wu-easy-excel-starter 依赖
这里使用的是快照哦(快照仓库地址放在最下面了)
<dependency>
<groupId>top.wu2020groupId>
<artifactId>wu-easy-excel-starterartifactId>
<version>1.2.6-JDK17-SNAPSHOTversion>
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);
查看数据
// TODO 开源中国图片不合规(不知道为啥)
完整代码
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.snapshotsid>
<name>oss.sonatype.orgname>
<url>https://oss.sonatype.org/content/repositories/snapshots/url>
<releases>
<enabled>falseenabled>
releases> <snapshots> <enabled>trueenabled> snapshots> repository> repositories>
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
腾讯宣布混元文生图大模型开源: Sora 同架构,可免费商用
5月14日,腾讯宣布旗下的混元文生图大模型全面升级并对外开源,目前已在 Hugging Face 平台及 Github 上发布,包含模型权重、推理代码、模型算法等完整模型,可供企业与个人开发者免费商用。 这是业内首个中文原生的 DiT 架构文生图开源模型,支持中英文双语输入及理解,参数量15亿。升级后的混元文生图大模型采用了与 sora 一致的 DiT 架构,不仅可支持文生图,也可作为视频等多模态视觉生成的基础。 评测数据显示,最新的腾讯混元文生图模型效果远超开源的 Stable Diffusion 模型,是目前效果最好的开源文生图模型;整体能力属于国际领先水平。 自研新一代文生图模型 大模型的优异表现,离不开领先的技术架构。升级后的腾讯混元文生图大模型采用了全新的 DiT 架构(DiT,即Diffusion With Transformer),这也是 Sora 和 Stable Diffusion 3 的同款架构和关键技术,是一种基于 Transformer 架构的扩散模型。 过去,视觉生成扩散模型主要基于 U-Net 架构,但随着参数量的提升,基于 Transformer 架构的...
-
下一篇
腾讯混元文生图模型全面开源
腾讯旗下混元文生图大模型(混元DiT,Diffusion Models with Transformers)宣布全面开源。目前已经在Hugging Face平台及Github上发布,包含模型权重、推理代码、模型算法等完整模型,可供企业与个人开发者免费商用。 开源地址:https://dit.hunyuan.tencent.com/ 腾讯混元文生图负责人卢清林表示,混元DiT开源的价值有两方面,一方面这是业内首个中文原生DiT架构,弥补了开源社区的空白;另一方面混元DiT为全面开放,与现网版本完全一致。 据卢清林介绍,之所以做这次开源尝试,是由于目前开源社区中技术快速迭代,缺乏先进、成熟的DiT架构可以开源利用。此外,现有模型对中文理解较差,中文应用场景受限。 此次开源的混元DiT采用了与Sora一致的DiT架构,不仅可支持文生图,也可作为视频等多模态视觉生成的基础。还支持256字中文理解,全链路自研,也是一款原生中文模型,支持中英文双语输入及理解,参数量15亿。 评测数据显示,新一代腾讯混元文生图大模型视觉生成整体效果,相比前代提升超过 20%,在语义理解、画面质感与真实性方面全面提升...
相关文章
文章评论
共有0条评论来说两句吧...




微信收款码
支付宝收款码