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 »

text alt

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.

text alt

Comment résoudre ce problème?

Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top