1

適切な出力でデータテーブルから Excel ファイルにデータをエクスポートする方法。i は、Excel レコードの最初の行をヘッダーにする必要があり、表示データには値を切り上げるのではなく、すべての値を表示する必要があることを意味します。助けてください ** ldt_Temp (データテーブル),as_OutputDir (エクスポートされたディレクトリ)

object misValue = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;
Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;
// Headers.  
for (int i = 0; i < ldt_Temp.Columns.Count; i++)
{
    ws.Cells[1, i + 1] = ldt_Temp.Columns[i].ColumnName;
}
// Content.  
for (int i = 0; i < ldt_Temp.Rows.Count; i++)
{
 for (int j = 0; j < ldt_Temp.Columns.Count; j++)
  {
     ws.Cells[i + 2, j + 1] = ldt_Temp.Rows[i][j].ToString();
  }
}
 ws.Name = ldt_Temp.TableName;
 wb.SaveAs(as_OutputDir, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
wb.Close(true, misValue, misValue);
app.Quit();

ここに画像の説明を入力

4

2 に答える 2

0

また、各セルの各数値形式を再配置し、各セルをループして桁の長さを取得し、形式を動的に作成する方法も見つけます

 string ls_Test = cells value 
 string part = ls_Test.Substring(0, ls_Test.IndexOf('.'));
 string ls_FormatDeicmal = ls_Test.Substring(part.Length + 1, ls_Test.Length - (part.Length + 1));
 string ls_DigiFormat = "";
 for (int f = 0; f < ls_FormatDeicmal.Length; f++)
 {
     ls_DigiFormat += "0";
 }
 ls_DigiFormat = "0." + ls_DigiFormat; // 0.000000000, 0.00, 0.00000
 ws.Cells[i + 2, j + 1].NumberFormat = ls_DigiFormat;
于 2013-10-04T06:15:17.897 に答える
0

行1はすでにヘッダーのようです...矢印は列ラベルを指しています。「A」を「Site_Site_id」にしますか? それはExcelの仕組みではありません。

精度を上げるには、右クリックして形式を選択します。ここで、小数点以下の精度を表示したいものに変更します。

ここに画像の説明を入力


すべてのセルを強調表示して、ツールバー ボタンを使用することもできます。

ここに画像の説明を入力


この方法でコードでそれを試みることができます:

// Content.  
for (int i = 0; i < ldt_Temp.Rows.Count; i++)
{
 for (int j = 0; j < ldt_Temp.Columns.Count; j++)
  {
     ws.Cells[i + 2, j + 1] = ldt_Temp.Rows[i][j].ToString();
     ws.Cells[i + 2, j + 1].NumberFormat = "0.00000000000000000"
  }
}
于 2013-10-04T02:55:33.057 に答える