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.
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
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
