如何将C#对象列表导出到Excel电子表格?

我有一个从Excel电子表格创build的C#列表,我想将其导出到Excel。 我怎样才能做到这一点? 这只是一个控制台项目。 我不打算在.Net应用程序中显示数据。 我只需要电子表格。

var fileName = string.Format("C:\\Users\\SGurmu\\Desktop\\Data 091510.xls"); var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var fileName2 = string.Format("C:\\Users\\SGurmu\\Desktop\\Copy of Prototype.xls"); var connectionString2 = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "contacts"); var data = ds.Tables["contacts"].AsEnumerable(); List<EmployeeData> query = data.Where(x => x.Field<string>("First_Name") != string.Empty).Select(x => new EmployeeData { empID = x.Field<double>("EMPLOYEE"), firstName = x.Field<string>("First_Name"), lastName = x.Field<string>("Last_Name"), JobCategory = x.Field<string>("Job Title"), StartDate = x.Field<Nullable<DateTime>>("Hire Dt"), EndDate = x.Field<Nullable<DateTime>>("Term Dt"), TermReason = x.Field<string>("Term Reason"), PeggedUID = x.Field<Nullable<double>>("Pegged UserID"), UpdateDate = x.Field<Nullable<DateTime>>("Last Updated") }).ToList(); 

也许你可以尝试在Nuget中使用Infodinamica.Framework.Expotable包。

有了它,你可以做这样的事情

 List<EmployeeData> query = data.Where(x => x.Field<string>("First_Name") != string.Empty).Select(x => new EmployeeData { empID = x.Field<double>("EMPLOYEE"), firstName = x.Field<string>("First_Name"), lastName = x.Field<string>("Last_Name"), JobCategory = x.Field<string>("Job Title"), StartDate = x.Field<Nullable<DateTime>>("Hire Dt"), EndDate = x.Field<Nullable<DateTime>>("Term Dt"), TermReason = x.Field<string>("Term Reason"), PeggedUID = x.Field<Nullable<double>>("Pegged UserID"), UpdateDate = x.Field<Nullable<DateTime>>("Last Updated") }).ToList(); IExportEngine engine = new ExcelExportEngine(); engine.AddData(EmployeeData); MemoryStream memory = engine.Export(); 

你可以用nuget命令来安装:

 Install-Package Infodinamica.Framework.Exportable 

唯一的问题是,文件是西class牙文。

项目页面在这里

导出示例(西class牙语)就在这里

它也启用导入文件(西class牙文) 在这里

  1. 右键单击该项目并pipe理nuget包。
  2. 添加ClosedXML nuget包
  3. using ClosedXML.Excel;添加using ClosedXML.Excel; 到类文件的顶部。
  4. 将“ToExcelFile”方法添加到您的类。
  5. 将您的列表转换为DataTable。

ToExcelFile方法

 public static bool ToExcelFile(this DataTable dt, string filename) { bool Success = false; //try //{ XLWorkbook wb = new XLWorkbook(); wb.Worksheets.Add(dt, "Sheet 1"); if (filename.Contains(".")) { int IndexOfLastFullStop = filename.LastIndexOf('.'); filename = filename.Substring(0, IndexOfLastFullStop) + ".xlsx"; } filename = filename + ".xlsx"; wb.SaveAs(filename); Success = true; //} //catch (Exception ex) //{ //ex.HandleException(); //} return Success; } 

将您的列表转换为DataTable

  public static DataTable ToDataTable(List<string> list) { DataTable MethodResult = null; DataTable dt = new DataTable(); dt.Columns.Add("Item", ); foreach(string s in list) { DataRow dr = dt.NewRow(); dr[0] = s; dt.Rows.Add(dr); } dt.AcceptChanges(); MethodResult = dt; return MethodResult; }