2011-08-04 2 views
0

En utilisant le code ci-dessous, je peux obtenir les données à imprimer. Comment changer de code pour xlrd?Connexion Excel avec Python

Comment modifier ce code pour utiliser un fichier xls déjà ouvert et visible. Ainsi, le fichier est ouvert d'abord manuellement, puis le script s'exécute.

Et, est mis à jour.

puis sont poussés dans Mysql

import os 
from win32com.client import constants, Dispatch 
import numpy as np 

#---------------------------------------- 
# get data from excel file 
#---------------------------------------- 
XLS_FILE = "C:\\xtest\\example.xls" 
ROW_SPAN = (1, 16) 
COL_SPAN = (1, 6) 
app = Dispatch("Excel.Application") 
app.Visible = True 
ws = app.Workbooks.Open(XLS_FILE).Sheets(1) 
xldata = [[ws.Cells(row, col).Value 
       for col in xrange(COL_SPAN[0], COL_SPAN[1])] 
      for row in xrange(ROW_SPAN[0], ROW_SPAN[1])] 
#print xldata 
a = np.asarray(list(xldata), dtype='object') 
print a 
+0

Parce qu'il est génial: [pyspread] (http://pyspread.sourceforge.net/) – nmichaels

Répondre

1

Si vous voulez dire que vous voulez modifier le fichier en cours, je suis sûr à 99% que n'est pas possible et 100% sûr qu'il est une mauvaise idée. Pour modifier un fichier, vous devez disposer des autorisations d'écriture. Excel crée un verrouillage de fichier pour empêcher l'édition asynchrone et simultanée. Si un fichier est ouvert dans Excel, la seule chose qui devrait modifier ce fichier est ... Excel. Si vous voulez dire que vous voulez lire le fichier actuellement dans l'éditeur, alors cela est possible - vous pouvez souvent obtenir un accès en lecture à un fichier en cours d'utilisation, mais ce n'est pas du tout sage - si l'utilisateur n'a pas enregistré, l'utilisateur verra un ensemble de données, et vous aurez un autre ensemble de données sur le disque.

Même si je ne suis pas un fan de VB, c'est un bien meilleur pari pour cette application - utilisez une macro pour insérer les données dans MySQL directement depuis Excel. Personnellement, je créerais un utilisateur avec des privilèges d'insertion uniquement, puis j'essaierais this tutorial.

+0

Je l'ai fait en VBA, la recherche de solution de python. Je voudrais exceller changer excel. Et, python font maths numpy et le mouvement dans mysql. Mais, avec le code ci-dessus un "nouveau" Workopens à chaque fois. – Merlin

+0

Avez-vous envisagé d'utiliser OpenOffice? Cela a des liaisons Python. – cwallenpoole

+0

oui. Je ne suis pas intéressé par OO. – Merlin