【问题标题】:Reading [#All/#Headers/#Data/#Totals] didn't work in xlwings (anymore ?)阅读 [#All/#Headers/#Data/#Totals] 在 xlwings 中不起作用(不再?)
【发布时间】:2021-08-10 02:42:37
【问题描述】:

大家好,我是新来的,现在不能“添加评论”。 所以我提出了这个问题。

我有一个问题,我不明白为什么。 问题在这里也得到了解释,但对我不起作用。 How to reference Excel table column names in XLWings?

我想读取表格的所有元素:

import xlwings as xw

s_table_name = 'test1'
wb = xw.Book(r'D:\Python\test.xlsx')
d_table = xw.Range(f'{s_table_name}[String]') # this works
d_table1 = xw.Range(f'{s_table_name}[[#All],[String]]') # this didn't -> raise an exception -> see below

这里例外:

Traceback (most recent call last):
  File "D:/Python/Experiments/test.py", line 6, in <module>
    d_table1 = xw.Range(f'{s_table_name}[[#All], [String]]').value # this didn't -> raise an exception
  File "D:\Python\Experiments\venv\lib\site-packages\xlwings\main.py", line 1244, in __init__
    impl = apps.active.range(cell1).impl
  File "D:\Python\Experiments\venv\lib\site-packages\xlwings\main.py", line 404, in range
    return Range(impl=self.impl.range(cell1, cell2))
  File "D:\Python\Experiments\venv\lib\site-packages\xlwings\_xlwindows.py", line 427, in range
    xl1 = self.xl.Range(arg1)
  File "D:\Python\Experiments\venv\lib\site-packages\xlwings\_xlwindows.py", line 66, in __call__
    v = self.__method(*args, **kwargs)
  File "C:\Users\marti\AppData\Local\Temp\gen_py\3.8\00020813-0000-0000-C000-000000000046x0x1x8.py", line 42299, in Range
    ret = self._oleobj_.InvokeTypes(197, LCID, 2, (9, 0), ((12, 1), (12, 17)),Cell1
pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, None, None, None, 0, -2146827284), None)

我尝试了此页面中的所有命令: https://peltiertech.com/structured-referencing-excel-tables/ 喜欢:

  • [#全部]
  • [#Headers]
  • [#数据]
  • [#Totals]

以及其他添加参数的方式:

d_table1 = xw.Range(f'{s_table_name}[[#All]]')
d_table1 = xw.Range(f'{s_table_name}[#All]')

但我有同样的例外。 可以肯定的是,我的 excel 版本(我使用的是 2013)没有问题,我使用内置宏记录器创建了一个小宏:

Sub Makro1()
    Range("test1[#All]").Select
End Sub

我不明白我的问题来自哪里。 可能xlwings已经不支持#开头的参数了,但是没找到。

请帮帮我!

【问题讨论】:

    标签: python python-3.x excel-2013 xlwings


    【解决方案1】:

    似乎语法取决于本地化。我使用德语的 Excel,我必须用 [#Alle] 代替 [#All],用分号代替逗号:

    wsh.range('Tabelle1[[#Alle];[Spalte1]]')
    

    由于这不适用于 VBA(就像您指出的那样),我认为它可以被视为 xlwings 中的错误。我会在您引用的答案中发表评论。

    当您以交互方式编辑表格外的单元格并创建引用时,您可以检查本地化语法,例如。 g.

    =Tabelle1[#Ergebnisse]
    

    【讨论】:

    • 好的,这行得通。谢谢!但是:“#Headers”、“#Data”和“#Totals”是什么? “#Überschriften”、“#Daten”和“#Gesamt”?你可以在 devs git 上的 repo 中添加我的票的评论:github.com/xlwings/xlwings/issues/1597
    • #Kopfzeilen、#Daten 和#Ergebnisse。另请参阅编辑后的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2015-09-21
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多