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#多线程的应用全面解析

    C#多线程的应用全面解析 多线程是现代计算机系统的重要特性之一,C#也是一门支持多线程编程的语言。本文将从以下几个方面对C#多线程进行全面解析,包括线程的创建和启动、线程同步、线程池和任务并行库。此外,还将提供两个实际应用场景的示例。 线程的创建和启动 在C#中,以下几种方式可以创建线程: 使用Thread类 “`csharp Thread t = new…

    C# 2023年5月15日
    00
  • C#程序中类数量对程序启动的影响详解

    针对“C#程序中类数量对程序启动的影响详解”这个主题,以下是一个完整攻略: 1. 背景介绍 在C#程序开发过程中,有时候会需要设计大型的类库,但是我们是否思考了这么多类数量在程序启动上会造成什么影响呢?这个主题正是想探讨这个问题。 2. 影响分析 类的数量对程序启动速度的影响是由以下几个方面组成的: JIT编译 资源文件嵌入 元数据加载 JIT编译 当我们第…

    C# 2023年6月7日
    00
  • C#生成DLL文件的方法

    C#是一种广泛使用的面向对象编程语言,典型的用途是在Windows操作系统上开发桌面应用程序。通过生成DLL文件,我们可以使C#程序与其他语言的程序进行无缝交互。以下是生成C# DLL文件的完整攻略: 第一步:创建新的C#类库项目 在Visual Studio中,选择“File” -> “New” -> “Project”,在“New Proje…

    C# 2023年6月1日
    00
  • C#泛型集合类型实现添加和遍历

    下面是一份详细的攻略,分别讲解了C#泛型集合类型的添加和遍历。 添加元素到集合 List泛型列表 List 是 C# 中常见的泛型类型之一,其中的元素是可以重复的,可以方便的进行元素添加和删除操作。 //创建一个string类型的List泛型列表 List<string> list = new List<string>(); //使用…

    C# 2023年6月6日
    00
  • C#中单例模式的三种写法示例

    下面我将详细讲解C#中单例模式的三种写法示例。 一、什么是单例模式? 在软件开发中,单例模式是指保证一个类仅有一个实例,并提供一个访问它的全局访问点。 在C#中,实现单例模式有多种写法,下面我将分别介绍三种常用的方法。 二、第一种写法:简单写法 下面是使用静态变量实现简单单例模式的代码: public sealed class Singleton { pri…

    C# 2023年6月7日
    00
  • 扩展 Entity Framework支持复杂的过滤条件(多个关键字模糊匹配)

    要扩展 Entity Framework 的过滤条件以支持复杂的过滤条件(如多个关键字的模糊匹配),需要用到 Lambda 表达式和 LINQ 功能。下面是完整的攻略: 1. 定义扩展方法 我们可以通过在静态类中定义扩展方法来扩展 Entity Framework 的过滤条件。这里我们定义一个名为 FilterByKeywords 的扩展方法: public…

    C# 2023年6月3日
    00
  • sqlserver利用存储过程去除重复行的sql语句

    sqlserver利用存储过程去除重复行的SQL语句攻略: 创建存储过程 首先需要在SQL Server中创建存储过程,以下是示例代码: CREATE PROCEDURE RemoveDuplicateRows AS BEGIN SET NOCOUNT ON; SELECT DISTINCT * INTO #TempTable FROM YourTableN…

    C# 2023年6月2日
    00
  • SpringBoot与velocity的结合的示例代码

    下面是关于“SpringBoot与velocity的结合的示例代码”的完整攻略及示例说明: 1. 环境准备 在开始之前,需要确保以下环境已经准备完整: JDK 1.8或以上 Maven SpringBoot Velocity 如果您还没安装或搭建好以上环境,请先进行安装和配置。 2. 引入依赖 在SpringBoot项目的pom.xml文件中,加入以下依赖:…

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