如何使用C#将数据导出到Excel文件

在开发过程中,经常需要将数据导出到Excel文件中。但是,许多开发者在尝试使用C#和VB.NET编写导出代码时遇到了困难。更糟糕的是,他们可能会遇到一些建议将数据写入到以.xls扩展名结尾的逗号分隔文件的文章。今天,将向展示如何使用C# "导出到Excel"类,可以将它添加到C# WinForms / WPF / ASP.NET应用程序中,只需要一行代码。

根据数据存储在DataSet、DataTable还是List中,只需要调用这三个函数中的一个,并告诉它们想要写入的Excel文件名。

public static bool CreateExcelDocument<T>(List<T> list, string ExcelFilename) public static bool CreateExcelDocument(DataTable dt, string ExcelFilename) public static bool CreateExcelDocument(DataSet ds, string ExcelFilename)

这是一个简单的例子。创建一个DataSet,填充一些数据(只需添加自己的CreateSampleData函数),然后调用CreateExcelFile.CreateExcelDocument函数,传递DataSet和文件名:

// Step 1: 创建一个DataSet,并放入一些示例数据 DataSet ds = CreateSampleData(); // Step 2: 创建Excel .xlsx文件 try { CreateExcelFile.CreateExcelDocument(ds, "C:\\Sample.xlsx"); } catch (Exception ex) { MessageBox.Show("无法创建Excel文件。\r\n异常: " + ex.Message); return; }

只需要做这些。CreateExcelDocument函数将为创建一个"真正的"Excel文件。例如,如果创建了一个包含三个DataTable的DataSet,名为Drivers、Vehicles和Vehicle Owners,那么Excel文件将如下所示。该类将为每个DataTable创建一个工作表,每个工作表将包含该DataTable的数据。

这个C#类的完整源代码可以在这里免费下载(点击左侧面板中的"浏览代码"链接),或者可以从博客MikesKnowledgeBase下载这个完整的演示,以及该类的VB.NET版本。

要将这个库添加到应用程序中,需要添加两个免费的MicrosoftOpenXMLSDK文件:

  • DocumentFormat.OpenXml.dll:来自免费的Microsoft Open XML SDK库
  • WindowsBase.dll:来自Microsoft .NET Framework库

将这两个DLL添加到项目的引用部分,并记得将它们设置为"复制本地"。然后,只需下载CreateExcelFile.cs文件(通过CodeProject左侧面板中的"浏览代码"链接),并将其添加到应用程序中。

就是这样。无论数据存储在List、DataTable还是DataSet中,都可以使用那一行代码将其导出到一个"真正的"Office 2007 Excel .xlsx文件中。而且,由于它是使用OpenXML库创建的,可以在没有安装Excel的机器上运行这段代码。

对于ASP.NET开发人员,添加了三个额外的函数。

public static bool CreateExcelDocument<T>(List<T> list, string filename, System.Web.HttpResponse Response) public static bool CreateExcelDocument(DataTable dt, string filename, System.Web.HttpResponse Response) public static bool CreateExcelDocument(DataSet ds, string filename, System.Web.HttpResponse Response)

而不是在临时目录中创建Excel文件,然后需要加载文件并将其输出到网页的HttpResponse中,可以直接让库写入HttpResponse。

默认情况下,此功能是禁用的(以防止非ASP.NET开发人员构建问题)。要启用这三个函数,需要进行两个更改。

  1. 取消注释CreateExcelFile.cs代码的第一行,使其现在读取:
  2. #define INCLUDE_WEB_FUNCTIONS
  3. 现在需要添加对System.Web .NET库的引用:

完成这两个步骤后,CreateExcelFile库就可以使用了。例如,在这个例子中,ASP.NETC#代码有一个Employee记录列表,存储在List中。在网页上添加了一个"导出到Excel"按钮,当用户点击它时,只需要简单地调用CreateExcelFile类。

// 在这个例子中,定义了一个Employee对象的列表。<br />class Employee; List<Employee> listOfEmployees = new List<Employee>(); ... // 以下ASP.Net代码在点击"导出到Excel"按钮时运行。 protected void btnExportToExcel_Click(object sender, EventArgs e) { // 这很简单... CreateExcelFile.CreateExcelDocument(listOfEmployees, "Employees.xlsx", Response); }

就是这样。一个真正的Excel文件,只需要一行代码。

展望未来,会发现这个库非常适合一个工作——将简单的数据写入Excel文件。没有尝试添加任何类来添加格式化、颜色、透视表或其他任何东西。然而,这个类是一个很好的开始(无需为第三方软件付费来为创建Excel文件),如果想进一步发展,很快就会发现Google可以轻松地为找到额外的源代码来添加到这个上面。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485