使用C#导出Excel数据并保存多种格式的完整示例

本文主要是介绍使用C#导出Excel数据并保存多种格式的完整示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文...

引言

在现代企业信息化管理中,Excel 已经成为最常用的数据存储和分析工具。从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开 Excel。然而,在实际业务中,我们往往需要将系统中的数据动态生成 Excel 文件,而不是手动录入。手动操作不仅效率低,而且容易出错,对于需要批量生成报表、进行定期统计或对外发布数据的场景尤其不适用。

为了解决这一问题,C# 开发者可以借助 Free Spire.XLS for .NET,通过代码快速创建 Excel 文件、填充数据、应用样式,并将文件导出为多种格式,包括 XLSX、CSV、PDF,甚至直接保存到内存流以便网络传输。本文将通过一个完整示例,详细演示如何在 C# 中实现 Excel 数据导出,让你的报表生成工作既高效又专业。

1. 安装 Spire.XLS

在开始编码前,需要通过 NuGet 安装 Spire.XLS:

Install-Package FreeSpire.XLS

安装完成后,即可在 C# 项目中引用命名空间:

using Spire.Xls;
using System.Data;
using System.IO;

2. 创建工作簿和填充数据

下面示例演示如何创建一个 Excel 文件,并将员工信息填充到工作表中:

// 创建工作簿
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";

// 创建 DataTable 并添加列
DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");

// 添加示例数据
table.Rows.Add("E101", "John Miller", "Finance", "2020-02-15", "7500");
table.Rows.Add("E102", "Sarah Brown", "HR", "201javascript9-07-10", "6800");
table.Rows.Add("E103", "Michael Davis", "IT", "2021-01-22", "8200");
table.Rows.Add("E104", "Laura Wilson", "Marketing", "2018-11-18", "7100");
table.Rows.Add("E105", "Daniel Lee", "Sales", "2022-06-12", "6900");

// 将 DatChina编程aTable 插入工作表android,从第一行第一列开始,并保留列名
sheet.InsertDataTable(table, true, 1, 1);

// 应用内置样式
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading2; // 标题行
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent2; // 数据行
}

// 自动调整列宽和行高
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

说明

  • InsertDataTable 可以直接将 DataTable 内容写入工作表,同时支持保留列名。
  • 内置样式(BuiltInStyles)可以快速美化表格,例如标题行加粗、数据行配色。
  • AutoFitColumns 和 AutoFitRows 可自动调整列宽和行高,使表格美观。

3. 保存为不同格式

Spire.XLS 支持多种保存格式,常见的包括:

  • XLS/XLSX:传统 Excel 文件
  • CSV:逗号分隔文本文件
  • PDF:用于打印或发布
  • html / SVG网页或矢量图格式
  • XLSB/XLSM:二进制或带宏 Excel 文件
  • MemoryStream:将文件写入内存流,用于网络传输或其他二次处理

示例代码:

// 保存为 Excel 2016 格式
workbook.SaveToFile("EmployeeData.xlsx", FileFormat.Version2016);

// 保存为 CSV
workbook.SaveToFile("EmployeeData.csv", FileFormat.CSV);

// 保存为 PDF
workbook.SaveToFile("EmployeeData.pdf", FileFormat.PDF);

// 保存到 MemoryStream
using (MemoryStream ms = new MemoryStream())
{
    workbook.SaveToStream(ms, FileFormat.Version2016);
    // 这里可以将 ms 写入数据库、发送 HTTP 响应等
}

说明

  • FileFormat 枚举支持多达 25 种格式,例如 Xlsb2007ODSHTMLMarkdown 等。
  • MemoryStream China编程保存方式适合 Web 应用场景,可以直接将文件返回给客户端而不写入磁盘。

4. 效果展示

生成的 Excel 文件:

使用C#导出Excel数据并保存多种格式的完整示例

表头加粗,数据行有配色,并且列宽自适应。

5. 扩展说明

  • 为什么要使用代码导出?对于批量生成报表或动态数据,手动操作效率低且易出错,使用代码生成可以自动化、可复用。
  • MemoryStream 场景

    • Web API 返回文件下载
    • 将 Excel 存入数据库或云存储
    • 在内存中生成并进一步处理,例如加密或压缩
  • 多格式支持Spire.XLS 的 FileFormat 枚举几乎覆盖了主流的 Excel、PDF、网页、模板等格式,可以满足多种业务需求。

6. 总结

本文演示了如何使用 Spire.XLS for .NET

  • 在 C# 中创建 Excel 文件并填充数据
  • 应用内置样式和自动调整行列
  • 将文件保存为多种格式(XLSX、CSV、PDF、HTML 等)
  • 使用 MemoryStream 保存用于网络传输或二次处理

通过掌握 WorkbookWorksheetInsertDataTable 和 SaveToFile/SaveToStream,你可以轻松实现 Excel 数据导出和格式转换,提升企业应用开发效率。

以上就是使用C#导出Excel数WDiXCYvvbz据并保存多种格式的完整示例的详细内容,更多关于C#导出Excel数据并保存格式的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于使用C#导出Excel数据并保存多种格式的完整示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156250

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位