2010-09-30 4 views
1

J'essaie d'utiliser le NPOI library dans une application WinForms. J'ai mentionné la dernière dll NPOI dans mon projet et a essayé de reproduire les exemples donné par NPOI et trouvé sur le SO:NPOI HSSF vs SS namespace

 HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet sheet = workbook.CreateSheet("Sheet1"); 
     HSSFRow headerRow = sheet.CreateRow(0); 

Mais cela ne compilera pas sur ma machine car HSSFWorkbook.CreateSheet() retourne un NPOI.SS.UserModel.Sheet au lieu d'un NPOI.SS.UserModel.HSSFSheet.

Qu'est-ce qui me manque ici?

+1

Devinez, mais avez-vous essayé de couler la feuille dans une feuille HSSFS? –

+0

Avez-vous clairement ajouté dans les références de votre projet les bibliothèques NPOI.dll et NPOI.HSSF.dll? Avec "using NPOI.HSSF.UserModel;" dans les utilisations, votre code fonctionne parfaitement pour moi. J'utilise NPOI version 1.2.1.0 – PierrOz

+0

J'avais essayé @Nathan mais un comportement bizarre plus loin dans le code m'a fait croire que ce n'était pas la bonne solution. De toute façon, il semble que ce n'était pas lié. – Jla

Répondre

3

Effectuez les opérations suivantes:

Sheet sheet = workbook.CreateSheet("Sheet1"); 
Row headerRow = sheet.CreateRow(0); 

Et inclure l'espace de noms NPOI.SS.UserModel

Sheet et sont des interfaces réellement, mais ne pas le préfixe I (je présume) parce que cette bibliothèque est un port de Java.

+0

Cela semble également fonctionner. Je n'ai pas vérifié l'historique détaillé mais je suppose qu'ils ont ajouté les interfaces dans la dernière version. – Jla

0

en utilisant NPOI.SS.UserModel; ... Feuille de feuille de calcul = classeur.Créer une feuille ("Feuille1"); IRow headerRow = sheet.CreateRow (0);

1

L'interface est préparée pour NPOI 2.0 en fait. Dans NPOI 2.0, il existe deux espaces de noms: XSSF et HSSF. XSSF est pour xlsx, HSSF est pour xls. Les deux implémente des interfaces dans NPOI.SS.