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日

相关文章

  • winform实现可拖动的自定义Label控件

    下面是实现winform可拖动自定义Label控件的攻略。 准备工作 新建winform项目,打开Visual Studio。 添加一个类库项目,用于编写自定义控件。 在类库项目中添加Winform命名空间,引用该命名空间中的控件。 编写自定义控件 在类库项目中新建一个类,继承自Label控件。 重写OnMouseDown、OnMouseMove、OnMou…

    C# 2023年6月1日
    00
  • winform开发使用通用多线程基类分享(以队列形式)

    在WinForm开发中,多线程是一个非常重要的话题。为了方便开发者使用多线程,我们可以使用通用多线程基类来实现多线程操作。本文将介绍如何使用通用多线程基类来实现多线程操作,并提供两个示例程序。 通用多线程基类 通用多线程基类是一个抽象类,它提供了一个通用的多线程框架,可以方便地实现多线程操作。通用多线程基类的主要特点如下: 支持队列形式的多线程操作。 支持多…

    C# 2023年5月15日
    00
  • 一次.net core异步线程设置超时时间的实战记录

    一次.NET Core异步线程设置超时时间的实战记录 在.NET Core应用程序中,异步线程是非常常见的。但是,如果异步线程执行时间过长,可能会导致应用程序性能下降。为了避免这种情况,我们可以设置异步线程的超时时间。在本攻略中,我们将介绍如何在.NET Core应用程序中设置异步线程的超时时间。 步骤一:创建.NET Core应用程序 首先,需要创建一个.…

    C# 2023年5月17日
    00
  • C#使用三层架构开发Winform的详细案例

    下面我会为你详细讲解使用C#三层架构开发Winform的完整攻略。 什么是三层架构 三层架构是一种常见的软件架构模式,将软件应用划分为三个不同的部分:表示层、业务逻辑层和数据访问层。这三层分别负责不同的功能,并通过一定的规则进行交互。 表示层:用户与应用程序进行交互的接口。在Windows应用程序中,表示层一般指Winform或WPF界面。 业务逻辑层:应用…

    C# 2023年5月31日
    00
  • Win11 KB5012643造成 .Net 应用程序崩溃怎么办

    最近有用户反映,在安装了Windows 11 KB5012643更新后,运行.NET应用程序时会出现崩溃的情况。本文将提供解决方案,帮助用户解决这个问题。 问题描述 在安装了Windows 11 KB5012643更新后,运行.NET应用程序时会出现崩溃的情况。具体表现为,应用程序会在启动时崩溃,或者在使用某些功能时崩溃。 解决方案 方法一:卸载KB5012…

    C# 2023年5月15日
    00
  • C# String.Join()方法: 连接一个数组中的元素,用指定的分隔符隔开

    String.Join()方法是C#中提供的一个字符串处理方法,可用于将一个一维数组中的元素通过指定的分隔符进行连接,并返回一个新的字符串。使用String.Join()方法可以很方便地将数组中的元素拼接到一起,以便进行后续操作,例如输出、存储等。 该方法的使用格式如下: string joinedString = String.Join(separator…

    C# 2023年4月19日
    00
  • php版微信公众平台之微信网页登陆授权示例

    下面是“PHP版微信公众平台之微信网页登录授权示例”的详细攻略。 1. 获取微信公众平台的AppID和AppSecret 在使用微信公众平台的功能之前,需要先申请并获取相应的AppID和AppSecret,你可以通过微信公众平台-开发-基本设置获取。 2. 配置网页授权回调域名 在公众号开发者中心-网页授权获取用户基本信息中配置授权回调链接域名。 3. 搭建…

    C# 2023年5月31日
    00
  • C#学习进阶Hello World的17种写法代码分享

    《C#学习进阶HelloWorld的17种写法代码分享》是一篇介绍C#编程语言的入门级教程,主要通过展示“HelloWorld”程序的各种写法,介绍C#中的基本语法和常用功能。下面是该攻略的详细分析: 一、前置知识 在开始学习本篇攻略之前,读者需要先具备以下基础知识: 熟练使用C#的基本语法 熟悉C#的控制流程(if、switch、for、while等) 熟…

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