如何将.csv批量转换为.xls / xlsx


11

我正在寻找一种将.csv文件目录快速转换为.xls或.xlsx格式的方法(如果可以执行/或,那会很好)。

有没有简单的方法可以执行此操作,或者我需要安装第三方程序?


1
不知道为什么需要这样做。csv在excel中打开得很好。任何需要交互的人都可以打开而不会出现问题。
乔迪

2
您是正确的,Excel打开csv和xls / xlsx就好了。但是,其他程序则没有。=)
mindless.panda

1
那么,您希望在什么程序中使用它?
柯克(Kirk)

Answers:


21

假设您喜欢并拥有Python(出于某种原因),则可以使用我提过的脚本:

import os
import glob
import csv
import xlwt # from http://www.python-excel.org/

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = xlwt.Workbook()
    ws = wb.add_sheet('data')
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, val in enumerate(row):
                ws.write(r, c, val)
    wb.save(csvfile + '.xls')

在包含所有CSV文件的目录中运行,它将全部转换并在最后加上“ .xls”。

对于最多支持1个Mrow的Excel 2007+(xlsx文件):

import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = openpyxl.Workbook()
    ws = wb.active
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader, start=1):
            for c, val in enumerate(row, start=1):
                ws.cell(row=r, column=c).value = val
    wb.save(csvfile + '.xlsx')

2
在Macintosh上,我使用了上面的xlsx版本。我不得不将“ rb”更改为“ rU”,以解决Python中的“通用换行模式”错误。对“行数枚举”和“ val枚举行”使用“ start = 1”会在实际数据上方创建空白行,在左侧保留空白列。我将两者都更改为“ start = 0”,这开始了电子表格(Excel 2011)的单元格A1(左上方)中的数据。我还将最后一行更改为“ wb.save(os.path.splitext(csvfile)[0] +'.xlsx')”,以删除文件的.csv部分(例如,将nnnn.csv.xlsx更改为nnnn。 xlsx)。
Michael S Taylor

1

是应该执行的perl脚本,但是似乎要做很多已经内置在Excel中的工作似乎需要很多工作。


1

您的问题还有很多话要说。

假设您的CVS文件的目录结构类似于

c:\randompath\CSV\
    a.csv
    b.csv
    c.csv
      :
      :
    z.csv

你想结束

c:\randompath\XLS\
    a.xls
    b.xls
    c.xls
      :
      :
    z.xls

我可以根据您愿意做的前期工作与清理工作的比例来考虑要走的三种路线。

  1. 无预编码:使用Windows资源管理器导航到CSV文件,使用最合适的方法选择要转换的文件(套索,Ctrl + a,Ctrl +单击,Shift +单击),然后右键单击所选文件之一,然后单击打开。这将在Excel中打开所有文件。然后,对于每个文件,您可以选择“文件”和“另存为”,最后选择要保存到的新文件格式。
  2. 一个简单的批处理文件:该批处理文件可以对每个循环结构使用通配符和/或a来为您打开每个CSV文件,然后您可以像以前一样手动处理它们。
  3. 在Excel电子表格中创建VBA程序:VBA可以自动打开每个CSV文件,然后将其保存为Excel格式。您甚至可以添加一个简单的消息框,当打开每个文件时,该消息框提供xls或xlsx的选择。

请注意,我还没有编写任何代码来执行这些操作(但是)我只是提供一个起点的想法。也许如果您可以提供有关所需内容的更多详细信息,则可以从我或其他论坛成员处获得有关如何处理方法的更详细的说明。


0

对于Windows?CoolUtils“ Total CSV Converter ”命令行版本支持多种输出格式,包括JSON,Access,DBF,XML和SQL,仅售40美元。它可以递归子目录,删除原始CSV文件,将所有文件合并为一个文档等等。

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

Advanced CSV Converter ”(40-200美元)是一种便携式EXE,可以快速完成此过程,而无需安装Excel。

http://www.dbf2002.com/csv-converter/commandline.html

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

SoftInterface的“ Convert XLS ”可以使用Excel(但不是必需的),并且价格更高(500美元以上),但支持更多格式并具有更多选项。

http://www.softinterface.com/Convert-XLS/Convert-XLS.htm

"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2

Gnumeric ”是一个开源电子表格程序,可以执行直接转换,但Windows于2014年8月停止使用。

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

如果您安装了Python,则“ csv2odf ”是一个开放源代码选项,它使用模板化的方法来生成ods,odt,html,xlsx或docx文件。

http://sourceforge.net/projects/csv2odf/

csv2odf data.csv template.odt output.xlsx

0

使用Node 8+和bash:

npm install -g pguardiario/csv2xlsx

for file in *.csv; do csv2xlsx "$file"; done

-1

简单方法:从Microsoft Excel打开csv文件,将文本转换为列(选择单元格/文本,单击菜单-数据-文本至列),将选项设置为转换。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.