2

NPOIライブラリを使用してExcelで倍精度および数値形式のセルを作成しようとしています。私は次のようなコードを使用しました

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

Excelでは数字は正しく整列していますが、フォーマットを確認すると「一般」に表示されます

代替テキスト

次に、コードを以下のように変更しました

 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

次に、ファイルを開いているときにエラーが発生し、開くのに非常に時間がかかります。ただし、Excelの形式は「数値」で表示されます

エラー表示は以下のようになります。

代替テキスト

これを修正する方法は?

4

4 に答える 4

4

これを見てください。セルごとにcellStyleオブジェクトを作成していますか?もしそうなら、しないでください。セルを作成する前に、いくつかのスタイルを作成してから、作成するセルにこれらの事前定義されたスタイルを適用してみてください。

于 2010-08-06T17:05:07.370 に答える
1

あまりにも多くの異なるセルスタイルを修正するには、実行している可能性のあるループの外側にあるすべてのスタイルを宣言します。

'j'が列挙子になると思いますので、修正した形式でドロップします。

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

これは、「新しい」スタイルの数を制限することで、もう少しうまくいくはずです。

于 2015-04-23T12:14:19.227 に答える
0

Hareは、NPOIを使用してExcelドキュメントでdouble形式を作成する簡単な方法です。

//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.

これは動作中のバージョンであり、私はそれを多くのプロジェクトで使用しました。

非常に難しいのは、ExcelにDateTime形式を挿入することです。インターネットには良い例はなく、人々がそれを正しい方法で行うのに役立つと思います。コード例を示します。

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

var eRow = sheet.CreateRow(rowIndex); //新しい行を作成します//rowIndex-整数のように: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
于 2014-12-04T10:46:31.057 に答える
0

次にスタイルを作成しますが、このスタイルは列に使用します

 ICellStyle _TextCellStyle = wb1.CreateCellStyle();

 _TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@");
 sheet.SetDefaultColumnStyle(2, _TextCellStyle);
于 2018-03-08T08:54:24.263 に答える