import xlwings as xw app = xw.App(visible=False,add_book=False) excel_client = app.books.open(r"文件名1.xlsx") excel_client.api.SaveAs(r"文件名2.csv",FileFormat=6) excel_client.close() app.quit()这段代码可以使得xlsx的Excel快速转化成csv格式,但是csv是gbk编码格式,如何修改这段代码实现两个功能:1.能够将一个文件夹下的多个Excel批量转化,并且转化后的名字和原来文件名一样;2.修改这段代码使之转化出来的csv能够utf-8格式的,注意不要使用to.csv,因为速度太慢了,修改后的代码要求能够在python运行,并举出例子。另外第二个问题是,to.csv和to.excel导出文件速度太慢,如何提高速度或者有没有其他方法
时间: 2024-01-22 16:19:50 浏览: 152
可以使用Python中的os和glob库来实现批量转化多个Excel文件,并且将转化后的文件保存为原文件名的csv格式,并且编码为UTF-8格式。以下是示例代码:
```python
import os
import glob
import xlwings as xw
def excel_to_csv(excel_file):
app = xw.App(visible=False, add_book=False)
excel_client = app.books.open(excel_file)
csv_file = os.path.splitext(excel_file)[0] + ".csv"
excel_client.api.SaveAs(Filename=csv_file, FileFormat=6, Local=True, Encoding=65001)
excel_client.close()
app.quit()
folder_path = r"文件夹路径"
for excel_file in glob.glob(os.path.join(folder_path, "*.xlsx")):
excel_to_csv(excel_file)
```
这段代码中使用了os.path.splitext()函数来获取文件名和扩展名,并且使用了Encoding参数将编码设置为UTF-8。同时,使用glob.glob()函数来获取文件夹下的所有xlsx文件,并且使用os.path.join()函数来拼接文件路径。
对于速度问题,可以使用pandas库中的read_excel()和to_csv()函数来批量转化文件,速度会更快。以下是示例代码:
```python
import os
import pandas as pd
folder_path = r"文件夹路径"
for excel_file in os.listdir(folder_path):
if excel_file.endswith(".xlsx"):
csv_file = os.path.splitext(excel_file)[0] + ".csv"
df = pd.read_excel(os.path.join(folder_path, excel_file))
df.to_csv(os.path.join(folder_path, csv_file), index=False, encoding="utf-8-sig")
```
这段代码中使用了pandas库中的read_excel()函数来读取Excel文件,并且使用to_csv()函数将DataFrame对象保存为csv文件。注意要设置encoding参数为"utf-8-sig",这样可以避免在Excel中打开csv文件时出现乱码。同时,使用os.listdir()函数来获取文件夹下的所有文件,并且使用endswith()函数来判断文件是否为xlsx文件。
阅读全文