将“Excel 列”设置为“文本”(将数据网格视图中的数据导出到 Excel)

本文关键字:数据 Excel 视图 数据网 设置 文本 网格 | 更新日期: 2023-09-27 18:34:51

我正在将数据从DataGridView导出到Excel。一切正常,但是当列中的数据具有例如:000115455时,Excel会忽略"0"并插入115455。我接下来尝试:

  • 在填充数据网格视图之前设置数据表中列的格式
  • 将从数据库中检索的数据转换为 VARCHAR。
  • 在"填充"后设置数据网格视图中的列的格式。
  • 在我的方法中使用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();

我能做什么?

将“Excel 列”设置为“文本”(将数据网格视图中的数据导出到 Excel)

这对

我有用:

在呼叫ExcelHoja.PasteSpecial(...)之前添加以下行:

rangoHoja.NumberFormat = "@";

这会将单元格的格式设置为"文本"。

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

希望这有帮助