Seite 1 von 1

Excel auslesen

Verfasst: Dienstag 18. November 2003, 16:54
von 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.

Re: Excel auslesen

Verfasst: Dienstag 18. November 2003, 18:02
von Voges
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/

Excel

Verfasst: Mittwoch 19. November 2003, 12:18
von x-herbert
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

Verfasst: Montag 24. November 2003, 21:05
von 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 ?

Verfasst: Dienstag 25. November 2003, 00:00
von strogon14
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

Verfasst: Dienstag 25. November 2003, 21:01
von hans
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

xlhtml

Verfasst: Sonntag 30. November 2003, 14:37
von strogon14
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 ;-)