Nach Excel schreiben

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.
iwl
User
Beiträge: 12
Registriert: Samstag 9. Dezember 2006, 16:11

Nach Excel schreiben

Beitragvon iwl » Donnerstag 5. April 2007, 18:20

Weiß jemand, warum am Ende mit range diese Fehlermeldung kommt,
während es mit xrange funktioniert???

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-
import win32com.client
import os

Fehler = False
try: ## Excel Anwendung öffnen
    # NOTE - these 2 lines are copied verbatim from the output
    # of makepy.py when run with the -i parameter.
    from win32com.client import gencache
    gencache.EnsureModule('{00020813-0000-0000-C000-000000000046}', 0, 1, 2)
    Excel = win32com.client.Dispatch("Excel.Application")
    Excel.Visible = True
except:
    print "Fehler beim Versuch, Excel zu starten"
    Fehler = True

if Fehler is False:
    wbExcel = appExcel.Workbooks.Add()
    wsExcel = wbExcel.Worksheets(1)
    Cells=wsExcel.Cells
   
    for s in range(10):
      Cells(1,s+1).Value=s


->

Traceback (most recent call last):
File "excel.py", line 22, in <module>
for s in range(10):
File "C:\Python25\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x5.py", line 22840, in __call__
, ColumnIndex)
File "C:\Python25\lib\site-packages\win32com\client\__init__.py", line 448, in _ApplyTypes_
dispid, 0, wFlags, retType, argTypes, *args),
com_error: (-2146827864, 'OLE error 0x800a01a8', None, None)
iwl
User
Beiträge: 12
Registriert: Samstag 9. Dezember 2006, 16:11

Beitragvon iwl » Donnerstag 5. April 2007, 18:22

BTW:

Code: Alles auswählen

  for x in xrange(100):
    for y in xrange(100):
       Cell(x,y).Value=x*y


dauert schon ewig lange, kann man zusehen,
weiß jemand wie man sowas vielleicht als Block schneller nach Excel bekommt?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 5. April 2007, 20:16

iwl hat geschrieben:weiß jemand wie man sowas vielleicht als Block schneller nach Excel bekommt?

Hi iwl!

Ich habe mich ein wenig gespielt, da ich demnächst auch viele Daten in eine Excel-Datei schreiben muss.

Siehe: http://www.python-forum.de/topic-10137.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Beitragvon sunmountain » Donnerstag 5. April 2007, 20:34

iwl hat geschrieben:

Code: Alles auswählen

  for x in xrange(100):
    for y in xrange(100):
       Cell(x,y).Value=x*y



so etwa:

Code: Alles auswählen

data = ((1,2,3),(4,5,6),(7,8,9))
Range('A1:C3') = data
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 5. April 2007, 20:51

sunmountain hat geschrieben:

Code: Alles auswählen

data = ((1,2,3),(4,5,6),(7,8,9))
Range('A1:C3') = data

Hi sunmountain!

Wer hätte das gedacht? :oops:

Das ist nicht umständlich und sehr schnell. 8)
Da habe ich mich mit meiner ODBC-Lösung doch um einiges mehr verausgabt. :?

mfg
Gerold
:-)

PS: Ich habe deine Lösung zum Beispiel hinzugefügt: http://www.python-forum.de/post-63850.html#63850
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]