1

如何将数据表中的数据导出到具有正确输出的 excel 文件中。i 表示 excel 记录的第一行应该是标题,显示数据应该显示所有值,而不是四舍五入。请帮助 ** ldt_Temp (datatable),as_OutputDir (exported dir)

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

第 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 回答
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 回答