影刀RPA 数据库数据导出:多格式导出与报表生成
影刀RPA 数据库数据导出多格式导出与报表生成署名林焱什么情况用RPA采集了三天数据存到SQLite/MySQL里老板说给我个Excel看看。你不能让他去看数据库吧数据导出是RPA流程的最后一公里——处理完的数据得变成人能看懂的格式。典型场景每日采集结果导出Excel日报自动发邮件给负责人数据库数据按条件筛选后导出CSV供其他系统导入多维度统计结果分Sheet导出生成月度报表按客户/部门/日期分文件导出每个文件一份怎么做1. 基础导出SQL查询结果导出Excelimportsqlite3importpandasaspd db_pathrC:\RPAData\products.dboutput_pathrC:\RPAData\导出\商品数据.xlsxconnsqlite3.connect(db_path)# 查询并直接导出[video(video-cl6Nej5o-1784264844890)(type-csdn)(url-https://live.csdn.net/v/embed/525000)(image-https://v-blog.csdnimg.cn/asset/23da3fe1f67a47106d725406cfde9a97/cover/Cover0.jpg)(title-拼多多店群自动化上架方案)]dfpd.read_sql_query(SELECT product_name, price, shop, crawl_time FROM products ORDER BY price DESC,conn)df.columns[商品名称,价格,店铺,采集时间]# 重命名列df.to_excel(output_path,indexFalse,sheet_name商品列表)conn.close()print(f导出完成{output_path}共{len(df)}条)2. 多Sheet导出importsqlite3importpandasaspd db_pathrC:\RPAData\products.dboutput_pathrC:\RPAData\导出\商品统计报表.xlsxconnsqlite3.connect(db_path)withpd.ExcelWriter(output_path,engineopenpyxl)aswriter:# Sheet1: 全部商品df_allpd.read_sql_query(SELECT * FROM products ORDER BY price DESC,conn)df_all.to_excel(writer,indexFalse,sheet_name全部商品)# Sheet2: 按店铺统计df_shoppd.read_sql_query( SELECT shop as 店铺, COUNT(*) as 商品数, ROUND(AVG(price), 2) as 均价, MAX(price) as 最高价, MIN(price) as 最低价 FROM products GROUP BY shop ORDER BY 商品数 DESC ,conn)df_shop.to_excel(writer,indexFalse,sheet_name店铺统计)# Sheet3: 价格区间分布![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a39d3dfe08ad4d16b3e3c3853c8467e7.png#pic_center)df_rangepd.read_sql_query( SELECT CASE WHEN price 50 THEN 0-50元 WHEN price 100 THEN 50-100元 WHEN price 200 THEN 100-200元 WHEN price 500 THEN 200-500元 ELSE 500元以上 END as 价格区间, COUNT(*) as 商品数, ROUND(AVG(price), 2) as 区间均价 FROM products GROUP BY 价格区间 ORDER BY 区间均价 ,conn)df_range.to_excel(writer,indexFalse,sheet_name价格分布)# Sheet4: TOP20热销df_toppd.read_sql_query(SELECT product_name, price, shop FROM products ORDER BY price DESC LIMIT 20,conn)df_top.to_excel(writer,indexFalse,sheet_nameTOP20)conn.close()print(f多Sheet报表导出完成{output_path})3. 按条件分文件导出importsqlite3importpandasaspdimportos db_pathrC:\RPAData\products.dboutput_dirrC:\RPAData\导出\按店铺os.makedirs(output_dir,exist_okTrue)connsqlite3.connect(db_path)# 获取所有店铺列表cursorconn.cursor()cursor.execute(SELECT DISTINCT shop FROM products)shops[row[0]forrowincursor.fetchall()ifrow[0]]forshopinshops:dfpd.read_sql_query(SELECT * FROM products WHERE shop ? ORDER BY price DESC,conn,params(shop,))# 文件名清理去掉非法字符safe_nameshop.replace(/,_).replace(\\,_).replace(:,_).replace(*,_).replace(?,_).replace(,_).replace(,_).replace(,_).replace(|,_)file_pathos.path.join(output_dir,f{safe_name}_商品列表.xlsx)df.to_excel(file_path,indexFalse,sheet_name商品列表)print(f导出{file_path}{len(df)}条)conn.close()print(f\n按店铺分文件导出完成共{len(shops)}个文件)影刀操作配合导出后用【发送邮件】组件把Excel作为附件发送给对应店铺负责人。4. 导出CSV大数量量importsqlite3importcsv db_pathrC:\RPAData\products.dboutput_pathrC:\RPAData\导出\商品数据.csvconnsqlite3.connect(db_path)cursorconn.cursor()# 分批读取写入CSV避免内存溢出BATCH_SIZE5000cursor.execute(SELECT product_name, price, shop, crawl_time FROM products ORDER BY id)withopen(output_path,w,newline,encodingutf-8-sig)asf:# utf-8-sig解决Excel中文乱码writercsv.writer(f)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a89c7a7baaeb43148e1fc2f1c12adc80.png#pic_center)writer.writerow([商品名称,价格,店铺,采集时间])# 表头total0whileTrue:rowscursor.fetchmany(BATCH_SIZE)ifnotrows:breakwriter.writerows(rows)totallen(rows)print(f已导出{total})conn.close()print(fCSV导出完成{output_path}共{total}条)5. 导出JSON对接APIimportsqlite3importjsonfromdatetimeimportdatetime db_pathrC:\RPAData\products.dboutput_pathrC:\RPAData\导出\商品数据.jsonconnsqlite3.connect(db_path)conn.row_factorysqlite3.Row# 返回可按列名访问的行对象cursorconn.cursor()cursor.execute(SELECT * FROM products ORDER BY price DESC LIMIT 100)rowscursor.fetchall()# 转为JSONdata[]forrowinrows:itemdict(row)# 处理特殊类型ifcrawl_timeinitemanditem[crawl_time]:item[crawl_time]str(item[crawl_time])data.append(item)withopen(output_path,w,encodingutf-8)asf:json.dump(data,f,ensure_asciiFalse,indent2)conn.close()print(fJSON导出完成{output_path}共{len(data)}条)有什么坑坑1Excel单Sheet最多1048576行如果数据超过100万行Excel放不下会报错或截断。解决分文件或分Sheet。importsqlite3importpandasaspdimportos db_pathrC:\RPAData\big_data.dboutput_dirrC:\RPAData\导出connsqlite3.connect(db_path)MAX_ROWS1000000# 每个文件最多100万行cursorconn.cursor()cursor.execute(SELECT COUNT(*) FROM big_table)totalcursor.fetchone()[0]file_count(totalMAX_ROWS-1)//MAX_ROWSforiinrange(file_count):offseti*MAX_ROWS dfpd.read_sql_query(fSELECT * FROM big_table LIMIT{MAX_ROWS}OFFSET{offset},conn)file_pathos.path.join(output_dir,f数据_part{i1}.xlsx)df.to_excel(file_path,indexFalse)print(f导出{file_path}{len(df)}条)conn.close()坑2CSV中文乱码用Excel打开CSV文件中文全是乱码。原因Excel默认用ANSI编码读取CSV而Python默认用UTF-8写入。# 错误用utf-8withopen(path,w,encodingutf-8)asf:# Excel打开乱码writercsv.writer(f)# 正确用utf-8-sig带BOM头![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2ae4d19c49e64a4895ab9de9e1486940.png#pic_center)withopen(path,w,encodingutf-8-sig)asf:# Excel打开正常writercsv.writer(f)坑3pandas to_excel的日期格式数据库里的日期字段导出后变成2024-01-15 10:30:00这种字符串格式Excel不认为是日期。解决TEMU店群如何管理运营importsqlite3importpandasaspd connsqlite3.connect(db_path)dfpd.read_sql_query(SELECT * FROM orders,conn)# 转换日期列为datetime类型df[create_time]pd.to_datetime(df[create_time])# 导出到Excel时格式化withpd.ExcelWriter(output_path,engineopenpyxl)aswriter:df.to_excel(writer,indexFalse,sheet_name订单)# 获取worksheet对象设置日期格式worksheetwriter.sheets[订单]# 找到日期列的列号date_coldf.columns.get_loc(create_time)1# 1因为从1开始forrowinrange(2,len(df)2):# 从第2行开始第1行是表头cellworksheet.cell(rowrow,columndate_col)cell.number_formatYYYY-MM-DD HH:MM:SSconn.close()坑4导出文件被占用导致写入失败Excel正打开着导出文件RPA再次导出会报Permission denied。解决importosimporttimedefsafe_export(df,file_path,max_retries3):安全导出文件被占用时自动重试forattemptinrange(max_retries):try:df.to_excel(file_path,indexFalse)returnTrueexceptPermissionError:ifattemptmax_retries-1:print(f文件被占用{5}秒后重试...{attempt1}/{max_retries})time.sleep(5)else:# 重命名文件避免冲突base,extos.path.splitext(file_path)file_pathf{base}_{int(time.time())}{ext}df.to_excel(file_path,indexFalse)print(f原文件被占用已另存为{file_path})returnTruereturnFalse坑5大数据量导出内存溢出pandas的read_sql_query会把全部结果加载到内存。50万行数据可能占用2GB内存导致OOM。# 错误一次性加载全部dfpd.read_sql_query(SELECT * FROM huge_table,conn)# 内存爆炸# 正确用fetchmany分批读取cursor.execute(SELECT * FROM huge_table)withopen(output_path,w,newline,encodingutf-8-sig)asf:writercsv.writer(f)writer.writerow([desc[0]fordescincursor.description])# 表头whileTrue:rowscursor.fetchmany(5000)ifnotrows:breakwriter.writerows(rows)或者用SQLAlchemy的chunksize参数fromsqlalchemyimportcreate_engineimportpandasaspd enginecreate_engine(fsqlite:///{db_path})# 每次只读10000行![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c71ee57822c14b449597023fdbe0c67e.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2a91e564ee2e4a6298064bb25bf5fe98.png#pic_center)forchunkinpd.read_sql(SELECT * FROM huge_table,engine,chunksize10000):# 处理每批数据chunk.to_csv(output_path,modea,headernotos.path.exists(output_path),indexFalse,encodingutf-8-sig)

