平时开发时文件读写都是csv比较简单方便,不过有时需要给别人提供excel,或者别人提供excel给自己,那么csv和excel的互转工具就十分有必要写一个了
下面代码保存一个py文件,比如 csvtool.py
,放到csv或者excel所在的文件夹,运行即可
# -*- coding: utf-8 -*-
import csv
import os
import xlrd
import xlwt
def csv_2_xls():
csvfiles = os.listdir('.')
csvfiles = filter(lambda x: x.endswith('csv'), csvfiles)
for csvfile in list(csvfiles):
finename = csvfile.split('.')[0]
if not os.path.exists('excel'):
os.mkdir('excel')
xlsfile = 'excel/' + finename + '.xls'
with open(csvfile, 'r') as f:
reader = csv.reader(f)
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('sheet1') # 创建一个sheet表格
i = 0
for line in reader:
j = 0
for v in line:
sheet.write(i, j, v)
j += 1
i += 1
workbook.save(xlsfile) # 保存Excel
print(f'转换完成: {csvfile} -> {xlsfile}')
def xls_2_csv():
xlsfiles = os.listdir('.')
xlsfiles = filter(lambda x: x.endswith('xls'), xlsfiles)
for xlsfile in list(xlsfiles):
book = xlrd.open_workbook(xlsfile)
table = book.sheets()[0]
nrows = table.nrows
finename = xlsfile.split('.')[0]
if not os.path.exists('csv'):
os.mkdir('csv')
csvfile = 'csv/' + finename + '.csv'
with open(csvfile, 'w') as f:
writer = csv.writer(f)
for i in range(nrows):
writer.writerow(table.row_values(i))
print(f'转换完成: {xlsfile} -> {csvfile}')
if __name__ == '__main__':
csv_2_xls()
xls_2_csv()
csv转excel:
转换完成: Kira岐牙.csv -> excel/Kira岐牙.xls
转换完成: Yvony蟹太太.csv -> excel/Yvony蟹太太.xls
转换完成: 六神大宝.csv -> excel/六神大宝.xls
转换完成: 单眼皮的妮可.csv -> excel/单眼皮的妮可.xls
转换完成: 小思思SiSi.csv -> excel/小思思SiSi.xls
转换完成: 方枪枪Monica.csv -> excel/方枪枪Monica.xls
转换完成: 朝越南.csv -> excel/朝越南.xls
转换完成: 泪点奇低小丸子.csv -> excel/泪点奇低小丸子.xls
转换完成: 火山大王.csv -> excel/火山大王.xls
转换完成: 褒义词.csv -> excel/褒义词.xls
excel转csv:
转换完成: Kira岐牙.xls -> csv/Kira岐牙.csv
转换完成: Yvony蟹太太.xls -> csv/Yvony蟹太太.csv
转换完成: 六神大宝.xls -> csv/六神大宝.csv
转换完成: 单眼皮的妮可.xls -> csv/单眼皮的妮可.csv
转换完成: 小思思SiSi.xls -> csv/小思思SiSi.csv
转换完成: 方枪枪Monica.xls -> csv/方枪枪Monica.csv
转换完成: 朝越南.xls -> csv/朝越南.csv
转换完成: 泪点奇低小丸子.xls -> csv/泪点奇低小丸子.csv
转换完成: 火山大王.xls -> csv/火山大王.csv
转换完成: 褒义词.xls -> csv/褒义词.csv