其他分享
首页 > 其他分享> > 使用xlwt’get_sheet’方法访问工作表

使用xlwt’get_sheet’方法访问工作表

作者:互联网

我想访问电子表格的工作表.我使用xlutils.copy()将主工作簿复制到另一个工作簿.但是不知道使用xlwt模块访问工作表的正确方法.
我的示例代码:

import xlrd
import xlwt
from xlutils.copy import copy

wb1 = xlrd.open_workbook('workbook1.xls', formatting_info=True)
wb2 = copy(master_wb)

worksheet_name = 'XYZ' (worksheet_name is a iterative parameter)

worksheet = wb2.get_sheet(worksheet_name)

请问有人请告诉我使用xlwt模块访问工作簿中现有工作表的正确命令行是什么?我知道我们可以使用’add_sheet’方法使用xlwt模块在现有工作簿中添加工作表.

任何帮助,赞赏.

解决方法:

在xlwt.Workbook类中奇怪地缺少sheets()方法,因此使用该方法的其他答案将不起作用 – 只有xlrd.book(用于读取XLS文件)具有sheet()方法.因为所有类属性都是私有的,所以你必须这样做:

def get_sheet_by_name(book, name):
    """Get a sheet by name from xlwt.Workbook, a strangely missing method.
    Returns None if no sheet with the given name is present.
    """
    # Note, we have to use exceptions for flow control because the
    # xlwt API is broken and gives us no other choice.
    try:
        for idx in itertools.count():
            sheet = book.get_sheet(idx)
            if sheet.name == name:
                return sheet
    except IndexError:
        return None

如果您不需要它为不存在的工作表返回None,则只需删除try / except块.如果要重复按名称访问多个工作表,将它们放在字典中会更有效,如下所示:

sheets = {}
try:
    for idx in itertools.count():
        sheet = book.get_sheet(idx)
        sheets[sheet.name] = sheet
except IndexError:
        pass

标签:xlrd,python,xlwt,xlutils
来源: https://codeday.me/bug/20190823/1696089.html