如何将CSV文件批量转换成EXCEL文件簿(.xlsx格式)2023已更新(现在/栏目)
方法有三:
文件较少,数据小,用EXCEL打开或者导入csv文件,然后另存为excel工作簿。手动,耗时;
文件较多,数据中等,用CMD命令copy *.csv 新.csv,合并csv文件,然后再用1的方法打开,另存为excel 工作簿模式;
文件较多,数据较大,用EXCEL中的VBS代码批量转换,相当于把方法1的手动改为自动运行。
这两个多月,我又开始了不务正业模式。总是喜欢给自己找不痛快,在记忆衰退的阶段居然开始学习Google Data Analytics专业课程,各种代码、函数和数据库语言虐得我苦不堪言。好的是课程进入了最后阶段,要独立完成一个Case Study就可以结业了。
CAPSTONE里面有两个Case Study, 我选择了第一个。为一个共享单车公司分析数据,找出会员和散客的行为差异,并根据数据分析给出建议——如何将尽可能多的散客转化成会员,因为从会员身上获得的利润更高。
此前的课程中跟着老师分析这分析那,还可以勉强跟上。各种测验和考试相对比较友好,有重考和改错的机会,分数不算难看,其中几个更新成功(深度/讯息)课程连跌带爬最终凑合着过关了。但是现在独立来做一个项目,拿到任务的时候就一脸懵,不知道如何下手。
没办法,把课程从头梳理,按照流程一步一步做。独立走路有些困难,却也兴奋。
首先,我下载这个公司的数据。数据是以压缩文件ZIP格式保存在服务器上的,从2013年到2022年每一天的数据,非常庞大。接着解压缩,为了节约时间,全选所有需要解压缩的文件,点击鼠标右键,在菜单中选择解压缩,解压到事前新建的文件中。
解压后的文件是.CSV格式。我打算使用EXCEL或者GOOGLE SHEET分析数据,就打算将CSV格式转换成EXCEL文件。
首先想到的是能否批量选择,然后批量转换,但是右键里面没有这样的功能。批量更改文件的扩展名,将CSV批量修改为xlsx?但是修改后的文件乱码,没有用。
怎么办?
方法1
笨人就用笨办法吧。用EXCEL打开每一个CSV文件,然后另存为EXCEL工作簿xlsx格式。用EXCEL打开CSV文件有两种办法,一是直接点击打开,等待转换;二是打开一个空白的EXCEL文件,然后引入CSV文件。








方法2:
可是数据文件太多,这样打开、另存,花了几个小时只处理了一丁点文件,电脑还累得蓝屏。我想,这肯定不是处理大批量数据的正确方法。转念一想,这些CSV文件的格式基本一样,能否把它们合并在一起,然后用EXCEL打开,再另存为工作簿不就可以了吗?说干就干。
先把这些解压后的CSV文件放在一个文件夹中,



最后在文件夹中出现一个名为new.csv的文件。用EXCEL打开,但是由于文件太大,无法一次性引入所有的数据,要求在新的工作表中再次导入,在文件导入向导中删除已经导入数据,避免重复。但是文件导入向导中根本没有这个选项,不知道是不是我的Excel 2016版本太低的缘故。

数据导入后发现,行数达到了1048576,已经到了一个Excel单个工作表行数的极限,导入的数据也只是从2020年4月1日到2020年7月31日的数据,还有大量的数据没有引入。此时,我意识到,这个数据过于庞大,用EXCEL难以处理,必须要使用数据库工具。

此时,我打算将这个合并的CSV文件导入google cloud,用BigQuery处理数据。在添加本地数据时提示文件不能超过100M,但是这个合并后的文件超过2G,不可行。

看来将公司的数据以一定的组织结构存放在某个地方也是一门技术活,这可能属于Data Engineer或者Data Science的工作范畴了。
方法3:
怎么办呢?只有求助了。先找度娘。在百度里面搜“如何将CSV文件批量转换成EXCEL工作簿”,还真有人遇到同样的难题,也真有人尝试如何解决。经过多次的尝试,最终找到了解决的办法,用VBS代码。
打开一个空白的EXCEL表格,点击开发工具,点击Visual Basic.
如果你的EXCEL表格中没有显示“开发工具”这个按钮,那么点击“文件” 、点击“选项”、点击“自定义功能区”,勾选右侧“开发工具”前的小方框, 然后确定。

点击Visual Basic后,点击sheet1, 在右侧的空白窗口中复制粘贴以下代码:
Sub CAVToXLSX()
Dim fDir As String
Dim wB As Workbook
Dim wS As Worksheet
Dim fPath As String
Dim sPath As String
fPath = "C:UsersLogistics-RingchanDownloads2020_2022_DIVVY_CSV"
sPath = "C:UsersLogistics-RingchanDownloadsxlsx _by_code"
fDir = Dir(fPath)
Do While (fDir <> "")
If Right(fDir, 4) = ".csv" Or Right(fDir, 5) = ".csv" Then
On Error Resume Next
Set wB = Workbooks.Open(fPath & fDir)
'MsgBox (wB.Name)
For Each wS In wB.Sheets
wS.SaveAs sPath & wB.Name & ".xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Next wS
wB.Close False
Set wB = Nothing
End If
fDir = Dir
On Error GoTo 0
Loop
End Sub
需要注意的是:fPth = “C:…….”是存放csv文件的文件夹位置,这些csv文件需要转换成xlsx工作簿格式;
sPath = “C:……”是存放转换后得到的xlsx格式文件的文件夹位置。
要根据自己电脑的文件路径自行修改,最后的“”不能丢掉。
粘贴后点击“运行“,耐心等待,在xlsx文件中会一个一个出现转换后的EXCEL文件。

这个代码相当于手动的打开-另存为的转换模式改为电脑自动运行。还是需要时间的,不是秒成。
代码来自知乎森眺的 回答(https://www.zhihu.com/question/39234324/answer/284625834)
总体的思路启发来自百度经验的分享https://jingyan.baidu.com/article/380abd0a032e681d91192c74.html

代码是个共享的世界。在此记录下来,一是为了当天复习,二是为了日后复习和查询,三是为了帮助有同样困惑的人。
数据总算转换完成了,下面要开始Clean工作。
#数据分析#
已更新(访谈/锐评) 更新成功(评论/公开)