Le format du nombre NPOI Excel ne s'affiche pas dans la feuille Excel dans asp.net

J'essaie de créer des cellules de format double et de nombre dans Excel en utilisant la bibliothèque NPOI. J'ai utilisé le code comme

Dim cell As HSSFCell = row.CreateCell(j) cell.SetCellValue(Double.Parse(dr(col).ToSsortingng)) 

En excel, les numbers s'alignent bien mais lorsque je vérifie le format, il s'affiche dans "Général"

alt text

alors j'ai changé mon code pour l'aimer ci-dessous

  Dim cell As HSSFCell = row.CreateCell(j) cell.SetCellValue(Double.Parse(dr(col).ToSsortingng)) Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0") cell.CellStyle = cellStyle 

Ensuite, lors de l'ouverture du file, il donne une erreur et prend aussi longtime à ouvrir. Mais le format Excel s'affiche dans "Numéro"

l'erreur s'affiche comme ci-dessous.

alt text

Comment réparer cela?

Regardez ceci , créez-vous un object cellStyle pour chaque cellule? Si oui, ne le faites pas. Essayez de créer quelques styles avant de créer vos cellules, puis appliquez ces styles prédéfinis aux cellules que vous créez.

Hare est un moyen simple de créer un double format dans Excel Document USING NPOI .

 //make NUMERIC Format in Excel Document // Author: Akavrelishvili var eRow = sheet.CreateRow(rowIndex); //create new Row , rowIndex - it's integer, like : 1,2,3 eRow.CreateCell(0).SetCellValue(row["ProvidName"].ToSsortingng()); //create cell and set ssortingng value double Amount = Convert.ToDouble(row["Amount"].ToSsortingng()); //convert ssortingng to double eRow.CreateCell(1).SetCellValue(Amount); // create cell and set double value. 

C'est une version de travail, je l'ai utilisé beaucoup de projets.

Très difficile est d'insert le format DateTime dans Excel. Il n'y a pas de bon exemple dans Internet et je pense qu'il aide les gens à le faire correctement. Je vous montre un exemple de code:

  //make Date Time Format in Excel Document // Author: Akavrelishvili 

var eRow = sheet.CreateRow (rowIndex); // crée une nouvelle ligne // rowIndex – c'est entier, comme: 1,2,3

  ICellStyle cellDateStyle = workBook.CreateCellStyle(); //create custom style cellDateStyle.DataFormat = workBook.CreateDataFormat().GetFormat("dd/mm/yyyy"); //set day time Format eRow.CreateCell(3).SetCellValue(Convert.ToDateTime(row["Date"])); //set DateTime value to cell eRow.GetCell(6).CellStyle = cellDateStyle; // Restyle cell using "cellDateStyle" I hope it helps 

Pour résoudre le trop grand nombre de styles de cellule différente, déclarez tous les styles en dehors de toute boucle que vous pouvez exécuter.

Je présume que 'j' serait l'enquêteur, donc je déposerai ce que vous aviez dans un format corrigé pour vous.

 Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0") For col = 0 To ColoumCounter For j = 0 To Counter Dim cell As HSSFCell = row.CreateCell(j) cell.SetCellValue(Double.Parse(dr(col).ToSsortingng)) cell.CellStyle = cellStyle Next Next 

Cela devrait fonctionner un peu mieux, en limitant le nombre de styles "Nouveaux".