2017-03-06 3 views
1

J'essaie d'écrire des listes dans Excel, la liste contient quelques colonnes.Comment remplir une liste dans Excel en utilisant le module win32com

J'ai inclus mon code ci-dessous. Il semble seulement extraire la première valeur. Je suis assez nouveau pour python, qu'est-ce qui me manque?

code:

import win32com.client as win32 
# 
Z = [3,4,6,8,9,11,40] 
Q = ['x','y','z','e','g','AA','BB'] 

excel = win32.gencache.EnsureDispatch('Excel.Application') 
wb = excel.Workbooks.Add() 
ws = wb.Worksheets.Add() 
ws.Name = "MyNewSheet" 
ws.Range(ws.Cells(1,1),ws.Cells(1,2)).Value = ['Z','Q'] 
for i,e in enumerate (Z): 
ws.Range("A2:A8").Value = [ i for i in (Z)] 
for i,e in enumerate (Z): 
ws.Range("B2:B8").Value = [ i for i in (Q)] 
wb.SaveAs('beta.xlsx') 
excel.Application.Quit() 

Répondre

0

Il semble qu'il veut écrire les valeurs sous forme de lignes. Ainsi, cette re-aligne les écritures être par ligne:

code:

import win32com.client as win32 

Z = [3, 4, 6, 8, 9, 11, 40] 
Q = ['x', 'y', 'z', 'e', 'g', 'AA', 'BB'] 

excel = win32.gencache.EnsureDispatch('Excel.Application') 
wb = excel.Workbooks.Add() 
ws = wb.Worksheets.Add() 
ws.Name = "MyNewSheet" 
ws.Range("A1:B1").Value = ['Z', 'Q'] 
ws.Range("A2:B8").Value = list(zip(Z, Q)) 
wb.SaveAs('beta.xlsx') 
excel.Application.Quit() 

Résultats:

Z Q 
3 x 
4 y 
6 z 
8 e 
9 g 
11 AA 
40 BB 
+0

Merci, c'est exactement ce que je voulais. – HAMIN

+0

Vous êtes les bienvenus. Cependant, sur SO, la [meilleure façon de dire merci] (http://stackoverflow.com/help/someone-answers) est d'upvote toute réponse ou question que vous trouvez utile, et si une réponse à votre question est un bon fit, pour l'accepter. –