2011-09-26 1 views
3

J'utilise pywin32 pour lire et écrire sur Excel. Maintenant, la seule méthode que je connaisse est d'accéder à Range.Value, mais je ne connais généralement pas la taille de la table Excel complète à l'avance. Donc pour le moment je lis ligne par ligne jusqu'à ce que je trouve une ligne complètement vide. Cela peut être assez lent.Lecture de grandes tables Excel (taille de deviner)

Bien sûr, je vais essayer des trucs comme lire des blocs de données - alors je devrais trouver une taille de bloc optimale. Connaissez-vous une autre méthode (peut-être une fonction interne Excel) ou d'autres approches plus rapides?

Répondre

2

Dans VBA, nous utilisons souvent la déclaration End comme ceci:

Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row 

Cela peut vous aider à trouver la dernière cellule utilisée d'une colonne (encore, je ne sais pas comment étendre cette méthode pour pywin

+0

Merci. Cela pourrait fonctionner. Btw, dans pywin c'est tout de même - probablement mappé en quelque sorte :) – Gerenuk

2

Que diriez-vous d'obtenir toute la gamme avec la propriété Worksheet.UsedRange?

+0

Intéressant. Est-ce comme la rangée remplie maximale? Cela fonctionne probablement si je n'ai qu'une seule table sur la feuille de calcul :) – Gerenuk

+0

@Gerenuk: c'est utile quand vous voulez tout sélectionner dans la feuille de calcul. Si vous avez plusieurs tables, la plage les inclura toutes. –

3

Vous pouvez utiliser xlrd pour ouvrir un classeur et lire la taille d'une feuille de calcul particulière. C'est assez rapide.

Conseils: book = xlrd.open_workbook("myfile.xls") vous faire objet feuille par sheet = book.sheet_by_index(sheetx) ou sheet = book.sheet_by_name(sheet_name) et vous avez sheet.nrows propriété avec nombre de lignes en feuille donnée. Il s'agit de la documentation API.

Questions connexes