繁体   English   中英

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

[英]How do I export a C# object list to an excel spreadsheet?

我有一个从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();
  1. 右键单击项目并管理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;

    }

也许你可以尝试使用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

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

项目页面在这里

出口示例(西班牙语)在这里

它还可以在此处启用导入文件(西班牙语)

如何从列表中的 C# 导出数据<object>或 IEnumerable 到 Excel (MS OpenXml)?<div id="text_translate"><p> 我正在尝试使用 Microsoft 的 Open XML 库将List&lt;dynamic&gt;或IEnumerable导出到 Excel 文件。</p><p> 库: <a href="https://github.com/OfficeDev/Open-XML-SDK" rel="nofollow noreferrer">https://github.com/OfficeDev/Open-XML-SDK</a></p><p> 类似请求的示例: <a href="https://www.codeproject.com/Articles/692121/Csharp-Export-data-to-Excel-using-OpenXML-librarie" rel="nofollow noreferrer">https://www.codeproject.com/Articles/692121/Csharp-Export-data-to-Excel-using-OpenXML-librarie</a></p><p> 上面的例子工作得很好,但之间有很多代码(到目前为止工作很整洁,但我正在寻找优化)</p><p> 但是这个库的文档没有扩展(或者没有很多例子),我看到的例子是关于如何将数据导出到 Excel 它使用DataTable或Dataset ; 因此,他们进行从List到DataTable的对话以导出DataTable 。 对于其他库更容易解决的问题,这似乎相当复杂。</p><p> 因此,如果有人有一个关于如何快速和通用导出的示例,我们将不胜感激。</p></div></object>

[英]How to export data from C# from List<object> or IEnumerable to Excel (MS OpenXml)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C#将数据表导出到Excel电子表格*对象引用未设置为对象的实例 如何在 Excel 电子表格上从 C# 更改工作表名称 如何从列表中的 C# 导出数据<object>或 IEnumerable 到 Excel (MS OpenXml)?<div id="text_translate"><p> 我正在尝试使用 Microsoft 的 Open XML 库将List&lt;dynamic&gt;或IEnumerable导出到 Excel 文件。</p><p> 库: <a href="https://github.com/OfficeDev/Open-XML-SDK" rel="nofollow noreferrer">https://github.com/OfficeDev/Open-XML-SDK</a></p><p> 类似请求的示例: <a href="https://www.codeproject.com/Articles/692121/Csharp-Export-data-to-Excel-using-OpenXML-librarie" rel="nofollow noreferrer">https://www.codeproject.com/Articles/692121/Csharp-Export-data-to-Excel-using-OpenXML-librarie</a></p><p> 上面的例子工作得很好,但之间有很多代码(到目前为止工作很整洁,但我正在寻找优化)</p><p> 但是这个库的文档没有扩展(或者没有很多例子),我看到的例子是关于如何将数据导出到 Excel 它使用DataTable或Dataset ; 因此,他们进行从List到DataTable的对话以导出DataTable 。 对于其他库更容易解决的问题,这似乎相当复杂。</p><p> 因此,如果有人有一个关于如何快速和通用导出的示例,我们将不胜感激。</p></div></object> 导出到跨平台 C# .NET 应用程序中的 Excel 电子表格 将锯齿状数组从 C# 导出到文本文件或 excel 电子表格 从C#导出时,如何在Excel / SpreadSheet中将列DataType指定为字符串,数字Datetime 如何将数据导出到C#中的CSV文件中,以确保Excel可以使用它? 如何快速阅读c#中的Excel电子表格 如何使用C#在Windows CE中将SQL Server Compact表导出到Excel? 如何将C#excel导出中的复选框替换为1和0?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM