OpenPyXL:将单元格中的字符串与要打印所有单元格值的字符串集进行比较

2024-09-28 05:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用Python和OpenPyXL来访问一个包含3000多行的Excel文件。我一直试图打印包含要搜索的字符串单元格值的整行(或行中的某些单元格值),但似乎遇到了错误:

TypeError: argument of type 'NoneType' is not iterable

这是我正在使用的代码(目前,我只是试图输出单元格.值包含要搜索的字符串的单元格,但我希望输出行中的某个单元格或整行本身)

^{pr2}$

当我检查单个细胞时,它起作用了。例如,单元AA13包含字符串的一部分:

>>> print(ws['AA13'].value)
DRLDMEM, READ, PCINC
>>> 'DRLDMEM' in ws['AA13'].value
True

我想输出如下打印:

T1  FETCH2:     DR←M, PC←PC+1       DRLDMEM, READ, PCINC            
T3  SUBIMM1:    DR←M                DRLDMEM, READ
T3  ANDIMM1:    DR←M                DRLDMEM, READ

在3000多行中,所需的输出仅是具有DRLDMEM的单元格的行(或者最好是具有以下值的单元格:FETCH2、SUBIMM1和imm1)

我不知道该怎么办才能解决这个问题。如有任何想法和建议,我们将不胜感激。在


Tags: 文件字符串readwsvalueexcelt3pc
1条回答
网友
1楼 · 发布于 2024-09-28 05:24:54

明白了,代码管用。虽然很慢,有什么办法让它更快吗?在

>>> from openpyxl import *
>>> wb = load_workbook('C:/Users/MyPlace/Desktop/MyWork.xlsx',read_only=True)
>>> ws = wb["Sheet1"]
>>> for row in ws.iter_rows(min_row=1, min_col=1):
        for cell in row:
            if cell.value is not None:
                if type(cell.value) != int:
                    if 'PCINC' in cell.value:
                        #print(cell.coordinate +' ' + cell.value, )
                        a = cell.row
                        for i in range(1,30):
                            if ws.cell(row=a,column=i).value is not None:
                                print(ws.cell(row=a,column=i).value,end=' ')
                        print()
OUTPUT:

T6 JMP4: PC[15-8]←TEMPH, PC[7-0]←TEMPL PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPZ4: PC [15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPNZ6: PC [15-8] ←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPO4: PC [15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPNO6: PC [15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPC4: PC [15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPNC6: PC[15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPS4: PC[15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T6 JMPNS6: PC[15-8]←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T8 CALL6: AR←SP, DR←PC [7-0] ARLD, SPABUSLD, DRLD, PCLDBUSLD 
T9 CALL7: M←DR,  DRTOMEM, PCLD, THABUSLD, TLABUSLD, WRITE 
T8 RET6: PC [15-8] ←TEMP H PCLD, THABUSLD, TLABUSLD, SCCLR 
T7 LDINDAC5: DR←M, PC←AR DRLDMEM, READ, PCLD, ARABUSLD 

相关问题 更多 >

    热门问题