c语言编程笔录

您现在的位置是:首页 > C语言 > C#

C#

C# 导出Excel的6种简单方法实现

李雅惠 2023-08-09C#
前言在C#中实现Excel导出是很常见的需求。在本文中,我将介绍6种简单的方法来实现这个功能。这些方法包括使用OfficeInterop库、使用NPOI库、使用EPPlus库、使用O

前言

在C#中实现Excel导出是很常见的需求。在本文中,我将介绍6种简单的方法来实现这个功能。这些方法包括使用Office Interop库、使用NPOI库、使用EPPlus库、使用OpenXML SDK、使用ClosedXML库以及使用Spire.XLS库。每种方法都有其优缺点,我们将逐一介绍并分析这些方法的使用场景、优势和限制。

方法一:使用Office Interop库

Office Interop库是使用COM技术与Microsoft Office应用程序进行交互的一种方式。通过引用Office Interop库,我们可以直接使用Excel对象模型来创建、修改和保存Excel文件。

using Excel = Microsoft.Office.Interop.Excel;

// 创建Excel应用程序对象
Excel.Application excelApp = new Excel.Application();

// 创建Excel工作簿
Excel.Workbook workbook = excelApp.Workbooks.Add();

// 创建Excel工作表
Excel.Worksheet worksheet = workbook.Worksheets.Add();
worksheet.Name = "Sheet1";

// 设置单元格的值
worksheet.Cells[1, 1] = "Hello";
worksheet.Cells[1, 2] = "World";

// 保存为Excel文件
workbook.SaveAs("output.xlsx");

// 关闭工作簿和应用程序对象
workbook.Close();
excelApp.Quit();

使用Office Interop库的优势是可以直接操作Office应用程序的对象模型,功能强大。但是需要安装相关的Office程序,并且在服务器环境下可能会出现一些兼容性问题。

方法二:使用NPOI库

NPOI是一个开源的.NET库,专门用于处理Office文件。它提供了丰富的API用于创建、读取和修改Excel文件。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

// 创建工作簿
IWorkbook workbook = new XSSFWorkbook();

// 创建工作表
ISheet sheet = workbook.CreateSheet("Sheet1");

// 创建行并设置单元格的值
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("Hello");
row.CreateCell(1).SetCellValue("World");

// 保存为Excel文件
using (FileStream fs = new FileStream("output.xlsx", FileMode.Create, FileAccess.Write))
{
    workbook.Write(fs);
}

NPOI库具有良好的兼容性和高性能,可以在服务器上进行Excel文件操作,并且支持导出更多的文件格式(如doc和ppt)。但是由于其庞大的API,使用起来可能会比较复杂。

方法三:使用EPPlus库

EPPlus是一个开源的.NET库,专门用于处理Office Open XML文件格式(如.xlsx)。它提供了一组简单易用的API用于创建、读取和修改Excel文件。

using OfficeOpenXml;

// 创建ExcelPackage对象
using (ExcelPackage package = new ExcelPackage())
{
    // 创建工作簿
    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");

    // 设置单元格的值
    worksheet.Cells[1, 1].Value = "Hello";
    worksheet.Cells[1, 2].Value = "World";

    // 保存为Excel文件
    package.SaveAs(new FileInfo("output.xlsx"));
}

EPPlus库使用简单,支持大量的Excel文件操作,并且具有较好的性能。但是由于其只支持Open XML文件格式,因此在处理较旧的Excel文件格式时可能会有限制。

方法四:使用OpenXML SDK

OpenXML SDK是由Microsoft开发的一个开源库,用于处理Office Open XML文件格式(如.xlsx)。它提供了一组底层的API用于创建、读取和修改Excel文件。

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

// 创建Excel文件
using (SpreadsheetDocument document = SpreadsheetDocument.Create("output.xlsx", SpreadsheetDocumentType.Workbook))
{
    // 创建WorkbookPart
    WorkbookPart workbookPart = document.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();

    // 创建WorksheetPart
    WorksheetPart worksheetPart = workbookPart.AddNewPart();
    worksheetPart.Worksheet = new Worksheet(new SheetData());

    // 创建SheetPart
    Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
    Sheet sheet = new Sheet()
    {
        Id = workbookPart.GetIdOfPart(worksheetPart),
        SheetId = 1,
        Name = "Sheet1"
    };
    sheets.Append(sheet);

    // 设置单元格的值
    SheetData sheetData = worksheetPart.Worksheet.GetFirstChild();
    Row row = new Row();
    row.Append(new Cell() { CellValue = new CellValue("Hello"), DataType = CellValues.String });
    row.Append(new Cell() { CellValue = new CellValue("World"), DataType = CellValues.String });
    sheetData.Append(row);

    // 保存Excel文件
    workbookPart.Workbook.Save();
}

OpenXML SDK提供了对Excel文件底层结构的直接访问,灵活性较高。但是由于其较为繁琐的API和复杂的结构,使用起来相对较复杂。

方法五:使用ClosedXML库

ClosedXML是一个开源的.NET库,专门用于处理Excel文件。它提供了一组简单易用的API用于创建、读取和修改Excel文件。

using ClosedXML.Excel;

// 创建工作簿
XLWorkbook workbook = new XLWorkbook();
IXLWorksheet worksheet = workbook.Worksheets.Add("Sheet1");

// 设置单元格的值
worksheet.Cell(1, 1).Value = "Hello";
worksheet.Cell(1, 2).Value = "World";

// 保存为Excel文件
workbook.SaveAs("output.xlsx");

ClosedXML库使用简单,支持丰富的Excel文件操作,并且具有较好的性能。但是由于其底层使用了OpenXML SDK,因此在处理较大的Excel文件时可能会有一些性能问题。

方法六:使用Spire.XLS库

Spire.XLS是一个商业的.NET库,非常强大而且易于使用。它提供了一组丰富的API用于创建、读取和修改Excel文件,并且支持多种Excel文件格式。

using Spire.Xls;

// 创建工作簿
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];

// 设置单元格的值
worksheet.Range["A1"].Text = "Hello";
worksheet.Range["B1"].Text = "World";

// 保存为Excel文件
workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013);

Spire.XLS具有友好的API和强大的功能,支持多种Excel文件格式,并且提供了各种高级特性(如图表、数据透视表等)。但是由于其是商业库,需要购买授权才能使用。

总结

通过本文我们介绍了使用C#实现Excel导出的六种简单方法:使用Office Interop库、使用NPOI库、使用EPPlus库、使用OpenXML SDK、使用ClosedXML库以及使用Spire.XLS库。每种方法都有其优缺点,根据具体的需求和开发环境选择合适的方法。希望本文能对您有所帮助。

文章评论