Excel auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Psus

Ich habe es geschafft Excel zu öffnen und Daten einzugeben.
Danke für den hilfreichen Support.
:D
Aber wie kann ich jetzt aus Excel mit Python Daten einlesen :?:
Freue mich auf Ideen.
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!
Psus hat geschrieben:Aber wie kann ich jetzt aus Excel mit Python Daten einlesen

Code: Alles auswählen

ZelleZ6S4 = o.Cells(6,4).Value
print ZelleZ6S4
Was es für andere Methoden und Eigenschaften gibt, musst Du der Doku der Anwendung entnehmen, die Du steuern willst, bei Excel in erster Linie die VBA-Doku. Ein bisschen Tüfteln ist da aber angesagt. O-Ton aus der pywin32-Doku "How do I know which methods and properties are available? Good question. This is hard! You need to use the documentation with the products, or possibly a COM browser."
Tipp: Wenn Du tiefer in die Materie einsteigen willst, besorg' Dir das Buch "Python Programming on Win32" [1]. Oder lade Dir zumindest den Beispielcode von der Verlagsseite runter. Enthalten ist da u.a. die Klasse "easyExcel", die den Excel-Zugriff etwas komfortabler macht.

Jan

[1] http://www.oreilly.com/catalog/pythonwin32/
x-herbert
User
Beiträge: 59
Registriert: Mittwoch 27. November 2002, 20:52

Hi Psus,

"aus Excel mit Python Daten einlesen" wer soll diesen Satz verstehen???

Sicher ist es möglich, aus Excel heraus ein Python-Script anzustoßen, weches irgendwas macht und dann kann man die Daten einlesen.....

Denke, dass war mit der o.g. "Wortkombination" nicht gemeint. Ich nehme an, "wie bringe ich Daten per Python in eine xls-Datei?"

Lösungen:
1.) per Win32-COM wie von Voges beschrieben
=> funktioniert sehr gut (eigene Sachen getestet) in beide Richtungen Excel <==> Python

2.) BIFF-Format
Die Excel Dateien sind in einem mehr oder weniger offenen Datenformat dem s.g. BIFF abgelegt, welches man relativ einfach (binär) schreiben kann. Klassen dazu gibt es u.a. in Perl und PHP, wo man sich die Sache ansehen und ggf. "nachbauen" kann. Das Funktioniert natürlich auch in Python!
siehe mein Beitrag "dirty hacking des BIFF-Formates:" unter
http://python.sandtner.net/viewtopic.ph ... c&start=15
gruss x-herbert
rogen

ich hätte auch eine frage :

und zwar bekomme ich eine liste in xls format geschickt (leider)
ich benutze aber linux , win32com funktionert nicht.

wie kann ich excel dateien unter linux mit python öffnen ?
Benutzeravatar
strogon14
User
Beiträge: 58
Registriert: Sonntag 23. Februar 2003, 19:34
Wohnort: Köln
Kontaktdaten:

wie kann ich excel dateien unter linux mit python öffnen ?
Was ist den genau in den Excel-Dateien drin? Wenn es nur um ein paar Zahlen/Wörter in Tabellenzellen geht, reicht auch das CSV Format.

Für CSV es zig Module für Python (z.B. http://object-craft.com.au/projects/csv/)

Bitte entweder deine Quelle, dir CSV zu senden oder benutze OpenOffice oder Gnumeric, um .xls in .csv zu wandeln.

Wenn Du eine Konverter brauchst, der von der Kommandozeile funktioniert (damit Du ihn von Python aus mit os.popen verwenden kannst), schau dir mal http://chicago.sourceforge.net/xlhtml/ an.

HTH, Chris
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

rogen hat geschrieben:ich hätte auch eine frage :

und zwar bekomme ich eine liste in xls format geschickt (leider)
ich benutze aber linux , win32com funktionert nicht.

wie kann ich excel dateien unter linux mit python öffnen ?
Ich nehme an, du möchtest die weiter bearbeiten. Dann kann ich nur Open Office oder Staroffice empfehlen oder wollltest du eine reine Python Lösung?

Hans
Benutzeravatar
strogon14
User
Beiträge: 58
Registriert: Sonntag 23. Februar 2003, 19:34
Wohnort: Köln
Kontaktdaten:

Ich habe mal ein kleines Beispielskript geschrieben, das ein ausgewähltes Tabellenblatt einer Excel Datei in eine CSV Liste wandelt. Dabei wird das o.g. Programm xlhtml verwendet. Mittels des csv Moduls (<http://www.object-craft.com.au/projects/csv/>) kann der String mit der CSV Liste dann noch in eine Python Liste geparst werden.

Code: Alles auswählen

"""xls2html.py FILE [page no]"""

import popen2
import csv

def xls2list(file, page=0):
    csvraw = xls2csv(file, page)
    p = csv.parser()
    return [p.parse(line) for line in csvraw.split('\n')]

def xls2csv(file, page=0):
    """Converts a selected sheet in an Excel file to CSV."""

    chout, chin, cherr = popen2.popen3('xlhtml -csv -xp:%i "%s"' % (page, file))
    out = chout.read()
    err = cherr.read()
    chout.close(); chin.close(); cherr.close()
    if err:
        raise IOError, err
    else:
        return out


def main(args):
    if len(args) == 2:
        page = int(args[1])
    else:
        page = 0
    try:
        print xls2csv(args[0], page)
    except IndexError:
        print __doc__

if __name__ == '__main__':
    import sys
    main(sys.argv[1:])
Fühlt euch frei, dies zu benutzen wie ihr wollt. Wer Fehler findet, darf sie behalten ;-)
Antworten