Python脚本读取一个目录中的多个excel文件,并将其转换为另一个目录中的.csv文件
我对python和Stackoverflow比较陌生,但希望任何人都能了解我目前的问题。我有一个python脚本,它从一个目录中获取excel文件(.xls和.xlsx),并将它们转换为另一个目录中的.csv文件。它在我的示例excel文件(为了测试,它由4列和1行组成)上运行得非常好,但是当我尝试在另一个包含excel文件(文件大小要大得多)的目录下运行脚本时,我得到了一个断言错误。我已经附加了我的代码和错误。期待对这个问题有一些指导。谢谢Python脚本读取一个目录中的多个excel文件,并将其转换为另一个目录中的.csv文件,python,excel,csv,Python,Excel,Csv,我对python和Stackoverflow比较陌生,但希望任何人都能了解我目前的问题。我有一个python脚本,它从一个目录中获取excel文件(.xls和.xlsx),并将它们转换为另一个目录中的.csv文件。它在我的示例excel文件(为了测试,它由4列和1行组成)上运行得非常好,但是当我尝试在另一个包含excel文件(文件大小要大得多)的目录下运行脚本时,我得到了一个断言错误。我已经附加了我的代码和错误。期待对这个问题有一些指导。谢谢 import os import pandas as
import os
import pandas as pd
source = "C:/.../TestFolder"
output = "C:/.../OutputCSV"
dir_list = os.listdir(source)
os.chdir(source)
for i in range(len(dir_list)):
filename = dir_list[i]
book = pd.ExcelFile(filename)
#writing to csv
if filename.endswith('.xlsx') or filename.endswith('.xls'):
for i in range(len(book.sheet_names)):
df = pd.read_excel(book, book.sheet_names[i])
os.chdir(output)
new_name = filename.split('.')[0] + str(book.sheet_names[i])+'.csv'
df.to_csv(new_name, index = False)
os.chdir(source)
print "New files: ", os.listdir(output)
< p>由于使用Windows,请考虑JECT/ACE SQL引擎(Windows .dll文件)来查询Excel工作簿并导出到CSV文件,绕过需要与大数据DATAFRAMS加载/导出。 具体地说,使用
pyodbc
将ODBC连接到Excel文件,迭代每个工作表,并使用SELECT*INTO…
SQL操作查询导出到csv文件。openpyxl
模块用于检索图纸名称。下面的脚本不依赖于相对路径,所以可以从任何地方运行。假设每个Excel文件都有完整的标题列(在最上面一行的使用范围内没有丢失的单元格)
**注意:此过程将创建一个
schema.ini
文件,该文件与每次迭代连接在一起。可以删除。看起来它超过了允许的最大行数,即2**14。这个文件有多大?或者它有多少行?嗨,塔拉斯,我目前在一个文件夹中有4个excel文件,其中一个文件大约有75k行。我是否可以使用另一个包来容纳这么大的文件?非常感谢。
import os
import pyodbc
from openpyxl import load_workbook
source = "C:/Path/To/TestFolder"
output = "C:/Path/To/OutputCSV"
dir_list = os.listdir(source)
for xlfile in dir_list:
strfile = os.path.join(source, xlfile)
if strfile.endswith('.xlsx') or strfile.endswith('.xls'):
# CONNECT TO WORKBOOK
conn = pyodbc.connect(r'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};' + \
'DBQ={};'.format(strfile), autocommit=True)
# RETRIEVE WORKBOOK SHEETS
sheets = load_workbook(filename = strfile, use_iterators = True).get_sheet_names()
# ITERATIVELY EXPORT SHEETS TO CSV IN OUTPUT FOLDER
for s in sheets:
outfile = os.path.join(output, '{0}_{1}.csv'.format(xlfile.split('.')[0], s))
if os.path.exists(outfile): os.remove(outfile)
strSQL = " SELECT * " + \
" INTO [text;HDR=Yes;Database={0};CharacterSet=65001].[{1}]" + \
" FROM [{2}$]"
conn.execute(strSQL.format(output, os.path.basename(outfile, s))
conn.close()