使用openpyxl激活第二个工作表

时间:2015-04-23 23:14:08

标签: python openpyxl

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

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)

2 个答案:

答案 0 :(得分:2)

如果您打开了两个工作簿wb1和wb2,那么各种工作表也需要不同的名称:ws1 = wb1.activews2 = wb2.active

如果您正在处理带有宏的文件,则在打开它时需要将keep_vba标记设置为True以保留宏。

答案 1 :(得分:1)

我曾经遇到过与隐藏细胞相同的事情。最后,我解压缩了Excel文件并查看了原始XML,发现并非所有列都有宽度尺寸。没有宽度的那些是Excel。

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

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