【发布时间】:2020-02-10 07:41:37
【问题描述】:
问题: 从 y python 环境中打开一个 Excel 文件的 ListObject(excel 表)。
原因: 在 python 中打开 excel 文件有多种解决方案。从熊猫开始:
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 数据框。在 Excel Listobject 和 pandas 数据框之间架起一座桥梁似乎非常合乎逻辑。尽管如此,到目前为止我还没有找到任何解决方案、库或解决方法。
问题。 有谁知道一些 python 库/解决方案,可以直接从 Excel 表格中提取 Listobjects?。
NOTE1:不是很好的解决方案 当然知道Listobject的“位置”可以引用开始和最后一个单元格,但这是一个非常糟糕的解决方案,因为不允许您修改excel文件中的Listobject(必须修改python马上)。一旦 ListObject 的位置发生变化,或者 listobject 本身变大,python 代码就会被破坏。
注意2:我目前的解决方案: 我将 listObject 从 excel(使用宏)导出到 JSON 文件中,然后从 python 中读取。但额外的工作是显而易见的。 VBA 代码、额外文件等。
最后评论:如果有人对此问题感兴趣但仍然不知道 excel 中的 ListObject 是什么,请点击此处click 并查看此处:
【问题讨论】:
-
查看 openpyxl 或 xlwings。
标签: python excel pandas import listobject