相关新闻

CANN/asc-devkit:exp2f函数文档

CANN/asc-devkit:exp2f函数文档

exp2f 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann…

2026/7/17 14:12:10阅读更多 →
SharpSCADA:如何用开源C SCADA快速构建专业工业监控系统?

SharpSCADA:如何用开源C SCADA快速构建专业工业监控系统?

SharpSCADA:如何用开源C# SCADA快速构建专业工业监控系统? 【免费下载链接】SharpSCADA C# SCADA 项目地址: https://gitcode.com/gh_mirrors/sh/SharpSCADA 你是否正在寻找一款功能强大、易于定制且完全免费的工业监控系统?面对高昂的…

2026/7/17 14:07:09阅读更多 →
DLSS Swapper完整教程:如何一键智能管理游戏DLSS版本,免费提升45%性能

DLSS Swapper完整教程:如何一键智能管理游戏DLSS版本,免费提升45%性能

DLSS Swapper完整教程:如何一键智能管理游戏DLSS版本,免费提升45%性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款完全免费的开源工具,能够智能管理所有游戏的…

2026/7/17 14:07:09阅读更多 →
Puppetboard调度器配置教程:自动化缓存和预计算任务

Puppetboard调度器配置教程:自动化缓存和预计算任务

Puppetboard调度器配置教程:自动化缓存和预计算任务 【免费下载链接】puppetboard Web frontend for PuppetDB 项目地址: https://gitcode.com/gh_mirrors/pu/puppetboard Puppetboard作为PuppetDB的Web前端工具,其调度器功能能够显著提升系统性能…

