vue中或者react中的excel导入和导出
excel导入和导出是后台管理系统常见的功能。
当我们把信息化系统给用户使用时,用户经常需要把以前在excel里录入的数据导入的信息化系统里,这样为用户提供了很大的方便。
在用户使用信息化系统时,也需要把网页表格里的数据导出到excel里,方便进行打印,排版等等。
一、安装依赖的模块:
1、file-saver
用于文件操作
2、xlsx用于excel文件处
npm i xlsx@0.17.0 -Snpm i file-saver@2.0.5 -S
二、导出功能实现
在自己的项目中新建一个js文件模块。放入如下代码:
1、使用dom元素导出
// 1、根据dom元素导出成excel文件:// 自动分析dom元素导出excel
// 参数:
// table:表格的dom元素对象
// filename:导出的文件名(不用写扩展名)
export function excelExport(table, filename) {// workbook,const wb = XLSX.utils.table_to_book(table);console.log("wb", wb);/* Export to file (start a download) */const defaultCellStyle = {font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },fill: { fgColor: { rgb: 'FFFFAA00' } },}const wopts = {bookType: 'xlsx',bookSST: false,type: 'binary',cellStyle: true,defaultCellStyle: defaultCellStyle,showGridLines: false,}const wbout = XLSX.write(wb, wopts)const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })saveAs(blob, filename + '.xlsx')
}function s2ab(s) {console.log("s", s);var buf = new ArrayBuffer(s.length);var view = new Uint8Array(buf);for (var i = 0; i != s.length; ++i) {view[i] = s.charCodeAt(i) & 0xFF;}return buf;
}
调用示例:
excelExport(document.getElementById("t2"), "student");// t2是一个table标签的id。其实是包含表格标签的id,会自动分析的。
2、使用json数组数据导出
// 2、根据json数据(数组)导出成excel文件:// 参数:
// data:json数组
// headers:excel的表头
// filename:导出的文件名(不用写扩展名)
export function excelExportUseJson(data, headers, filename) {// 使用深克隆不影响原table数据的展示const json = cloneDeep(data)json.forEach(item => {for (let key in item) {if (headers.hasOwnProperty(key)) {item[headers[key]] = item[key]}delete item[key]}})// excel 对象const wb = XLSX.utils.book_new()// 创建sheetconst ws = XLSX.utils.json_to_sheet(json, { header: Object.values(headers) })// excel 添加sheet名称wb.SheetNames.push(filename)// excel 添加sheetwb.Sheets[filename] = wsconst defaultCellStyle = {font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },fill: { fgColor: { rgb: 'FFFFAA00' } },}const wopts = {bookType: 'xlsx',bookSST: false,type: 'binary',cellStyle: true,defaultCellStyle: defaultCellStyle,showGridLines: false,}const wbout = XLSX.write(wb, wopts)const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })saveAs(blob, filename + '.xlsx')
}function cloneDeep(obj) {if (typeof obj !== 'object' || obj === null) {return obj;}let clonedObj = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {clonedObj[key] = cloneDeep(obj[key]);}}return clonedObj;
}
调用示例:
调用示例:const books = [ { id:"878911", name:"三国演义" }, { id:"878912", name:"西游记" }]excelExportUseJson(books,{id:"编号",name:"书名"},"student02");
三、导入功能实现
// 1、导入成dom元素:// 参数:
// data:文件对象(用<input type=file /> 选择到file对象
// domId:导入的excel显示的容器export function httpRequestToHTML(data, domId) {const file = dataconst types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]]console.log('ws', ws)const htmlStr = XLSX.utils.sheet_to_html(ws)resolve(htmlStr); }});
}// 2、导入成json数据。
// 参数:
// data:文件对象(用<input type=file /> 选择到file对象export function httpRequestToJSON(data) {const file = dataconst types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]]let arr = XLSX.utils.sheet_to_json(ws);resolve(arr);}});
}// 封装:把excel转成html或者json。
// 参数:
// file:(excel)文件对象
// outtype:是导出的类型(取值:html,json)// 调用示例:
// excelTo(文件对象,"html")
// excelTo(文件对象,"json")
export function excelImport(file,outtype="json") {const types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]];let result = "";switch(outtype.toLocaleLowerCase()){case "html":result = XLSX.utils.sheet_to_html(ws);break;case "json":result = XLSX.utils.sheet_to_json(ws);break;default:this.$message.error('输出类型错误,只能取值为 html或者json')}resolve(result);}});
}
调用示例:
const importFn=(e)=>{if(e.target.files && e.target.files.length>0){httpRequestToHTML(e.target.files[0],"TableContainer")}
}<input type="file" onChange={importFn} />
<div id="TableContainer"></div>
四、如果想看完整代码的,在下面:
1、导入导出的工具库:excelUtils.js
// 此工具库是:excel的导入和导出import * as XLSX from 'xlsx';
// import * as fs from 'file-saver';
import { saveAs } from "file-saver"// 一、excel的导出:
// 1、根据dom元素导出成excel文件:// 自动分析dom元素导出excel
// 参数:
// table:表格的dom元素对象
// filename:导出的文件名(不用写扩展名)
export function excelExport(table, filename) {// workbook,const wb = XLSX.utils.table_to_book(table);console.log("wb", wb);/* Export to file (start a download) */const defaultCellStyle = {font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },fill: { fgColor: { rgb: 'FFFFAA00' } },}const wopts = {bookType: 'xlsx',bookSST: false,type: 'binary',cellStyle: true,defaultCellStyle: defaultCellStyle,showGridLines: false,}const wbout = XLSX.write(wb, wopts)const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })saveAs(blob, filename + '.xlsx')
}function s2ab(s) {console.log("s", s);var buf = new ArrayBuffer(s.length);var view = new Uint8Array(buf);for (var i = 0; i != s.length; ++i) {view[i] = s.charCodeAt(i) & 0xFF;}return buf;
}// 2、根据json数据(数组)导出成excel文件:// 参数:
// data:json数组
// headers:excel的表头
// filename:导出的文件名(不用写扩展名)
export function excelExportUseJson(data, headers, filename) {// 使用深克隆不影响原table数据的展示const json = cloneDeep(data)json.forEach(item => {for (let key in item) {if (headers.hasOwnProperty(key)) {item[headers[key]] = item[key]}delete item[key]}})// excel 对象const wb = XLSX.utils.book_new()// 创建sheetconst ws = XLSX.utils.json_to_sheet(json, { header: Object.values(headers) })// excel 添加sheet名称wb.SheetNames.push(filename)// excel 添加sheetwb.Sheets[filename] = wsconst defaultCellStyle = {font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },fill: { fgColor: { rgb: 'FFFFAA00' } },}const wopts = {bookType: 'xlsx',bookSST: false,type: 'binary',cellStyle: true,defaultCellStyle: defaultCellStyle,showGridLines: false,}const wbout = XLSX.write(wb, wopts)const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })saveAs(blob, filename + '.xlsx')
}function cloneDeep(obj) {if (typeof obj !== 'object' || obj === null) {return obj;}let clonedObj = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {clonedObj[key] = cloneDeep(obj[key]);}}return clonedObj;
}// 二、从excel文件导入到项目里。// 1、导入成dom元素:// 参数:
// data:文件对象(用<input type=file /> 选择到file对象
// domId:导入的excel显示的容器export function httpRequestToHTML(data, domId) {const file = dataconst types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]]console.log('ws', ws)const htmlStr = XLSX.utils.sheet_to_html(ws)resolve(htmlStr); }});
}// 2、导入成json数据。
// 参数:
// data:文件对象(用<input type=file /> 选择到file对象export function httpRequestToJSON(data) {const file = dataconst types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]]let arr = XLSX.utils.sheet_to_json(ws);resolve(arr);}});
}// 封装:把excel转成html或者json。
// 参数:
// file:(excel)文件对象
// outtype:是导出的类型(取值:html,json)// 调用示例:
// excelTo(文件对象,"html")
// excelTo(文件对象,"json")
export function excelImport(file,outtype="json") {const types = file.name.split('.')[1]const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some((item) => item === types)if (!fileType) {this.$message.error('格式错误!请重新选择')return}const reader = new FileReader()reader.readAsArrayBuffer(file, 'utf-8');return new Promise(function (resolve, reject) {reader.onloadend = function (e) {const data = e.target.resultconsole.log('data', data)const wb = XLSX.read(data, {type: 'buffer'})const ws = wb.Sheets[wb.SheetNames[0]];let result = "";switch(outtype.toLocaleLowerCase()){case "html":result = XLSX.utils.sheet_to_html(ws);break;case "json":result = XLSX.utils.sheet_to_json(ws);break;default:this.$message.error('输出类型错误,只能取值为 html或者json')}resolve(result);}});
}
2、组件代码:
<template><el-button @click="drawer = true" v-if="crud.charAt(0) === '1'">添加轮播图</el-button><el-button @click="toExcel01">excel导出(用dom元素)</el-button><el-button @click="toExcel02">excel导出(用json数组)</el-button><!-- <el-button @click="fromExcel">excel导入</el-button> --><!-- <input type="file" @change="fromExcel" /> --><el-upload ref="upload" class="upload-demo" :limit="1" :on-change="changeFn" :on-exceed="handleExceed" :auto-upload="false" :show-file-list="false"><template #trigger><el-button type="primary">excel导入</el-button></template></el-upload><el-button @click="batchSave">批量提交</el-button><el-button @click="clearAll">清空轮播图数据</el-button><el-divider /><el-table ref="table" id="table01" :data="bannerList" height="600px" style="width: 100%"><el-table-column prop="bannerid" label="编号" width="180" /><el-table-column label="图片" width="180"><template #default="scope"><img class="img" :src="scope.row.img" /></template></el-table-column><el-table-column label="是否启用" v-if="crud.charAt(2) === '1'"><template #default="scope"><el-switch v-model="scope.row.flag" /></template></el-table-column><el-table-column label="跳转连接"><template #default="scope"><el-link :href="scope.row.link" type="primary" target="_blank">跳转连接</el-link></template></el-table-column><el-table-column prop="alt" label="图片提示" /><el-table-column label="操作" v-if="crud.charAt(2) === '1' || crud.charAt(3) === '1'"><template #default="scope"><el-button type="danger" v-if="crud.charAt(3) === '1'" >删除</el-button><el-button type="danger" v-if="crud.charAt(2) === '1'">修改</el-button></template></el-table-column></el-table><el-drawer v-model="drawer" title="添加轮播图" direction="rtl" :before-close="handleClose"><AddBannerVue ref="addBannerRef" @ok="okHandle" @cancel="closeDrawer"></AddBannerVue></el-drawer><hr /><div id="container"></div>
</template><script lang="ts" setup>
import { useRoute } from "vue-router";
import { getBannerApi, addBannerApi,clearBannerApi } from "@/api/banner";
import { onMounted, reactive, ref } from "vue";
import { ElMessageBox } from 'element-plus'
import type { UploadInstance, UploadProps, UploadRawFile,UploadFile } from 'element-plus'
import AddBannerVue from "./AddBanner.vue";
import type { IBanner } from "@/myTypes"
import { excelExport, excelExportUseJson, excelImport } from "@/utils/excelUtils";const $route = useRoute();//this.$routeconst crud: string = $route.meta.crud as string;const bannerList = reactive<Array<IBanner>>([]);// 清空轮播图const clearAll=()=>{clearBannerApi().then(res=>{if(res.data.code==="200"){ElMessageBox.alert("清空成功", "提示", {confirmButtonText: "确定",callback: () => {getBannerList();}});}}).catch(err=>{console.log("清空失败",err);})
}// 获取轮播图的数据
function getBannerList() {getBannerApi().then(res => {if (res.data.code === "200") {bannerList.length = 0;bannerList.push(...res.data.data);}}).catch(err => {console.log("获取轮播图失败,err", err);})
}// 在初次渲染完毕后,获取轮播图数据
// onMounted(()=>getBannerList());
getBannerList();// 添加相关:
//
const drawer = ref(false);function okHandle() {closeDrawer();getBannerList();
}// 关闭抽屉
const closeDrawer = () => {drawer.value = false;
}const addBannerRef = ref();const handleClose = (done: () => void) => {ElMessageBox.confirm('亲,您真的要关闭吗?').then(() => {console.log("点了确定");addBannerRef.value.clearData();done();}).catch(() => {// catch errorconsole.log("点了取消");})
}onMounted(() => console.log("父组件:mounted"))const toExcel01 = () => {excelExport(document.getElementById("table01"), "banners");
}const toExcel02 = () => {// const arr = bannerList.map(item => ({// bannerid: item.bannerid,// img: item.img,// flag: item.flag ? "是" : "否"// }))// excelExportUseJson(arr, {// bannerid: "编号",// img: "图片",// flag: "是否启用"// }, "bannerList");excelExportUseJson(bannerList, {bannerid: "编号",img: "图片",flag: "是否启用",link: "跳转连接",alt: "图片提示"}, "bannerList");
}// 从excel文件中导入
const fromExcel = (e: any) => {if (e.target.files && e.target.files.length > 0) {excelImport(e.target.files[0],).then((arr: any) => {bannerList.length = 0;arr.forEach((item: any) => {bannerList.push({bannerid: item["编号"],img: item["图片"],flag: item["是否启用"],link: item["跳转连接"],alt: item["图片提示"]});})})}
}function batchSave() {let count = 0;bannerList.forEach((item: any) => {addBannerApi(item).then(() => {console.log(`添加成功了${++count}条`);})})
}const upload = ref<UploadInstance>();const handleExceed: UploadProps['onExceed'] = (files) => {upload.value!.clearFiles()const file = files[0] as UploadRawFileupload.value!.handleStart(file);
}const changeFn=(file:UploadFile)=>{console.log("excelImport:file",file);excelImport(file.raw as File).then((arr: any) => {bannerList.length = 0;arr.forEach((item: any) => {bannerList.push({bannerid: item["编号"],img: item["图片"],flag: item["是否启用"],link: item["跳转连接"],alt: item["图片提示"]});})})}</script><style lang="scss" scoped>
.img {width: 100%;height: 100px;
}
</style>
相关文章:
vue中或者react中的excel导入和导出
excel导入和导出是后台管理系统常见的功能。 当我们把信息化系统给用户使用时,用户经常需要把以前在excel里录入的数据导入的信息化系统里,这样为用户提供了很大的方便。 在用户使用信息化系统时,也需要把网页表格里的数据导出到excel里&…...

如何在Ubuntu的根目录下创建删除目录
首先进入根目录 cd /创建目录 sudo mkdir xxx然后可以用ls命令查看是否创建成功 我们创建了一个666的目录,接下来我们应该怎么删除呢? 删除 如果我们用普通删除的话,例如 rm 666 你会发现根本删除不掉;这时我们还是得用超级权…...

lv5 嵌入式开发-6 线程的取消和互斥
目录 1 线程通信 – 互斥 2 互斥锁初始化 – pthread_mutex_init 3 互斥锁销毁 pthread_mutex_destroy 4 申请锁 – pthread_mutex_lock 5 释放锁 – pthread_mutex_unlock 6 读写锁 7 死锁的避免 8 条件变量(信号量) 9 线程池概念和实现 9.1 …...

el-table实现穿梭功能
第一种 <template><el-row :gutter"20"><el-col :span"10"><!-- 搜索 --><div class"search-bg"><YcSearchInput title"手机号" v-model"search.phone" /><div class"search-s…...

Cron表达式_用于定时调度任务
一、Cron表达式简介 Cron表达式是一个用于设置计划任务的字符串,该字符串以5或6个空格分隔,分为6或7个域,每一个域代表任务在相应时间、日期或时间间隔执行的规则【Cron表达式最初是在类Unix操作中系统中使用的,但现在已经广泛应用…...

CeresPCL ICP精配准(点到面)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 ICP算法总共分为6个阶段,如下图所示: (1)挑选发生重叠的点云子集,这一步如果原始点云数据量比较巨大,一般会对原始点云进行下采样操作。 (2)匹配特征点。通常是距离最近的两个点,当然这需要视评判的准则而…...
CentOS安装kafka单机部署
一:保证机器上已经运行的有Java环境 服务器:centos7 kafka版本:3.5.1 二:下载kafka压缩包 下载地址 1.解压kafka压缩包 tar -zxvf kafka_2.13-3.5.1.tgz 2.我得是上传到了 /home目录下,配置文件server.propertie…...

蓝牙核心规范(V5.4)11.2-LE Audio 笔记之LE Auido架构
专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!&#x…...

福建江夏学院蔡慧梅主任一行莅临拓世科技集团,共探AI+时代教育新未来
在科技的海洋中,产业是那航行的巨轮,而教育则是指引方向的灯塔。当巨轮与灯塔相互辉映,产教融合与校企合作便成为了推动国家科技创新和人才培养的金钥匙,为未来开启一扇扇充满希望的大门。 2023年9月24日,福建江夏学院…...

使用Visual Leak Detector排查内存泄漏问题
目录 1、VLD工具概述 2、下载、安装VLD 2.1、下载VLD 2.2、安装VLD 3、VLD安装目录及文件说明 3.1、安装目录及文件说明 3.2、关于32位和64位版本的详细说明 4、在工程中引入VLD 5、内存泄漏检测实例讲解 5.1、程序启动报错 5.2、启动调试,查看内存泄漏报…...

如何设计一个 JVM 语言下的 LLM 应用开发框架?以 Chocolate Factory 为例
本文将介绍 Chocolate Factory 框架背后的一系列想法和思路。在我们探索和设计框架的过程中,受到了:LangChain4j、LangChain、LlamaIndex、Spring AI、Semantic Kernel、PromptFlow 的大量启发。 欢迎一起来探索:https://github.com/unit-mes…...

基础排序算法
插入排序(insertion sort) 插入排序每次循环将一个元素放置在适当的位置。像抓牌一样。手里的排是有序的,新拿一张牌,与手里的牌进行比较将其放在合适的位置。 插入排序要将待排序的数据分成两部分,一部分有序&#…...

Nginx的反向代理、动静分离、负载均衡
反向代理 反向代理是一种常见的网络技术,它可以将客户端的请求转发到服务器群集中的一个或多个后端服务器上进行处理,并将响应结果返回给客户端。反向代理技术通常用于提高网站的可伸缩性和可用性,并且可以隐藏真实的后端服务器地址。 #user…...

LLM-TAP随笔——大语言模型基础【深度学习】【PyTorch】【LLM】
文章目录 2.大语言模型基础2.1、编码器和解码器架构2.2、注意力机制2.2.1、注意力机制(Attention)2.2.2、自注意力机制(Self-attention)2.2.3、多头自注意力(Multi-headed Self-attention) 2.3、transforme…...

蓝桥杯备赛-上学迟到
上学迟到 P5707 【深基2.例12】上学迟到 - 洛谷 |https://www.luogu.com.cn/problem/P5707 题目介绍 题目描述 学校和 yyy 的家之间的距离为 s 米,而 yyy 以v 米每分钟的速度匀速走向学校。 在上学的路上,yyy 还要额外花费 1010 分钟的时间进行垃圾分…...

基于 MATLAB 的电力系统动态分析研究【IEEE9、IEEE68系节点】
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
2023百度之星 题目详解 公园+糖果促销
2023百度之星题目详解 文章目录 2023百度之星题目详解前言公园问题题目详解 夏日漫步问题问题详情题目详解 前言 这里为大家带来最新的2023百度之星的题目详解,后续还会继续更新,喜欢的小伙伴可以点个关注啦! 公园问题 今天是六一节&#…...
C++ 2019-2022 CSP_J 复赛试题横向维度分析(中)
上文讲解了2019~2022年第一题和第二题。第一题偏数学认知,算法较简单,第二题考查基本数据结构,如队列、栈……和基础算法,如排序、模拟……。 本文继续讲解第三题和第四题。 1. 第三题 1.1 2022 题目: 逻辑表达式…...

基于Spring Boot的IT技术交流和分享平台的设计与实现
目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 我国科学技术的不断发展,计算机的应用日渐成熟,其强大的功能给人们留下深刻的印象,它已经应用到了人类社会的各个层次的领域&#x…...
智算引领·创新未来 | 2023紫光展锐泛物联网终端生态论坛成功举办
9月21日,紫光展锐在深圳成功举办2023泛物联网终端生态论坛。论坛以“智算引领创新未来”为主题,吸引了来自信通院、中国联通、中国移动、中国电信、金融机构、终端厂商、模组厂商等行业各领域三百多位精英翘楚汇聚一堂,探讨在连接、算力驱动下…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...