使用 with..open 读取 xls 文件列表以复制到具有多个工作表的单个工作簿中

Use with..open to read a list of xls files to copy into a single workbook with multiple sheets

这里是第一个计时器。我的总体目标是将 3 个不同 xls 文件中的数据准确复制到一个 xls 工作簿中,每个原始 xls 文件都有一个 sheet。在非编程意义上,我想将每个 xls 文件中的数据复制并粘贴到新工作簿(xls 或 xlsx 文件)中它自己的 sheet 中。我一直在使用 xlrd & xlwt 来执行此操作,并且在搜索 SO 的帮助下,我已经能够获得大部分代码集。但是,我很难理解如何使用 with...open 命令从每个原始 xls 文件中读取数据并将其放在自己的文件中 sheet。您可能会从我的代码块中了解到,我的 Python 技能有限。谢谢!

    import xlwt as xlwt
    from os.path import join
    import xlrd


    wb = xlwt.Workbook()
    path = r'C:\data_path\'
    xls1 = 'file1.xls'
    xls2 = 'file2.xls'
    xls3 = 'file3.xls'

    Sheet1 = 'file1_data'
    Sheet2 = 'file2_data'
    Sheet3 = 'file3_data'

    names = [Sheet1, Sheet2, Sheet3]
    dataset = [path + xls1, path + xls2, path + xls3]

   for name in names:
       wb.add_sheet(name)
   for n, data in enumerate(dataset):
       **I feel there should be some type of with..open statement here**
       ws = wb.get_sheet(n)
       ws.write(0,0, data)

   wb.save(join(path,'test.xls'))

假设每个源文件只有一个sheet:

import xlwt as xlwt
from os.path import join
import xlrd

output = xlwt.Workbook()

path = r'C:\data_path\'

xls1 = 'file1.xls'
xls2 = 'file2.xls'
xls3 = 'file3.xls'

Sheet1 = 'file1_data'
Sheet2 = 'file2_data'
Sheet3 = 'file3_data'

names = [Sheet1, Sheet2, Sheet3]
dataset = [path + xls1, path + xls2, path + xls3]


for n, data in enumerate(dataset):
    book = xlrd.open_workbook(data, formatting_info=True)

    sheet = book.sheet_by_index(0)
    r = output.add_sheet(names[n])

    for row in range(sheet.nrows):
        for column in range(sheet.ncols):
            cell_val = sheet.cell_value(rowx=row, colx=column)
            r.write(row, column, cell_val)

output.save(join(path,'test.xls'))