excel - 如何使用 OpenPyXL 从返回的元组中获取值
问题描述
我编写了一些代码,使用 OpenPyXL 库从 .xlsx 文件迭代列中生成元组。
from openpyxl import workbook
wb = load_workbook('....\example.xlsx')
ws = wb.get_sheet_by_name('SomeMatrix')
c = tuple(ws.columns)
print c
哪个返回
((<Cell u'SomeMatrix'.A1>, <Cell u'SomeMatrix'.B1>, ..., <Cell u'SomeMatrix'.CY1>),...
,(<Cell u'SomeMatrix'.A400>, <Cell u'SomeMatrix'.B400>, <Cell u'SomeMatrix'.CY400>))
我想从这些多列中提取值(例如,通过使用 cell.value),以便我可以获得一个名为 c 的元组,它应该如下所示:
c= ((1,2,...,1234),(3,5,...,9328),...,(2,1,...,4321))
解决方案
对于任何有类似问题的人来说,我最终是如何完成的。请注意,我是 Python 编码的新手,所以我不能保证这是一个有效的解决方案。如果我的任何陈述有误,请纠正我。此外,请随时发布更短和/或更有效的解决方案。
使用 iter_cols() 函数会返回一个生成器,它可以快速处理单次迭代,因为它不会在访问数据之前将数据加载到内存中。相反,它可以即时访问所有内容。
我的代码现在看起来像这样:
from openpyxl import workbook
wb = load_workbook('Path\to\Matrix.xlsx')
ws = wb.get_sheet_by_name('SomeMatrix')
def iter_cols(ws): #define your own iter_cols function which yields the cell values via for loop
for col in ws.iter_cols():
yield tuple(cell.value for cell in col) #the yield statement returns a generator
c = tuple(iter_cols(ws))
推荐阅读
- sql - changing date structure for oracle sql
- winrt-xaml - 我们什么时候应该实现 INotifyPropertyChanged
- office-js - 如何在 Dialog API Office JS 中处理 event.completed()
- request - 带有 `Sec-Fetch-User: ?1` 标头的重复请求扰乱了我的请求限制
- laravel - 如何在包含具有 Eloquent 的对象数组的 json 字段中求和
- java - SpringAMQP - 如何捕获 ListenerExecutionFailedException?
- ios - 如何在 ARKit 应用程序运行时加载 SCN 或 glTF 模型?
- r - R中的滚动锐度比
- node.js - Stripe - 退款失败时访问退款对象
- controlsfx - OpenFX 和 OpenJDK 11 支持哪个版本的 controlsfx?