gpt4 book ai didi

python - 使用 Python 从 Excel 工作表的 ListObject 打开和获取数据

转载 作者:行者123 更新时间:2023-12-04 04:23:49 25 4
gpt4 key购买 nike

问题:从 y python 环境中打开 Excel 文件的 ListObject(excel 表)。

原因:在 python 中打开 excel 文件有多种解决方案。从 Pandas 开始:

import pandas as pd
mysheetName="sheet1"
df = pd.read_excel(io=file_name, sheet_name=mysheetName)

这会将 sheet1 传递到 pandas 数据框中。到目前为止一切顺利。

其他更详细的解决方案是使用特定的库。这是一个堆栈溢出问题的代码。

from openpyxl import load_workbook
wb2 = load_workbook('test.xlsx')
print wb2.get_sheet_names()
['Sheet2', 'New Title', 'Sheet1']

worksheet1 = wb2['Sheet1'] # one way to load a worksheet
worksheet2 = wb2.get_sheet_by_name('Sheet2') # another way to load a worksheet
print(worksheet1['D18'].value)

到目前为止一切顺利。

但是:如果您在工作表中有一个 ListObject(excel 表),我没有找到任何方法来访问 Listobject 的数据。ListObjects 通常被 Excel 的高级用户使用;最重要的是在 VBA 中编程宏时。非常方便,可以看作是 Excel 中的 pandas dataframe 的等价物。在 Excel Listobject 和 pandas 数据框之间架起桥梁似乎非常合乎逻辑。尽管如此,到目前为止我还没有找到任何解决方案、库或解决方法。

问题。有谁知道一些直接从 Excel 工作表中提取 Listobjects 的 python lybrary/解决方案?

注意 1:不是很好的解决方案当然知道 Listobject 的“位置”可以引用开始和最后一个单元格,但这是一个非常糟糕的解决方案,因为不允许您修改 excel 文件中的 Listobject(必须修改 python马上)。一旦 ListObject 的位置发生变化,或者 listobject 本身变大,python 代码就会被破坏。

注意2:我目前的解决方案:我将 listObject 从 excel(带有宏)导出到 JSON 文件中,然后从 python 中读取它。但是额外的工作是显而易见的。 VBA 代码、额外文件等。

最后评论:如果有人对这个问题感兴趣,但仍然不知道什么是 Excel 中的 ListObject,请点击此处 click看这里:

enter image description here

最佳答案

詹姆斯是对的:

https://openpyxl.readthedocs.io/en/stable/worksheet_tables.html

https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.table.html

在openpyxl中有一个读表的类。同样通过 id:

class openpyxl.worksheet.table.Table(id=1,...

id=1 表示工作表的第一个表。

请始终记住,Excel 中的 ListObjects 称为表格。这很奇怪(与 VBA 一样)。如果您使用 VBA,您可能会忘记 ListObject=Table。

用 xlwings 也是可以的。 API 有点不同:

import xlwings as xw
wb = xw.Workbook.active()
xw.Range('TableName[ColumnName]').value

或者要获取包含标题和总行的列,您可以这样做:

xw.Range('TableName[[#All], [ColumnName]]').value

关于python - 使用 Python 从 Excel 工作表的 ListObject 打开和获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com