我正在尝试使用Python将大量Excel文档转换为CSV,从每个文档转换的工作表可以称为“枢轴”,“ PVT”,“枢轴”或“ pvt”。我现在正在做的事情似乎正在起作用,但是我想知道是否有任何更快的方法,因为这需要很长时间才能浏览我的Excel文件。有没有一种方法可以使用OR运算符指定工作表名称的多个变体来完成one pd.read_excel
行中的所有操作?
for f in glob.glob("../Test/Drawsheet*.xlsx"):
try:
data_xlsx = pd.read_excel(f, 'PVT', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'pvt', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'pivot', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'Pivot', index_col=None)
except:
continue
data_xlsx.to_csv('csvfile' + str(counter) + '.csv', encoding='utf-8')
counter += 1
答案 0 :(得分:0)
您的问题不仅仅在于为pd.read_excel
找到正确的特殊语法,而是要知道从哪一页读取。 Pandas有一个ExcelFile
封装并包含有关Excel文件的一些基本信息。该类具有sheet_names
属性,该属性告诉您文件中包含哪些表。 (不幸的是,在这个课程上很难找到文档,所以我不能给您链接)
valid_sheet_names = ['PVT', 'pvt', 'pivot', 'Pivot']
for f in glob.iglob('../Test/Drawsheet*.xlsx'):
file = pd.ExcelFile(f)
sheet_name = None
for name in file.sheet_names:
if name in valid_sheet_names:
sheet_name = name
break
if sheet_name is None:
continue
data_xlsx = pd.read_excel(f, sheet_name, index_col=None)
...
但是,这并不严格等同于您的代码,因为它不做两件事:
read_excel
,如果所选工作表未能加载到数据框中PVT
,然后是pvt
,然后是pivot
,等等)我将让您按照程序要求来处理这两个问题。