我正在寻找一种方法来将 .csv 文件目录快速转换为 .xls 或 .xlsx 格式(如果我可以执行其中任一操作就好了)。
有没有简单的方法可以做到这一点,或者我需要安装第三方程序?
答案1
假设你喜欢并且拥有 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”。
对于 Excel 2007+(xlsx 文件),最多支持约 1 Mrows:
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
我同情你!我不得不做同样的转换。我试图使用 openpyxl 处理数据,但由于某种原因,它无法对 csv 文件执行我想要的操作,因此必须先转换为 xlsx。
我使用了 Python 和 Pandas。我使用的是 Python 3。
import pandas as pd
import os
for (dirname, dirs, files) in os.walk('.'): #source directory
for filename in files:
if filename.endswith('.csv'):
df = pd.read_csv(filename)
df.to_excel(filename + '.xlsx')
os.remove(filename) #deletes csv file
答案3
这里是一个据称可以完成该任务的 perl 脚本,但是对于 Excel 中已经内置的功能来说,似乎需要做很多工作。
答案4
对于 Windows?CoolUtils”总 CSV 转换器“命令行版本支持多种输出格式包括 JSON、Access、DBF、XML 和 SQL而且只需 40 美元。它可以递归子目录、删除原始 CSV 文件、将所有文件合并为一个文档等等。
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
“高级 CSV 转换器“($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 的“转换 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
“数值“是一个可以执行直接转换的开源电子表格程序,但它在 2014 年 8 月已在 Windows 上停止使用。
ssconvert file.csv file.xlsx
如果你安装了 Python,“csv2odf“是一个开源选项,使用模板方法生成 ods、odt、html、xlsx 或 docx 文件。
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx