2013-10-04 156 views
1

如何使用正确的输出将数据从数据表导出到excel文件中。我的意思是excel记录的第一行应该是标题,并且显示数据应该显示所有的值而不是四舍五入的值。请帮助** ldt_Temp(数据表),as_OutputDir(导出目录)如何将数据导出到excel中

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(); 

enter image description here

回答

0

行1似乎是头部已经...您的箭头指向列标签。你想'A'是“Site_Site_id”吗?这不是Excel的工作原理。

对于精度,请右键单击并选择格式。现在将小数精度更改为您想显示的数值。

enter image description here


您还可以突出显示你所有的细胞和使用的工具栏按钮:

enter image description here


你可以尝试这样做,在代码:

// 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" 
    } 
} 
+0

尼斯它可以通过这种方式工作 – Hero

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;