找回密码
 立即注册
搜索
查看: 1804|回复: 17

[求助] [已解决]python写入xlsx文件导致程序崩溃

[复制链接]
     
发表于 2025-7-28 20:47 | 显示全部楼层 |阅读模式
本帖最后由 腹黑眼镜 于 2025-7-29 07:51 编辑

是这样,我有个pyqt5的小工具,主要功能就是帮我读取一堆xlsx,csv格式的文件,然后把我要的数据揉到一起

这个程序有段代码如下
  1. class KpiWorker(QThread):
  2.     State_updated = pyqtSignal(str)

  3.     def __init__(self, target_dir, dfs):
  4.         super().__init__()
  5.         self.target_dir = target_dir
  6.         self.dfs = dfs

  7.     def run(self):
  8.         **这里是数据处理过程,打码
  9.         with pd.ExcelWriter(obj_group_file_path, engine='openpyxl') as writer:
  10.             obj_group.to_excel(writer, sheet_name='Sheet1', index=False)
复制代码


调试模式下,每次运行到这里,在指定的目录下会生成对应的文件,但该文件大小一直是0,没有数据写入
然后我把调试断掉,会提示
PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\xxx~1\\AppData\\Local\\Temp\\openpyxl.5r5zyyxj'

我把写入xslx文件的代码,改成写入csv格式,程序就正常运行,问了D老师也没结果,求助是什么问题,要怎么解决
因为生成的文件要给另一个程序用,那个程序只读xlsx或者xls文件。所以不想保存成csv

评分

参与人数 1战斗力 -1 收起 理由
碧池团团子 -1 自己问ai为什么错

查看全部评分

回复

使用道具 举报

头像被屏蔽
发表于 2025-7-28 20:50 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2025-7-28 20:58 来自手机 | 显示全部楼层
Excel库用对了吗?
路径换成D盘试试,用系统盘总有权限问题。

— from HONOR PGT-AN00, Android 15, S1 Next Goose v3.5.99
回复

使用道具 举报

     
 楼主| 发表于 2025-7-28 21:03 | 显示全部楼层
回复2,3楼:
不是保存在C盘,我现在改成保存在程序同个目录下试试看,运行比较久一会才有结果
回复

使用道具 举报

     
发表于 2025-7-28 21:09 来自手机 | 显示全部楼层
问ai啊
看报错就是openpyxl没有c盘写入临时文件的权限,从ai的方法里整了个看着靠谱的

3. 指定不同的临时文件夹
openpyxl 默认使用系统临时目录,可以尝试手动指定一个有权限的临时目录:

python
import tempfile
import pandas as pd

# 设置临时目录(确保你有写入权限)
tempfile.tempdir = r"C:\Your\Custom\Temp\Path"  # 替换为短路径,如 C:\temp

with pd.ExcelWriter(obj_group_file_path, engine='openpyxl') as writer:
    obj_group.to_excel(writer, sheet_name='Sheet1', index=False)
回复

使用道具 举报

     
 楼主| 发表于 2025-7-28 21:29 | 显示全部楼层
GJRstone 发表于 2025-7-28 21:09
问ai啊
看报错就是openpyxl没有c盘写入临时文件的权限,从ai的方法里整了个看着靠谱的

这个方法也是崩,修改后,错误提示会变成我指定的目录
修改保存的路径也不行
回复

使用道具 举报

发表于 2025-7-28 21:36 | 显示全部楼层
建议问AI,回答比坛友快得多,水平也不差
回复

使用道具 举报

     
发表于 2025-7-28 21:38 | 显示全部楼层
这种问题当然是问ai,照着做就行

回复

使用道具 举报

     
发表于 2025-7-28 21:41 来自手机 | 显示全部楼层
你试着写到另一个文件看看,是不是文件本身出了问题
回复

使用道具 举报

     
 楼主| 发表于 2025-7-28 21:45 | 显示全部楼层
回楼上各位
我就是问了AI没结果所以才来这里问的
回复

使用道具 举报

     
发表于 2025-7-28 22:03 来自手机 | 显示全部楼层
腹黑眼镜 发表于 2025-7-28 21:45
回楼上各位
我就是问了AI没结果所以才来这里问的

你又不放环境又不放逻辑,坛友也是帮你人肉ai啊。换目录了还报错说明不是目录有问题,是你openpyxl有问题啊,有虚拟环境查虚拟环境,没装过openpyxl就装openpyxl
回复

使用道具 举报

发表于 2025-7-28 22:08 | 显示全部楼层
先排除两个弱智原因:
1,环境里没装excel
2,你开着一个同文件名excel
回复

使用道具 举报

发表于 2025-7-28 22:13 | 显示全部楼层
最好把报错信息发完整,怀疑漏掉了真正的原因
回复

使用道具 举报

     
发表于 2025-7-28 22:31 来自手机 | 显示全部楼层
你不会对ai也是说这些而不是抛给他报错信息的吧

—— 来自 samsung SM-F9460, Android 15, 鹅球 v3.5.99-alpha
回复

使用道具 举报

     
发表于 2025-7-28 23:06 | 显示全部楼层
writer引擎换成xlsxwriter试试看?
回复

使用道具 举报

     
发表于 2025-7-29 01:10 来自手机 | 显示全部楼层
看起来是openpyxl的问题,先按楼上老哥的思路换个引擎,实在不行用wsl装ubuntu,在ubuntu上跑能避免windows各种恶心的问题
回复

使用道具 举报

     
发表于 2025-7-29 06:04 | 显示全部楼层
本帖最后由 勿徊哉 于 2025-7-29 06:09 编辑

楼上+1。

或者好像是的多线程问题?QThread结束了清理完文件或者还在占用文件,excel还没存完。
我不是程序员不知道怎么搞多线程。那最简单的就是等csv存好,再读取转存成excel。所谓把未知问题转为已知问题解决

回复

使用道具 举报

     
 楼主| 发表于 2025-7-29 07:50 | 显示全部楼层
Azcarlo 发表于 2025-7-28 23:06
writer引擎换成xlsxwriter试试看?

谢谢,换成xlsxwriter后,目前是没问题了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2026-6-24 22:26 , Processed in 0.143752 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表