Seite 1 von 1

Nach Excel schreiben

Verfasst: Donnerstag 5. April 2007, 18:20
von iwl
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)

Verfasst: Donnerstag 5. April 2007, 18:22
von iwl
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?

Verfasst: Donnerstag 5. April 2007, 20:16
von gerold
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
:-)

Verfasst: Donnerstag 5. April 2007, 20:34
von sunmountain
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

Verfasst: Donnerstag 5. April 2007, 20:51
von gerold
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