批量转换excel、xlsb、csv文件的格式为带BOM头的utf8-csv(excel打开不乱码)
工作中需要奖客户发来的文件(一般为格式固定的excel表格,但是xlsb、excel、csv各种格式都有而且数量比较多)统一转为utf8格式的csv文件,便于上传到系统。
只需要把文件放到需要转换的文件路径下即可
执行exe文件就行。
以下是没打包成exe前的源码:
import os
import pandas as pd
# 存有文件的路径
current_path = os.getcwd()
# 转换之后存放的路径为“UTF8”,会检查当前路径是否有,没有就创建
utf8_path = os.path.join(current_path, 'UTF8')
if not os.path.exists(utf8_path):
os.makedirs(utf8_path)
for file_name in os.listdir(current_path):
# 转换xlsb文件
if file_name.endswith('.xlsb'):
# 读取文件r
df = pd.read_excel(file_name, engine='pyxlsb')
# 保存文件到指定路径
utf8_file_dir = os.path.join(utf8_path, file_name)
df.to_csv(utf8_file_dir.replace('.xlsb', '.csv'), encoding='utf-8-sig', index=False)
print('xlsb文件"{}"成功转换为csv格式'.format(file_name))
# 转换excel文件
if file_name.endswith('.xlsx'):
df = pd.read_excel(file_name)
utf8_file_dir = os.path.join(utf8_path, file_name)
df.to_csv(utf8_file_dir.replace('.xlsx', '.csv'), encoding='utf-8-sig', index=False)
print('excel文件"{}"成功转换为csv格式'.format(file_name))
# 转换csv文件
if file_name.endswith('.csv'):
df = pd.read_csv(file_name, encoding='gbk', low_memory=False)
utf8_file_dir = os.path.join(utf8_path, file_name)
df.to_csv(utf8_file_dir.replace('.csv', 'utf8.csv'), encoding='utf-8-sig', index=False)
print('csv文件"{}"成功转换为csv格式'.format(file_name))
# 转换xls文件
if file_name.endswith('.xls'):
df = pd.read_excel(file_name, engine='xlrd')
utf8_file_dir = os.path.join(utf8_path, file_name)
df.to_csv(utf8_file_dir.replace('.xls', 'utf8.csv'), encoding='utf-8-sig', index=False)
print('xls文件"{}"成功转换为csv格式'.format(file_name))