python--excel文件格式转换

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了python--excel文件格式转换脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

最近工作中要用到pandas读取excel表格数据,遇到各种问题,在此借这此发布机会统一记录一下,以供同学们避免不必要的坑,

首先还是要把标题内容给解决,看代码之前,一定要看完下面的话。

1、我主要遇到的问题是,在Pandas打开excel时,会报错,具体如下:

python--excel文件格式转换

 大概就是说:不支持的格式,或损坏的文件

其实文件没有损坏,也是可以打开的格式。在我手动打开的时候会有这种提示:

python--excel文件格式转换

 

保存时会有这种提示:

 

python--excel文件格式转换

 

然后另存为之后,再打开就没有这种提示了(这种提示Office打开也是会有的),pandas也可以正常读取了,

然而如果有100个这种文件呢,保存100次?

怎么可能,学编程不就是为了解决,无聊重复繁琐的事情,我就想到了用代码进行格式转换。

开始做格式转换的时候,发现在格式转换时会打开文件,还是会有弹窗,导致运行异常,无法转换。

想到解决办法是,启动两个进程,一个用来打开文件转换,一个用来点击确定,取消弹框,问题就解决了。

 

python--excel文件格式转换

python--excel文件格式转换

 1 import win32com.client as win32
 2 import os
 3 import Sys
 4 import time
 5 import win32api
 6 import threading
 7 import pythoncom
 8 
 9 # 获取桌面路径‘文档格式转换’文件夹中所有文件
10 desktop = os.path.join(os.path.expanduser("~"), 'Desktop')
11 file_url = desktop+'\'+'文档格式转换'
12 if not os.path.exists(file_url):
13     os.mkdir(m2)
14 list_file = os.listdir(file_url)
15 
16 # 根据文件多少进行循环按键 Enter
17 def enter():
18     for i in range(len(list_file)):
19         time.sleep(3)
20         win32api.keybd_event(13,0,0,0)
21 
22 # excel 文件格式转换,并另存为到‘待处理数据’文件夹中
23 def filegeshi():
24     file_PEnding = desktop + '\待处理数据'
25     if not os.path.exists(file_pending):
26         os.mkdir(file_pending)
27     # 循环文件列表,并循环转换文件
28 
29     for ex_name in list_file:
30         fname = file_url + "\" + ex_name               # 文件路径
31         save_as_file = file_pending + "\" + ex_name    # 保存文件路径
32         pythoncom.CoInITialize()                        # 不加这句话会报错,不知为什么
33         excel = win32.gencache.Ensuredispatch('Excel.Application')
34         wb = excel.WorkBooks.Open(fname)                # 打开要转换的excel
35         wb.SaveAs(save_as_file, FileFormat = 51)        # 文件格式 = 51 为 .xlsx 格式
36         # wb.SaveAs(save_as_file, FileFormat = 56)      # 文件格式 = 56 为 .xls 格式
37         wb.Close()
38         excel.Application.Quit()
39 
40 # 主程序
41 def file_conversion():
42     # 如果‘文档格式转换‘文件夹中为空,则不处理,退出程序
43     if len(list_file) > 0:
44         # 开启两个线程,一个用来打开文件,一个用来按键 Enter
45         # 关键点 .join(),设置让主线程等待所有的子线程都执行完毕,再执行
46         thread_1 = threading.Thread(target=filegeshi)
47         thread_2 = threading.Thread(target=enter)
48         thread_1.start()
49         thread_2.start()
50         thread_1.join()
51         thread_2.join()
52     else:
53         sys.exit()
54 file_conversion()
excel文件格式转换

2、pandas 读取文件时,其他天坑

最新pandas在读取“.xlsx”时,会报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported

原因为,xlrd更新到了2.0.1版本,只支持.xls文件格式,

解决办法,可以先卸载当前版本xlrd,安装旧版本的 xlrd,

pip uninstall xlrdpip install xlrd==1.2.0

好了,就这些吧,如有新的问题,再来记录填坑

脚本宝典总结

以上是脚本宝典为你收集整理的python--excel文件格式转换全部内容,希望文章能够帮你解决python--excel文件格式转换所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。