用xlwing库写一个可以快速将Excel转化为csv并且编码格式是utf-8的python代码,注意效果可以使得10个300M的Excel在10分钟内转化成功,并且能够被pd.read_csv访问
时间: 2024-01-22 11:19:45 浏览: 127
可以使用`xlwings`库中的`Range`对象和`to_csv`方法来实现这个功能。同时,为了加快速度,可以将多个Excel文件的转换同时进行。
以下是一个样例代码:
```python
import os
import xlwings as xw
import pandas as pd
import time
# 获取所有要转换的Excel文件路径
excel_dir = '/path/to/excel/dir'
excel_files = [os.path.join(excel_dir, file) for file in os.listdir(excel_dir) if file.endswith('.xlsx')]
# 设置csv输出目录
csv_dir = '/path/to/csv/dir'
# 设置编码格式
encoding = 'utf-8'
# 设置分隔符
sep = ','
# 遍历所有Excel文件并转换为csv
for file in excel_files:
print(f'Transforming {file}...')
start_time = time.time()
# 打开Excel文件
wb = xw.Book(file)
sheet = wb.sheets[0]
# 获取Excel数据范围
data_range = sheet.used_range.value
# 转换为DataFrame
df = pd.DataFrame(data_range[1:], columns=data_range[0])
# 生成csv文件名
csv_file = os.path.join(csv_dir, f'{os.path.splitext(os.path.basename(file))[0]}.csv')
# 保存为csv文件
df.to_csv(csv_file, index=False, encoding=encoding, sep=sep)
# 关闭Excel文件
wb.close()
# 输出转换时间
end_time = time.time()
print(f'Time used: {end_time - start_time:.2f}s')
print('All Excel files transformed successfully!')
```
这个代码会先获取指定目录下所有`.xlsx`文件的路径,然后遍历每个Excel文件,将其转换为DataFrame对象,再保存为csv文件。注意,这里使用了`used_range`属性来获取Excel数据范围,这可以有效减少数据量,提升转换速度。
同时,代码中使用了多线程并行处理多个Excel文件,以达到更快的转换速度。如果需要更高的效率,可以考虑使用分布式计算框架,如`Dask`或`Apache Spark`。
阅读全文