使用 openpyxl 激活第二个工作表
Activate second worksheet with openpyxl
我正在尝试激活多个 excel 工作表并使用 python 和 openpyxl 写入两个工作簿中的多个工作表。我可以加载第二个工作簿 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)
如果您打开了两个工作簿,wb1 和 wb2,您还需要为不同的工作表起不同的名称:ws1 = wb1.active
和 ws2 = wb2.active
。
如果您正在使用带有宏的文件,您需要在打开文件时将 keep_vba
标志设置为 True
以保留宏。
我对隐藏单元格也有过同样的经历。最终,我解压缩了 Excel 文件并查看了原始 XML 以发现并非所有列都有宽度尺寸。那些没有宽度的被 Excel.
一个快速的解决方法是做这样的事情...
for col in 'ABCDEFG':
if not worksheet.column_dimensions[col].width:
worksheet.column_dimensions[col].width = 10
我正在尝试激活多个 excel 工作表并使用 python 和 openpyxl 写入两个工作簿中的多个工作表。我可以加载第二个工作簿 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)
如果您打开了两个工作簿,wb1 和 wb2,您还需要为不同的工作表起不同的名称:ws1 = wb1.active
和 ws2 = wb2.active
。
如果您正在使用带有宏的文件,您需要在打开文件时将 keep_vba
标志设置为 True
以保留宏。
我对隐藏单元格也有过同样的经历。最终,我解压缩了 Excel 文件并查看了原始 XML 以发现并非所有列都有宽度尺寸。那些没有宽度的被 Excel.
一个快速的解决方法是做这样的事情...
for col in 'ABCDEFG':
if not worksheet.column_dimensions[col].width:
worksheet.column_dimensions[col].width = 10