【问题标题】:Activate second worksheet with openpyxl使用 openpyxl 激活第二个工作表
【发布时间】:2015-04-23 23:14:08
【问题描述】:

我正在尝试使用 python 和 openpyxl 激活多个 Excel 工作表并写入两个工作簿中的多个工作表。我可以加载第二个工作簿f,但我无法在第二个工作簿的单元格 G2 中附加字符串Recon

from openpyxl import Workbook, load_workbook

filename = 'sda_2015.xlsx'

wb = Workbook()
ws = wb.active

ws['G1'] = 'Path'
ws.title = 'Main'

adf = "Dirty Securities 04222015.xlsx"
f = "F:\\ana\\xlmacro\\" + adf

wb2 = load_workbook(f)
"""
wb22 = Workbook(wb2)
ws = wb22.active

ws['G1'] = "Recon2"
ws.title = 'Main2'
"""
print wb2.get_sheet_names()

wb.save(filename)

我把坏掉的代码注释掉了

更新 我用下面的答案调整了我的代码。单元格H1 中的值被写入H 列的wb2,但由于某种原因该列被隐藏。我已将该列调整为其他列,但我仍然看到代码隐藏了多个列。当代码执行并将ws2标题为Main21但编码值为Main2时也会出现这种情况

from openpyxl import Workbook, load_workbook

filename = 'sda_2015.xlsx'

wb1 = Workbook()
ws1 = wb1.active

ws1['G1'] = 'Path'
ws1.title = 'Main'

adf = "Dirty Securities 04222015.xlsx"
f = "F:\\ana\\xlmacro\\" + adf

wb2 = load_workbook(f)

ws2 = wb2.active

ws2['H1'] = 'Recon2'
ws2.title = 'Main2'

print wb2.get_sheet_names()

wb1.save(filename)
wb2.save(f)

【问题讨论】:

    标签: python openpyxl


    【解决方案1】:

    如果您打开了两个工作簿 wb1 和 wb2,您还需要为各个工作表使用不同的名称:ws1 = wb1.activews2 = wb2.active

    如果您正在使用包含宏的文件,则需要在打开文件时将 keep_vba 标志设置为 True 以保留宏。

    【讨论】:

    • 对不起,我不明白这个问题。邮件列表可能更有意义。
    • 邮件列表??请从上面复制并粘贴更新代码并执行(替换为您的 comp 上的 excel 工作簿)并让我知道,一旦代码执行,您是否在工作簿 2 上看到值 Recon2 ?每次运行代码时,我都会看到该值,但由于某种原因,H 列被隐藏了
    • 没有文件我不能期望复制行为。您可以使用 `ws.column_dimensions['H']`` 检查列的隐藏状态。邮件列表链接到文档。
    【解决方案2】:

    我在隐藏单元格中也经历过同样的事情。最后,我解压 Excel 文件并查看原始 XML,发现并非所有列都有宽度尺寸。那些没有宽度的都是 Excel 的。

    快速解决方法是做这样的事情......

    for col in 'ABCDEFG':
        if not worksheet.column_dimensions[col].width:
            worksheet.column_dimensions[col].width = 10
    

    【讨论】:

    • 我看不到与原始问题的关系,无论如何,如果 column_dimension 缺少宽度,则应用默认值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多