C#导出Excel的示例详解

yizhihongxing

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#泛型的实现过程中,我们需要更深入地理解泛型约束的概念。泛型约束可以对泛型类型参数进行属性和方法的限制,以确保类型参数在方法体中被正确地执行。本篇文章将根据具体的代码示例,介绍泛型约束的相关知识。 泛型约束的语法 泛型定义时,可以在定义类型参数的时候添加约束标记,采用where关键字进行表达,语法格式如下: class Som…

    C# 2023年6月7日
    00
  • C#中volatile与lock用法

    下面详细讲解一下C#中volatile与lock关键字的用法。 volatile关键字的用法 简介 在多线程编程中,由于CPU对内存的读写可能存在缓存,当多个线程同时操作同一个变量时,就可能出现线程安全问题。而volatile关键字则可以保证被修饰的变量在多线程操作中的可见性和顺序性,即保证多线程程序中的变量修改都能在所有线程中可见。 用法 volatile…

    C# 2023年6月7日
    00
  • WinForm调用百度地图接口用法示例

    下面是关于“WinForm调用百度地图接口用法示例”的完整攻略。 什么是百度地图接口? 百度地图接口是百度提供的用于开发者在自己的应用中集成百度地图功能的一组API,通过它可以满足不同应用场景的地图需求,包括地图显示、POI搜索、路径规划、定位等功能。 WinForm调用百度地图接口用法示例 步骤1:申请百度地图开发者账号 在开始使用百度地图接口之前,需要先…

    C# 2023年6月6日
    00
  • C#中foreach原理以及模拟的实现

    C#中foreach原理以及模拟的实现 foreach是C#中常用的循环结构之一,也是一种高效而方便的迭代方式。本文将详细讲解foreach的原理以及如何模拟其行为。 foreach的原理 foreach循环类似于for循环,但是更加简洁明了,其语法如下: foreach (var item in collection) { // 处理item } 其中co…

    C# 2023年6月6日
    00
  • C# 字符串的连接(实例讲解)

    C# 字符串的连接(实例讲解) C# 中,字符串连接可以通过加号 “+” 或者 String.Concat 方法实现。在本文中,我们将介绍如何使用这些方法来连接 C# 字符串,并提供一些实例讲解。 使用加号 “+” 加号 “+” 是最简单的字符串连接方法。通过在两个字符串之间添加加号即可将它们连接在一起,得到一个新的字符串。例如: string str1 =…

    C# 2023年6月7日
    00
  • C# 创建、部署和调用WebService简单示例

    下面我会详细讲解“C# 创建、部署和调用WebService简单示例”的完整攻略。 什么是Web Service? Web Service即 Web 服务,它是一种跨平台、跨编程语言实现的远程调用技术。通过Web Service,我们可以让不同的系统之间互相通信和交互。在Web Service中,数据以XML格式传输,使用简单易懂的HTTP协议通信。 如何创…

    C# 2023年6月3日
    00
  • C#中倒序输出字符串的方法示例

    下面是关于C#中倒序输出字符串的方法示例的完整攻略: 1. 使用Array.Reverse方法 下面是一个使用Array.Reverse方法的示例代码: string input = "Hello World"; char[] inputArray = input.ToCharArray(); Array.Reverse(inputArr…

    C# 2023年6月7日
    00
  • Unity3d怎么从物体向前方发射一条射线?

    Unity3D是一个游戏引擎,支持开发2D和3D游戏。在游戏开发中,常常需要使用射线来进行碰撞检测、瞄准、摄像机跟随等操作。本文将详细讲解在Unity3D中如何从物体向前方发射一条射线。 1. 获取射线起点和方向 使用射线需要明确射线的起点和方向,Unity3D提供了Transform组件的position属性来获取起点,可以使用Transform组件的fo…

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