Suche ein Wort in einem text-string in Excel-Blatt mit den openpyxl

Ich versuche, die Suche nach einem Wort in einer Zelle, die einen text-string, der wie folgt aussieht (Energie;Green Buildings;High-Performance-Gebäude). Hier ist der code, den ich schrieb, bekomme ich einen syntax-Fehler

for row in ws.iter_rows('D2:D11'):
    for cell in row:
        if 'Energy' in ws.cell.value :
            Print 'yes'

Offensichtlich, ich will nicht drucken, ja, das war zum testen der Suchfunktion.

Zusätzlich möchte ich, um die Zelle Lage, und dann sagen Sie openpyxl, um eine Farbe zuzuweisen, um eine Zelle in derselben Zeile in Spalte E. hier ist ein Schnappschuss von meinem Excel-sheet.
Ich weiß, wie das zuweisen einer Farbe mit diesem Befehl

c.fill = PatternFill(start_color='FFFFE0', end_color='FFFFE0'
fill_type='solid'
)

Ich brauche nur Hilfe, um die Zelle Ort (die Zelle hat einen passenden text) und weisen Sie die Zeilen-Nummer zu einer anderen Zelle in Spalte E

Suche ein Wort in einem text-string in Excel-Blatt mit den openpyxl

UPDATE: ich schrieb diesen code unter, dass ist in Ordnung für mich:

import xml.etree.ElementTree as ET



fhand = open ('My_Collection')    
tree =ET.parse('My_Collection.xml')
data= fhand.read()
root = tree.getroot()
tree = ET.fromstring(data)

title_list= ['Title']
year_list = ['Year']
author_list= ['Author']
label_list = ['Label']



for child in tree:
    for children in child:
        if children.find('.//title')is None :
            t='N'
        else:
            t=children.find('.//title').text
        title_list.append(t)
    print title_list
    print len(title_list)


for child in tree:
    for children in child:
        if children.find('.//year')is None :
            y='N'
        else:
            y=children.find('.//year').text
        year_list.append(y)
    print year_list
    print len(year_list)


for child in tree:
    for children in child:
        if children.find('.//author')is None :
            a='N'
        else:
            a=children.find('.//author').text
        author_list.append(a)
    print author_list
    print len(author_list)


for child in tree:
    for children in child:
        if children.find('label')is None :
            l='N'
        else:
            l=children.find('label').text
        label_list.append(l)
    print label_list
print len(author_list) 





Modified_label_list=list()        
import re
for labels in label_list:

    all_labels=labels.split(';')

    for a_l in all_labels:
        if a_l not in  Modified_label_list: 
            Modified_label_list.append(a_l)
        else:
            continue
print Modified_label_list
print len(Modified_label_list)
label_list_for_col_header= Modified_label_list[1:]
print label_list_for_col_header
print len(label_list_for_col_header)




from openpyxl import Workbook 
wb = Workbook() 
ws = wb.active 


for row in zip(title_list, year_list, author_list, label_list): 
        ws.append(row)




r = 5
for N in label_list_for_col_header:
    ws.cell(row=1, column=r).value = str(N)
    r += 1


from openpyxl.styles import PatternFill 


general_lst= list()



COLOR_INDEX = ['FF000000', 'FFFFFFFF', 'FFFF0000', 'FF00FF00', 'FF0000FF',
               'FFFFFF00', 'FFFF00FF', 'FF00FFFF', 'FF800000', 'FF008000', 'FF000080',
               'FF808000', 'FF800080', 'FF008080', 'FFC0C0C0', 'FF808080', 'FF9999FF',
               'FF993366', 'FFFFFFCC', 'FFCCFFFF', 'FF660066', 'FFFF8080', 'FF0066CC',
               'FFCCCCFF', 'FF000080', 'FFFF00FF', 'FFFFFF00', 'FF00FFFF', 'FF800080',
               'FF800000', 'FF008080', 'FF0000FF', 'FF00CCFF', 'FFCCFFFF', 'FFCCFFCC',
               'FFFFFF99', 'FF99CCFF', 'FFFF99CC', 'FFCC99FF', 'FFFFCC99', 'FF3366FF',
               'FF33CCCC', 'FF99CC00', 'FFFFCC00', 'FFFF9900', 'FFFF6600', 'FF666699',
               'FF969696', 'FF003366', 'FF339966', 'FF003300', 'FF333300', 'FF993300',
               'FF993366', 'FF333399', 'FF333333']

import random
color_lst= random.sample(COLOR_INDEX, len(label_list_for_col_header))
print color_lst

print int(label_list_for_col_header.index(label_list_for_col_header[0]))

h= len(title_list)
m= 0    
for lbls in label_list_for_col_header: 
    j= int(label_list_for_col_header.index(lbls))+5
    for row in ws.iter_rows('D2:D11'):
        for cell in  row:

            if lbls in cell.value : 
                general_lst.append(cell.row)
                for items in range(len(general_lst)):

                    ws.cell(row = general_lst[items], column = j).fill = PatternFill(start_color=str(color_lst[m]), end_color=str(color_lst[m]) , fill_type='solid')
    general_lst = []
    m +=1       


ws.column_dimensions['A'].width = 70    
ws.column_dimensions['C'].width = 23
ws.column_dimensions['B'].width = 5        
wb.save("Test61.xlsx")      

Suche ein Wort in einem text-string in Excel-Blatt mit den openpyxl

Die Antwort auf diese anderen SO kann Ihnen helfen, zu wissen, welche Zeile Sie sich befinden. (Mit enumerate)
jcfollower, Danke für den Tipp.Ich denke, diese Arbeit sollte in meiner situation. Ich werde zurück, sobald ich es versuchen. Jetzt muss ich herausfinden, einen Weg, um nach text zu suchen.
AUA! Code ziemlich verbose! 😉 Wenn Sie Zeit haben sollten Sie schauen, refactoring es ein bisschen. Ich würde auch empfehlen, die Sie erhalten in der Gewohnheit, mit print() als Funktion für die Python-3-Kompatibilität. Wir alle hassen es, aber das ist, wie es ist. Beginnen Sie mit dem training die Muskel-Speicher!
Ich weiß, sehr lange und vielleicht nicht sehr effizienten code. Es macht den job für jetzt, ich brauchte, um zu zeigen, dass mein professor diese Datei in etwa 4 Stunden von jetzt. Ich werde einiges ändern Schriftarten und hoffentlich habe ich dann eine oder zwei Stunden zum schlafen. Prost!

InformationsquelleAutor Julia_arch | 2015-12-09

Schreibe einen Kommentar