C#导出Excel的示例详解

C#导出Excel的示例详解

介绍

在实际的项目中,我们经常需要将数据导出到Excel表格中,以方便查阅和管理。C#作为一门强大的编程语言,在导出Excel方面也有非常不错的表现。本篇文章将详细讲解如何使用C#导出Excel表格。

准备工作

我们需要使用C#自带的OpenXML库来实现Excel的导出。在使用前,需要进行一些准备工作:

  1. 引入DocumentFormat.OpenXML库:

右击项目文件,在弹出的菜单中选择管理NuGet包,搜索DocumentFormat.OpenXML库并安装。

  1. 添加命名空间:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

示例一

下面是一个简单的示例:将一个数组写入到Excel表格的第一行。

public static void WriteToExcel(string filePath)
{
    //创建Excel文档
    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);

    //创建工作簿
    WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();

    //创建工作表
    WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet(new SheetData());

    //创建工作表名称
    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<SheetData>();
    Row row = new Row();
    int[] data = new int[] { 1, 2, 3, 4, 5 };
    for (int i = 0; i < data.Length; i++)
    {
        Cell cell = new Cell();
        cell.DataType = CellValues.Number;
        cell.CellValue = new CellValue(data[i].ToString());
        row.AppendChild(cell);
    }
    sheetData.AppendChild(row);

    //保存Excel文档
    workbookPart.Workbook.Save();
    spreadsheetDocument.Close();
}

示例二

下面是另一个示例:将一个数据表写入到Excel表格中。

public static void WriteDataTableToExcel(DataTable dataTable, string filePath)
{
    //创建Excel文档
    SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);

    //创建工作簿
    WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();

    //创建工作表
    WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet(new SheetData());

    //创建工作表名称
    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<SheetData>();
    Row headerRow = new Row();
    foreach (DataColumn column in dataTable.Columns)
    {
        Cell cell = new Cell();
        cell.DataType = CellValues.String;
        cell.CellValue = new CellValue(column.ColumnName);
        headerRow.AppendChild(cell);
    }
    sheetData.AppendChild(headerRow);

    //写入数据
    foreach (DataRow row in dataTable.Rows)
    {
        Row dataRow = new Row();
        foreach (DataColumn column in dataTable.Columns)
        {
            Cell cell = new Cell();
            cell.DataType = GetDataType(column.DataType);
            cell.CellValue = new CellValue(row[column].ToString());
            dataRow.AppendChild(cell);
        }
        sheetData.AppendChild(dataRow);
    }

    //保存Excel文档
    workbookPart.Workbook.Save();
    spreadsheetDocument.Close();
}

//获取数据类型
private static CellValues GetDataType(Type type)
{
    if (type == typeof(DateTime))
    {
        return CellValues.Date;
    }
    else if (type == typeof(Boolean))
    {
        return CellValues.Boolean;
    }
    else if (type == typeof(double))
    {
        return CellValues.Number;
    }
    else
    {
        return CellValues.String;
    }
}

总结

以上两个示例均为使用C#导出Excel表格的基本操作。需要注意的是,在实际的项目中,我们往往需要处理更加复杂的数据,这时需要对代码进行相应的扩展。但相信通过对以上两个示例的学习,读者可以轻松应对其他许多导出Excel的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#导出Excel的示例详解 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 利用C#编写一个Windows服务程序的方法详解

    Title: 利用C#编写一个Windows服务程序的方法详解 介绍 Windows服务是在后台运行的程序,可以在计算机启动时自动启动,不需要用户登陆即可运行。本文将详细讲解如何利用C#编写一个Windows服务程序。 步骤 1.创建Windows服务项目 打开Microsoft Visual Studio,选择“新建项目”,在左侧菜单中选择“Visual.…

    C# 2023年6月1日
    00
  • c# 使用Task实现非阻塞式的I/O操作

    下面是详细讲解“c# 使用Task实现非阻塞式的I/O操作”的完整攻略。 简介 在进行I/O操作时,如果我们在单线程中进行了阻塞式I/O操作,那么在I/O等待时间内,该线程无法执行其他操作,导致I/O操作效率极低。因此,我们需要使用非阻塞的I/O操作,使得I/O操作的等待时间内能够执行其他操作,提高操作效率。 Task是.Net Framework和.Net…

    C# 2023年6月3日
    00
  • Net core中使用System.Drawing对上传的图片流进行压缩(示例代码)

    在.NET Core中,使用System.Drawing对上传的图片流进行压缩是一项常见的任务,它可以帮助您减小图片的大小并提高应用程序的性能。在本攻略中,我们将详细讲解如何使用System.Drawing对上传的图片流进行压缩,并提供两个示例说明。 步骤一:安装NuGet包 要使用System.Drawing对上传的图片流进行压缩,您需要安装以下NuGet…

    C# 2023年5月17日
    00
  • 详解ASP.NET Core 处理 404 Not Found

    详解ASP.NET Core处理404 Not Found攻略 在ASP.NET Core应用程序中,当用户请求一个不存在的资源时,服务器将返回404 Not Found错误。本攻略将介绍如何在ASP.NET Core应用程序中处理404 Not Found错误。 步骤 以下是处理404 Not Found错误的步骤: 添加UseStatusCodePage…

    C# 2023年5月17日
    00
  • 详细分析c# 运算符重载

    详细分析C#运算符重载 C#运算符重载是一种在类定义中定义特定运算符的方式。通过对运算符进行重载,我们可以为自定义类型定义自定义算术和逻辑行为。本文将介绍如何实现C#运算符重载,并提供两个实际的示例。 1、什么是C#运算符重载 在C#中,一些运算符如 +、-、*、/、< 等都是具有预定义行为的。当我们对 int、float、double、string等…

    C# 2023年6月7日
    00
  • 使用PowerShell .Net获取电脑中的UUID

    使用PowerShell .Net获取电脑中的UUID 在Windows系统中,每台计算机都有唯一的标识符UUID(Universally Unique Identifier),可以用于识别计算机。使用PowerShell .Net可以轻松获取计算机的UUID。 步骤 打开PowerShell环境。在开始菜单中搜索“PowerShell”并打开。 在Powe…

    C# 2023年6月3日
    00
  • ASP.Net Core3.0中使用JWT认证的实现

    ASP.NET Core 3.0中使用JWT认证的实现攻略如下: 安装必要的NuGet包 在开始之前,需要安装以下NuGet包: Microsoft.AspNetCore.Authentication.JwtBearer System.IdentityModel.Tokens.Jwt 您可以使用以下命令在命令行中安装这些NuGet包: dotnet add …

    C# 2023年5月16日
    00
  • C#拼图游戏编写代码(2)

    下面详细讲解如何编写C#拼图游戏的代码,具体分为以下步骤: 1. 创建WinForm窗口 代码中首先需要创建一个WinForm窗口,作为整个游戏的主界面。 public partial class FormMain : Form { public FormMain() { InitializeComponent(); } } 2. 添加拼图图片并进行切割 接…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部