【问题标题】:How do I export a C# object list to an excel spreadsheet?如何将 C# 对象列表导出到 Excel 电子表格?
【发布时间】:2012-09-16 02:43:06
【问题描述】:

我有一个从 Excel 电子表格创建的 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();

【问题讨论】:

  • 不能导出为简单的 csv 文件或 xml 文件,然后导入到预先计算的 excel 文件中吗?
  • 你试过这种方法吗?转到标题为“这是为 List.List 移植的方法”codeproject.com/Tips/64127/… 的部分

标签: c# .net excel


【解决方案1】:

也许您可以尝试使用托管在 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

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

项目页面是here

导出示例(西班牙语)是here

它还启用了导入文件(西班牙语)here

【讨论】:

    【解决方案2】:
    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;
    }
    

    将您的列表转换为数据表

        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;
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      相关资源
      最近更新 更多