openpyxl根据另一个单元格的值

时间:2017-01-16 16:25:35

标签: python excel openpyxl

我正在尝试使用openpyxl(2.4.1)和python(2.7.1)迭代工作簿,如果一行中的两个单元格具有特定值,我想在该行中追加另一个单元格的值一个列表。我相信我在内存中加载太多,当我运行下面的代码时,我看不到从mylist或col3值打印的内容。 (工作簿非常大600k +行): 以下是我的代码示例:

import openpyxl
import numpy
from openpyxl.utils import coordinate_from_string, column_index_from_string
wb = openpyxl.load_workbook('P:\My_File.xlsx', data_only=True)
sheet = wb.active
mylist = []

for row in sheet.iter_rows():
        for cell in row:
            if cell.value == 'M123':
                location = str(cell.coordinate)
                col = column_index_from_string(location[0])
                col2 = col +1
                row2 = cell.row
                if cell(column=col2, row=row2).value == 'ATM':
                   location2 = str(cell.coordinate)
                   col = column_index_from_string(location[0])
                   col3 = col +1
                   print col3
                   row3 = cell.row
                   mylist.append(cell(column=col3, row=row3).value)
                   print mylist

这个解决方案看起来非常混乱,我相信可能有更简洁的方法来做到这一点,但这是我第一次使用openpyxl,在阅读了其他问题和文档后,我感到很茫然。欢迎任何建议/建议。

即使使用偏移,也不会打印任何内容。最终我收到以下错误。问题是我在内存中加载太多了吗?还有另一种迭代方法吗?

 File "C:\Python27\lib\site-packages\openpyxl\reader\excel.py", line 225, in load_workbook
   ws_parser.parse()
 File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 122, in parse
   dispatcher[tag_name](element)
 File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 277, in parse_row
   self.parse_cell(cell)
 File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 211, in parse_cell
   self.ws._cells[(row, column)] = cell
MemoryError

0 个答案:

没有答案