0

我正在尝试从多个文件中提取标题行(第一行),每个文件都有多个工作表。每个工作表的输出应保存并附加到一个新的主文件中,该文件包含每个工作表和每个文件的所有标题。

我发现最简单的方法是使用命令 row_slice。但是,文件的输出是 Cell 对象的列表,我似乎无法访问它们的索引。

我正在寻找一种将提取的数据保存到新工作簿中的方法。

这是我到目前为止的代码:

from xlrd import open_workbook,cellname
book = open_workbook('E:\Files_combine\MOU worksheets 2012\Walmart-GE_MOU 2012-209_worksheet_v03.xls')
last_index = len(book.sheet_names()) 
for sheet_index in range(last_index):
sheet = book.sheet_by_index(sheet_index)
print sheet.name
print sheet.row_slice(0,1)

我无法获取输出并将其存储为新文件的输入。此外,任何关于如何为 100 多个文件自动化此过程的想法都将不胜感激。

4

1 回答 1

1

您可以将输出存储在 csv 文件中,并且可以使用 os.listdir 和 for 循环遍历所有文件名

import csv
import os

from xlrd import open_workbook, cellname

EXCEL_DIR = 'E:\Files_combine\MOU worksheets 2012'
with open("headers.csv", 'w') as csv_file:
    writer = csv.writer(csv_file)
    for file_name in os.listdir(EXCEL_DIR):
        if file_name.endswith("xls"):
            book = open_workbook(os.path.join(EXCEL_DIR, file_name))
            for index, name in enumerate(book.sheet_names()):
                sheet = book.sheet_by_index(index)
                #the write row method takes a sequence
                #I assume that row_slice returns a list or a tuple
                writer.writerow(sheet.row_slice(0,1))
于 2013-07-02T01:07:09.253 回答