NPOI Excel format numérique ne montrant pas dans la feuille Excel en asp.net
Question
Je suis en train de créer des cellules doubles et format numérique dans Excel en utilisant la bibliothèque NPOI. Je code comme
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
nombres dans Excel alignent droit, mais quand je vérifie le format qu'il montre dans « Général »
puis j'ai changé mon code comme ci-dessous
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0")
cell.CellStyle = cellStyle
Ensuite, Alors que l'ouverture du fichier, il donne l'erreur et prendre aussi longtemps pour ouvrir. Mais le format Excel montrant dans "Numéro"
montrant erreur est comme ci-dessous.
Comment résoudre ce problème?
La solution
Jetez un oeil à cette , vous créez un objet CellStyle pour chaque cellule? S'il ne faut pas. Essayez de créer seulement quelques styles avant de créer vos cellules et ensuite appliquer ces styles prédéfinis aux cellules que vous créez.
Autres conseils
Hare est un moyen simple de créer format double dans Excel document UTILISATION 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"].ToString()); //create cell and set string value
double Amount = Convert.ToDouble(row["Amount"].ToString()); //convert string to double
eRow.CreateCell(1).SetCellValue(Amount); // create cell and set double value.
Ceci est la version de travail, je l'ai utilisé un bon nombre de projets.
Très dur est d'insérer DateTime format dans Excel, il n'y exemple dans Internet et je pense que cela aide les gens à le faire droit chemin. Je vous montre exemple de code:
//make Date Time Format in Excel Document // Author: Akavrelishvili
var eRow = sheet.CreateRow (rowIndex); // créer une nouvelle ligne // rowIndex - entier de lui, 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 corriger les trop nombreux styles de cellule déclarent tous les styles en dehors de toute boucle que vous pouvez exécuter.
Je vous presumeing « j » serait le recenseur donc je vais laisser tomber 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).ToString))
cell.CellStyle = cellStyle
Next
Next
Cela devrait fonctionner un peu mieux, en limitant le nombre de styles « Nouveau ».
Créer un style puis, mais ce style pour la colonne
ICellStyle _TextCellStyle = wb1.CreateCellStyle();
_TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@");
sheet.SetDefaultColumnStyle(2, _TextCellStyle);