Seite 1 von 1

Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Mittwoch 31. August 2011, 07:20
von grorol2
Hallo liebe Python Gemeinde,

mein Problem ist folgendes:
Ich habe sehr viele Exceldateien von denen ich dachte das sie alle das gleiche Format (gleiche Zellenposition der jeweiligen Inhalte z.B. Bearbeiter immer auf 10E) haben. Dummerweise stellte sich jetzt heraus das dies doch nicht der Fall ist und ich meine statische Zellenabfrage vergessen kann. Von daher hatte ich gehofft, dass mir jemand mit einer dynamischen Abfrage weiter helfen könnte. Konkret bedeutet dies, dass das Skript die Zellen der Tabelle nach dem Wort Bearbeiter durchsucht und dann den Inhalt der Zelle darunter in eine Variable bzw. final in eine DBF überträgt.

Vielen Dank schonmal im Voraus

Mein bisheriges Skript.

Code: Alles auswählen

from xlrd import open_workbook
from dbfpy import dbf

#Excel Quelltabelle oeffnen
book = open_workbook ('test.xls')
sheet = book.sheet_by_name("Vorlage Strasse")

# Zelleninhalte der Exceltabelle auslesen
bearbeiter = sheet.cell(9,4)

# uebertragung dbf
db = dbf.Dbf ("test.dbf", new=True)
db.addField(
		
                ("Bearbeiter", "C", 25),
   
                  )
rec = db.newRecord()
rec ["Bearbeiter"] = bearbeiter.value

rec.store()
db.close()

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Mittwoch 31. August 2011, 07:34
von mkesper
Schau mal auf http://www.python-excel.org/ nach dem Python-Excel-Tutorial, dort gibt es einen Abschnitt "Iterating over the contents of the sheet" (Seite 11). Du kannst einfach Zeilen, Spalten oder Ranges als Liste verarbeiten und dann die normalen Python-Operationen darauf anwenden.

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Mittwoch 31. August 2011, 12:24
von grorol2
Vielen Dank für den ersten Anschubs. Das klappt soweit schon ganz gut. Jetzt könnte ich noch einen Tip zum encoding gebrauchen, wenn z.B. der String "Straße" gesucht wird bekomme ich die Fehlermeldung "syntax error non asci character... no encoding declared"


from xlrd import open_workbook
book = open_workbook('test.xls')

spalte1 = book.sheet_by_index(0)
a=spalte1.col_values(0,1)
c=a.index("Belag")
Belag=a[c+1]
print Belag

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Mittwoch 31. August 2011, 14:20
von lunar

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Donnerstag 1. September 2011, 09:13
von grorol2
Vielen Dank für den Hinweis, wenn auch etwas überheblich. Leider habe ich es nicht geschafft das Problem endgültig zu lösen und bekomme folgende Fehlermeldung.
"Syntax error non asci Character"... "no encoding declared"

Mit ist klar das Python 2.6 im standard mit asci arbeitet und ihm das ß nicht passt. Müsste ich folglich nur eine codierung am Anfang setzen bzw. welche?

#!/usr/bin/python
# -*- coding: latin-1 -*-

Aus der xlrd Hilfe geht hervor, dass das Modul seine Werte in latin-1 oder utf_16_le liefert.

import sys
from xlrd import open_workbook

book = open_workbook('test.xls')


tabelle1 = book.sheet_by_index(0)

sp1=tabelle1.col_values(0,0)

c=sp1.index("Straße")

strasse=sp1[c+1]
print strasse

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Donnerstag 1. September 2011, 10:06
von lunar
@grorol2: Du musst die Kodierung einer Quelltext-Datei an den Anfang derselben schreiben, um Zeichen außerhalb ASCII im Quelltext verwenden zu können.

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Donnerstag 1. September 2011, 10:19
von grorol2
Ok daraus folgt für mich, das es so geschrieben werden müsste.

#!/usr/bin/python
# -*- coding: utf-16LE-*-

import sys
from xlrd import open_workbook

book = open_workbook('test.xls')

tabelle1 = book.sheet_by_index(0)

sp1=tabelle1.col_values(0,0)

c=sp1.index("Straße")
strasse=sp1[c+1]

print strasse

Bekomm dann aber eine weitere Fehler meldung.
syntax error : 'utf-16' codec cant decode bytes in position ...... illegal encoding

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Donnerstag 1. September 2011, 10:35
von lunar
@grorol2: Die offensichtliche Antwort ist, dass die Datei nicht "utf-16LE" kodiert ist.

Re: Inhalt von Excel Zellen überprüfen und Position ausgeben

Verfasst: Dienstag 29. November 2011, 12:04
von grorol2