2012-09-24 41 views
3

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

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

你不能导出到您在预先计算的excel文件导入一个简单的csv文件或XML文件? –

+0

你试过这个家伙吗?转到标题为“以下是列入方法列表。列表”的部分“http://www.codeproject.com/Tips/64127/Exporting-a-List-of-any-type-to-Excel –

回答

-1

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

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

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 

唯一的问题,文档在西班牙。

该项目页面here

出口例如(在西班牙语)是here

这也使进口文件(西班牙文)here

0
  1. 右键单击该项目和管理的NuGet包。
  2. 添加ClosedXML nuget包
  3. 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; 

    } 
相关问题