2011-05-10 1 views
2

J'ai le code suivant. Son but est de parcourir un fichier xls en utilisant POI et d'écrire toutes les données dans un fichier txt. Sur mon ordinateur, ce code fonctionne très bien, mais sur un autre ordinateur, il semble avoir des problèmes. Je l'ai réduit à ceci. Lorsque je tente de créer les cellules iteratorGroovy/POI renvoyant différents itérateurs sur différents systèmes

Iterator<HSSFCell> cells = row.cellIterator(); 

retourne mon système

[email protected]

Ce qui est ce que je attendre. Alors que sur un autre système, il renvoie le suivant

[email protected]

Toutes les idées sur ce écarts? Etes-vous sûr d'utiliser la même version de POI sur les deux systèmes?

Répondre

2

Et utilisez-vous HSSF sur les deux?

Les versions récentes de HSSF doivent toujours renvoyer un org.apache.poi.hssf.usermodel.HSSFRow $ CellIterator à vous.

Avec XSSF, le iterator vous rentrerez est pris d'un TreeMap (c'est les valeurs iterator), donc je n'attendre à un iterator HashMap mais je voudrais attendre un java.util un

Cela me fait penser que vous êtes peut-être pas en utilisant la même version de POI dans les deux endroits

Voir la POI FAQ pour savoir comment vérifier quel fichier jar que vous utilisez pour POI

+0

Quelle solution simple. Merci. – KevinO

2

Je suis d'accord avec @Gagravarr ... vous avez un version différente de quelque chose quelque part

Et Pour votre information, une version plus 'groovy' de votre code serait:

(0..<numberOfSheets).each { sheetNumber -> 
    HSSFSheet sheet = workBook.getSheetAt(sheetNumber) 
    sheet.rowIterator().each { row -> 
    row.cellIterator().each { cell -> 
     allEntityFile << cell.toString() 
    } 
    allEntityFile << "\n" 
    } 
} 
+0

Grande groovification. J'ai travaillé avec des vétérans Java qui se méfient un peu de la syntaxe de Groovy. Je dois donc me faufiler morceau par morceau. – KevinO

Questions connexes