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

min*_*nda 12 conversion microsoft-excel

我正在寻找一种将 .csv 文件目录快速转换为 .xls 或 .xlsx 格式的方法(如果我能做到其中之一就好了)。

有没有简单的方法可以做到这一点,或者我需要安装第三方程序吗?

Nic*_*k T 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')
Run Code Online (Sandbox Code Playgroud)

在包含所有 CSV 文件的目录中运行,它会将它们全部转换并在末尾添加一个“.xls”。

对于支持最多约 1 Mrows 的 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')
Run Code Online (Sandbox Code Playgroud)

  • 在 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.csv)。 xlsx)。 (2认同)