2026/7/17 15:17:30阅读更多 →
MQTT.js实战指南:如何在3种关键场景中构建可靠的物联网通信架构

MQTT.js实战指南:如何在3种关键场景中构建可靠的物联网通信架构

MQTT.js实战指南:如何在3种关键场景中构建可靠的物联网通信架构 【免费下载链接】MQTT.js The MQTT client for Node.js and the browser 项目地址: https://gitcode.com/gh_mirrors/mq/MQTT.js MQTT.js是一个基于JavaScript的MQTT协议客户端库,专…

2026/7/17 15:17:30阅读更多 →
purple-team-attack-automation高级技巧:自定义TTPs模块开发全攻略

purple-team-attack-automation高级技巧:自定义TTPs模块开发全攻略

purple-team-attack-automation高级技巧:自定义TTPs模块开发全攻略 【免费下载链接】purple-team-attack-automation Praetorians public release of our Metasploit automation of MITRE ATT&CK™ TTPs 项目地址: https://gitcode.com/gh_mirrors/pu/purple-…

2026/7/17 15:17:30阅读更多 →
如何用MisakaX解锁iOS终极定制功能:从新手到专家的完整指南

如何用MisakaX解锁iOS终极定制功能:从新手到专家的完整指南

如何用MisakaX解锁iOS终极定制功能:从新手到专家的完整指南 【免费下载链接】misakaX iOS /iPadOS 16.0 - 18.0 / 18.1 beta 4, An ultimate customization tool, uilitizing the bug that makes TrollRestore possible. 项目地址: https://gitcode.com/gh_mirror…

2026/7/17 15:17:30阅读更多 →
告别重复图片烦恼:AntiDupl.NET智能图片去重工具全解析

告别重复图片烦恼:AntiDupl.NET智能图片去重工具全解析

告别重复图片烦恼:AntiDupl.NET智能图片去重工具全解析 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经花费数小时在电脑中寻找某张特定照片&…

2026/7/17 15:17:30阅读更多 →
Kohya_SS完整指南:如何零基础掌握AI模型训练与LoRA微调

Kohya_SS完整指南:如何零基础掌握AI模型训练与LoRA微调

Kohya_SS完整指南:如何零基础掌握AI模型训练与LoRA微调 【免费下载链接】kohya_ss 项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss 你是否曾被AI模型训练的技术门槛吓退?是否想拥有自己的个性化AI模型却不知从何入手?Ko…

2026/7/17 15:12:29阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/17 10:42:55阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/17 13:22:23阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/17 13:22:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →