2017-05-21 1 views
2

pour appliquer la validation des données pour toutes les lignes dans une colonne spécifique de la séquence suivante est l'utilisation:xlswriter liste déroulante erreur Excel

import xlsxwriter 

workbook = xlsxwriter.Workbook('data_validate2.xlsx') 
worksheet = workbook.add_worksheet() 

status_col_loc=1 
for row in range(1,50000): 
    worksheet.data_validation(xlsxwriter.utility.xl_rowcol_to_cell(row,status_col_loc) ,{'validate':'list' ,'source': ['Closed','Pending','Redirected']}) 
workbook.close() 

cette approche fonctionne parfaitement lorsque le nombre de lignes appliquées est inférieure à 50K.Beyond que corrompt le fichier Excel

Excel xml error

Est-il possible d'appliquer la validation plus que 100K lignes sans altérer le fichier Excel?

Répondre

2

Excel a une limite non documentée de 60 000 validations de données non contiguës uniques par feuille de calcul.

Excel prend en charge> 60 000 validations de données non-uniques et non-contiguës en utilisant une optimisation pour les validations en double (après 60 000). Toutefois, XlsxWriter ne prend pas en charge cette optimisation, vous devrez donc limiter les validations de données dans votre feuille de calcul à 60 000.

+0

Merci, je vois que cette demande a été soulevée dans le passé github.com/jmcnamara/XlsxWriter/issues/240. est-ce possible d'avoir cela comme une demande de fonctionnalité? Si l'application Excel permet cette fonctionnalité, existe-t-il une raison particulière pour laquelle XlsxWriter limite cela? – DACW

+0

Les principales raisons pour lesquelles ce problème n'est pas résolu est qu'il n'est pas fréquemment rencontré (ce n'est que le deuxième rapport que j'ai eu) et le correctif est laborieux et nécessite beaucoup de tests pour les cas de bordure. – jmcnamara

+0

Dans ce cas, je dois recourir à openpyxl pour cette fonctionnalité sinon j'irais toujours avec xlswriter. – DACW