或者参考NPOI

    典型错误

    https://www.crifan.com/csharp_worksheet_an_unhandled_exception_of_type_system_runtime_interopservices_comexception_occurred_in_mscorlib_dll/

    原参考资料

    http://www.cnblogs.com/fengrengui/articles/397899.html

    添加一个dll

    导出数据到excel - 图1导出数据到excel - 图2

    1. public static void ExportExcel(List<Student> dtsSelect)
    2. {
    3. List<Student> ds = dtsSelect;//数据源
    4. if (ds == null) return;
    5. string saveFileName = "";
    6. bool fileSaved = false;
    7. SaveFileDialog saveDialog = new SaveFileDialog();
    8. saveDialog.DefaultExt = "xls";
    9. saveDialog.Filter = "Excel文件|*.xls";
    10. saveDialog.FileName = "Sheet1";
    11. saveDialog.ShowDialog();
    12. saveFileName = saveDialog.FileName;
    13. if (saveFileName.IndexOf(":") < 0) return; //被点了取消
    14. Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    15. if (xlApp == null)
    16. {
    17. MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
    18. return;
    19. }
    20. Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
    21. Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    22. Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
    23. //写入字段
    24. //写入数值
    25. for (int r = 1; r <=ds.Count; r++)
    26. {
    27. worksheet.Cells[r, 1] = ds[r-1].ID.ToString();
    28. worksheet.Cells[r, 2] = ds[r-1].Name.ToString();
    29. worksheet.Cells[r, 3] = ds[r-1].Age.ToString();
    30. System.Windows.Forms.Application.DoEvents();
    31. }
    32. worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
    33. if (saveFileName != "")
    34. {
    35. try
    36. {
    37. workbook.Saved = true;
    38. workbook.SaveCopyAs(saveFileName);
    39. fileSaved = true;
    40. }
    41. catch (Exception ex)
    42. {
    43. fileSaved = false;
    44. MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
    45. }
    46. }
    47. else
    48. {
    49. fileSaved = false;
    50. }
    51. xlApp.Quit();
    52. GC.Collect();//强行销毁
    53. if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
    54. }
    55. }