简体   繁体   English

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

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

I have a C# list that I created from an Excel spreadsheet, and I want to export it to Excel. 我有一个从Excel电子表格创建的C#列表,我想将其导出到Excel。 How can I achieve that task? 我怎样才能完成这项任务? This is just a console project. 这只是一个控制台项目。 I do not intend to display the data in a .Net application. 我不打算在.Net应用程序中显示数据。 I just need the spread sheet. 我只需要电子表格。

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. Right-click the project and manage nuget packages. 右键单击项目并管理nuget包。
  2. Add the ClosedXML nuget package 添加ClosedXML nuget包
  3. Add using ClosedXML.Excel; using ClosedXML.Excel;添加using ClosedXML.Excel; to the top of the class file. 到类文件的顶部。
  4. Add the 'ToExcelFile' method to your class. 将“ToExcelFile”方法添加到您的班级。
  5. Convert your list to a DataTable. 将列表转换为DataTable。

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

Convert your list to a DataTable 将列表转换为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;

    }

maybe you could try use Infodinamica.Framework.Expotable package, hosted in Nuget. 也许你可以尝试使用Nuget中托管的Infodinamica.Framework.Expotable包。

With it, you could do something like this 有了它,你可以做这样的事情

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

You can install with nuget command: 您可以使用nuget命令安装:

Install-Package Infodinamica.Framework.Exportable

The only problem, documentation is in spanish. 唯一的问题,文件是西班牙语。

The project page is here 项目页面在这里

Export example (in spanish) is here 出口示例(西班牙语)在这里

It also enable import files (in spanish) here 它还可以在此处启用导入文件(西班牙语)

如何从列表中的 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电子表格*对象引用未设置为对象的实例 - C# export datatable to excel spreadsheet *object reference not set to an instance of an object 如何在 Excel 电子表格上从 C# 更改工作表名称 - How do I Change the Sheet Name from C# on an Excel Spreadsheet 如何从列表中的 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)? 导出到跨平台 C# .NET 应用程序中的 Excel 电子表格 - Export to Excel spreadsheet in Cross Platform C# .NET app 将锯齿状数组从 C# 导出到文本文件或 excel 电子表格 - Export jagged array from C# into text file or excel spreadsheet 从C#导出时,如何在Excel / SpreadSheet中将列DataType指定为字符串,数字Datetime - How can we specify the columns DataType to string, number Datetime in Excel/SpreadSheet when Export from c# 如何将数据导出到C#中的CSV文件中,以确保Excel可以使用它? - How do I export data to a CSV file in C# making sure that Excel can work with it? 如何快速阅读c#中的Excel电子表格 - How to read an Excel spreadsheet in c# quickly 如何使用C#在Windows CE中将SQL Server Compact表导出到Excel? - How do I export an SQL Server Compact table to an Excel in Windows CE with C#? 如何将C#excel导出中的复选框替换为1和0? - How do I replace the checkboxes in my C# excel export to ones and zeros?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM