将Excel列设置为文本(将DataGridView中的数据导出到Excel)

时间:2016-02-15 16:58:00

标签: c# excel winforms datagridview

我将数据从DataGridView导出到Excel。一切都很好但是当列中的数据有,例如:000115455时,Excel忽略了' 0' 0并插入115455.我接下来尝试:

  • 在填充DataGridView
  • 之前格式化DataTable中的列
  • 将数据从数据库中检索为VARCHAR。
  • 在填充后格式化DataGridView中的列。
  • 在我的方法中使用Range.EntireColumn,Range.Cells.NumberFormat和其他方法。

这些都不起作用!

导出到excel并保存文件的代码片段

ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelLibro = ExcelApp.Workbooks.Add(misDatos);
ExcelHoja = (Excel.Worksheet)ExcelLibro.Worksheets.get_Item(1);
Excel.Range rangoHoja = (Excel.Range)ExcelHoja.Cells[1, 1];
rangoHoja.Select();
ExcelHoja.PasteSpecial(rangoHoja, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
ExcelLibro.SaveAs(opcionSFD.FileName, 
                                  Excel.XlFileFormat.xlWorkbookNormal,
                                  misDatos,
                                  misDatos, 
                                  misDatos, 
                                  misDatos, 
                                  Excel.XlSaveAsAccessMode.xlExclusive, 
                                  misDatos, 
                                  misDatos, 
                                  misDatos, 
                                  misDatos,
                                  misDatos);

                ExcelApp.DisplayAlerts = true;
                ExcelLibro.Close(true, misDatos, misDatos);
                ExcelApp.Quit();

我能做什么?

1 个答案:

答案 0 :(得分:0)

这对我有用:

在致电ExcelHoja.PasteSpecial(...)之前添加以下行:

rangoHoja.NumberFormat = "@";

这会将单元格的格式设置为 Text

...
rangoHoja.Select();
rangoHoja.NumberFormat = "@"; //Added Line    
ExcelHoja.PasteSpecial(...);
...

希望这有帮助