首页 > 编程知识 正文

Python把excel文件转化成csv,python excel 转csv

时间:2023-05-06 18:23:46 阅读:247726 作者:2720

啊,本智障终于有机会输出有价值的答案了。最近我遇到了和题主类似的问题,即需要将一批.csv文件转换为.xlsx文件。但本智障一开始用的是最简单的办法,即将一个个.csv文件打开后再另存为.xlsx文件,但随着文件数的增多,实在是受不了这种重复操作了,于是今天上网看看能否利用编程之类的方法解决该问题,下面开始正文。

本智障找到的第一个比较成功的方法如下,链接:https://jingyan.baidu.com/article/6b97984deabfbc1ca2b0bfee.html​jingyan.baidu.com

使用的是Excel的宏功能,使用前需要把.csv文件先整理到一个文件夹中,宏中的代码如下:

ChDir "C:UsersAdministratorDesktop新建文件夹"

Dim sDir As String

Dim curdir As String

curdir = "C:UsersAdministratorDesktop新建文件夹"

sDir = Dir(curdir & "*.csv")

While Len(sDir)

Workbooks.Open Filename:=curdir & "" & sDir

Dim temp As String

temp = Left(sDir, Len(sDir) - 4)

ActiveWorkbook.SaveAs Filename:=curdir & "" & temp & ".xls", _

FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close

sDir = Dir

Wend

通过在文件中新建Excel表,再将该代码复制到Excel的宏中,即可成功地文件夹中的.csv文件转换为.xls文件,其实到这一步对于本智障已经基本够用了。但本智障的理想目标还是想将.csv文件全部转换为.xlsx格式,于是本智障自作聪明的将上述代码中

ActiveWorkbook.SaveAs Filename:=curdir & "" & temp & ".xls", _ 中的.xls换为了.xlsx。粘贴到宏中发现,居然可以运行!文件夹中也出现了相应的.xlsx文件。但当我兴致勃勃地点开文件时,却弹出“本文件已损环或格式不匹配”的提示,并且文件中是空白的一片。本智障十分气馁并打算放弃时,却发现了ZH-ST的答案,十分高兴如何快速批量将csv转换成excel文件?​www.zhihu.com

然而,当我按答主的答案粘贴到宏中运行时,却发现无法运行,但看ZH-ST答主对自己的答案十分有信心,我还是相信他的答案是大体正确的。于是我将ZH-ST答主的代码与百度经验中的代码进行对比,寻找问题,后发现两段代码中都有这样一段

ActiveWorkbook.SaveAs Filename:=curdir & "" & temp & ".xls", _

FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close

sDir = Dir

ActiveWorkbook.SaveAs Filename:=curdir & "" & temp & ".xlsx", _

FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close

sDir = Dir

本智障认为这应该是与文件保存有关的操作,仔细对比后,恍然大悟,原来本智障将第一段代码中的.xls换为.xlsx还是不够的。还应该选择保存文件的格式,第一段代码中的FileFormat:=xlExcel8中的xlExcel8应该是.xls文件格式的对应代码。而我若要保存为.xlsx格式,则还应将xlExcel8替换成.xlsx格式对应的文件代码,通过ZH-ST答主的答案,我猜测.xlsx格式的文件代码应为xlOpenXMLWorkbook。于是我将百度经验中的代码重新修正为

ChDir "C:UsersAdministratorDesktop新建文件夹"

Dim sDir As String

Dim curdir As String

curdir = "C:UsersAdministratorDesktop新建文件夹"

sDir = Dir(curdir & "*.csv")

While Len(sDir)

Workbooks.Open Filename:=curdir & "" & sDir

Dim temp As String

temp = Left(sDir, Len(sDir) - 4)

ActiveWorkbook.SaveAs Filename:=curdir & "" & temp & ".xlsx", _

FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close

sDir = Dir

Wend

上面代码第一行和第四行的C:UsersAdministratorDesktop新建文件夹指的是你想批量转换的Excel文件所在的文件夹路径,根据自己的实际情况自行替换。

再粘贴到Excel中的宏中运行,成功的将所有.csv文件转换为.xlsx格式,并可以正常打开,不再提示文件损坏。虽然回头再看这是个很不值一提的问题,但本智障之前从没有用过Excel的宏,所以通过自己摸索解决这个问题,本智障还是挺高兴的。

为什么社会上的Java程序员还没有饱和?go环境变量历史中提交的图片或压缩文件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。