2016-11-04 8 views
0

Excel.InteropおよびC#を使用してExcelセルに13桁の値を動的に追加しています。ただし、値は7211192800080の代わりに7,21119E+12行に表示されます。セルをクリックすると、表示が正しいことになります。Excelセルの値がExcel.InteropおよびC#で正しく表示されない

//_ReportData is a DataTable with a single item 
for (int i = 0; i < _ReportData[0].Rows.Count; i++) 
{ 
    for (int j = 0; j < _ReportData[0].Columns.Count; j++) 
    { 
     excelCellRange_data = ((Worksheet)excelWorksheet_data).Cells; 
     var cellValueRange = ((Range)excelCellRange_data)[i, j + 1]; 
     if (i == 0) 
      ((Range)cellValueRange).Value2 = _ReportData[0].Columns[j].ToString(); //This is where the columns are set 
     else 
      ((Range)cellValueRange).Value2 = _ReportData[0].Rows[i][j].ToString(); //This is where the values are set 
    } 
} 

助けてください。

答えて

2

これはExcelの「問題」です。セルに番号を直接入力してEnterキーを押すと、同じ問題が表示されます。セルを数値として最初に書式設定すると、正しく表示されます。

((Range)cellValueRange).NumberFormat = "0"; 
+0

残念ながら、これで問題は解決されませんでした。値はデータベースから文字列として渡されるので、私は 'long.tryparse()'を実行して、数字で作業していますが、まだ満足できません。 –

+0

さて、私はそれを試して、15桁までの数字で正しく動作します(999999999999999)。数値が大きい場合、Excelは正しく処理できません。例えば。 17桁の数字99999999999999999は99999999999999900として表示されます...理由を知らない...とにかく、Excelがこの数値で計算しないようにしたい場合は、 – Wudge

+0

私が別に何をしたのか分かりませんが、それは自分自身をソートしてしまったようです。私は実際の生産データを照会し、dev環境データとは対照的に問題はありません...奇妙ですが –

1

あなたはToString()方法なしで値を挿入する必要があります。 Excelは、挿入された値の型から自動的に書式を適用する必要があります。

+0

ToString()メソッドを削除しても問題は解決しません –

関連する問題