【问题标题】:Python openpyxl Package defined_names Does Not Recognize Named RangesPython openpyxl 包 defined_names 不识别命名范围
【发布时间】:2020-02-04 22:55:19
【问题描述】:

我有一个需要使用 openpyxl 修改的现有工作簿。该工作簿包含作为数据透视表来源的表格。我已在 Excel 的名称管理器中为表分配了名称。我想访问 openpyxl 中的这些范围以用更新的信息替换数据,但 openpyxl 似乎无法识别现有范围。

我已按照the openpyxl site 上的文档中的代码进行操作,但没有成功。即使我成功地按照说明创建了一个命名范围(这不是我真正想做的 - 我想访问现有的命名范围),新创建的命名范围也只会在文件打开时持续存在,并且在保存时不会持续存在文件。

我已经检查以确保每个命名范围的范围是“工作簿”,ws._tables[0].name 给了我正确的表名称,但我没有成功弄清楚如何操作其中的数据或确定它包含多少行/列等,以便我可以替换其中的数据。

from openpyxl import load_workbook
wb = load_workbook(args.xlfile)
try:
    source_cm = wb.defined_names['tblAcq']
except KeyError as e:
    print(e)

我错过了什么?

【问题讨论】:

  • 表不存储为definedNames。

标签: python-3.x openpyxl


【解决方案1】:

我没有遇到与您相同的问题。使用 defined_name 模块,我可以在我的 Excel 工作表中创建、保存和访问命名范围。

import openpyxl
from openpyxl import *
from openpyxl.styles import NamedStyle

wb = load_workbook("document.xlsx")
ws = wb.active
#new_range = openpyxl.workbook.defined_name.DefinedName('newrange', attr_text='Sheet!$B$1:$B$5') 
#wb.defined_names.append(new_range)
print(wb.defined_names.get('newrange'))
wb.save('document.xlsx')

用新的命名范围保存我的文档后,我在工作簿中使用get() defined_names print(wb.defined_names.get('newrange'))

输出

<openpyxl.workbook.defined_name.DefinedName object>
Parameters:
name='newrange', comment=None, customMenu=None, description=None, help=None, statusBar=None, localSheetId=None, hidden=None, function=None, vbProcedure=None, xlm=None, functionGroupId=None, shortcutKey=None, publishToServer=None, workbookParameter=None, attr_text='Sheet!$B$1:$B$5'

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多