使用C#实现Excel与DataTable互转的方案

 更新时间:2025年08月25日 09:10:55   作者:LSTM97  
在企业级开发中,Excel文件与DataTable(数据表)的互转是报表生成、数据迁移等场景的核心需求,传统方案如OleDb或Office Interop存在内存泄漏、性能低下等问题,且依赖本地Office组件,所以本文给大家介绍了使用C#实现Excel与DataTable互转的方案,需要的朋友可以参考下

引言

在企业级开发中,Excel文件与DataTable(数据表)的互转是报表生成、数据迁移等场景的核心需求。传统方案如OleDb或Office Interop存在内存泄漏、性能低下等问题,且依赖本地Office组件。而 Spire.XLS for .NET 作为企业级文档操作库,具备零依赖、跨平台、全格式支持等特性,本文将详解双向互转的实现方案。

实现方案详解

方法一:Excel→DataTable

实现步骤

  1. 加载Excel文件:使用Workbook类加载文件
  2. 选择工作表:指定目标Sheet索引或名称
  3. 转换逻辑:通过ExportDataTable()方法提取数据
using Spire.Xls;
using System.Data;

try 
{
    // 初始化工作簿
    Workbook workbook = new Workbook();
    workbook.LoadFromFile("Input.xlsx");

    // 获取首个工作表
    Worksheet sheet = workbook.Worksheets[0];
    
    // 转换配置:首行包含列名
    DataTable dt = sheet.ExportDataTable(
        sheet.FirstRow,      // 起始行
        sheet.FirstColumn,   // 起始列
        sheet.LastRow,       // 结束行
        sheet.LastColumn,    // 结束列
        true                // hasColumnNames
    );
}
catch (Exception ex)
{
    Console.WriteLine($"转换失败:{ex.Message}");
}

核心参数

  • HasColumnNames:控制是否将首行作为DataTable列名
  • 边界计算:动态获取LastRow可兼容动态数据区域

方法二:DataTable→Excel

实现步骤

  1. 创建工作簿:初始化Workbook与工作表
  2. 样式配置:设置标题行字体、背景色
  3. 数据填充:通过InsertDataTable()批量写入
using Spire.Xls;
using System.Data;

DataTable dt = GetDataSource(); // 获取数据源

try 
{
    Workbook workbook = new Workbook();
    Worksheet sheet = workbook.Worksheets[0];
    
    // 设置标题样式
    CellStyle style = workbook.Styles.Add("HeaderStyle");
    style.Font.IsBold = true;
    style.Color = Color.LightGray;
    
    // 写入数据(从A1开始)
    sheet.InsertDataTable(dt, true, 1, 1);
    
    // 应用样式到标题行
    sheet.GetRange(1, 1, 1, dt.Columns.Count).CellStyle = style;
    
    // 自适应列宽
    sheet.AllocatedRange.AutoFitColumns();
    
    // 保存文件
    workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2016);
}
catch (Exception ex)
{
    Console.WriteLine($"导出失败:{ex.Message}");
}

性能优化

  • AutoFitColumns() :避免手动计算列宽
  • 批量写入InsertDataTable相比逐行写入效率提升80%

注意事项

  • 大文件处理:建议分批次处理超过10万行的数据集,避免内存溢出
  • 格式兼容性:导出时指定ExcelVersion参数可适配不同版本Office

结语

通过 Workbook.LoadFromFile() 与 Worksheet.ExportDataTable() 的组合,开发者可快速实现双向数据转换。Spire.XLS凭借其对.NET Core的深度支持,在微服务、云端渲染等场景表现卓越。建议通过NuGet获取最新稳定版(Install-Package Spire.XLS)开启高效开发。

以上就是使用C#实现Excel与DataTable互转的方案的详细内容,更多关于C# Excel与DataTable互转的资料请关注脚本之家其它相关文章!

相关文章

  • C# 多线程读取注册表,加载至TreeView

    C# 多线程读取注册表,加载至TreeView

    C#下多线程读取注册表,加载至TreeView的实现代码。
    2009-09-09
  • C#版Windows服务安装卸载小工具

    C#版Windows服务安装卸载小工具

    这篇文章主要为大家推荐了一款C#版Windows服务安装卸载小工具,小巧灵活的控制台程序,希望大家喜欢,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C#通过HttpClient+Polly实现自动重试与超时策略的操作指南

    C#通过HttpClient+Polly实现自动重试与超时策略的操作指南

    在微服务与API高度依赖的时代,网络请求的 可靠性 变得至关重要,网络波动、临时超时或第三方API不稳定,常常会导致应用抛出异常,为了解决这些问题,本文给大家介绍了在C#中如何通过HttpClient + Polly实现自动重试与超时策略,需要的朋友可以参考下
    2025-11-11
  • C#区分中英文按照指定长度截取字符串的方法

    C#区分中英文按照指定长度截取字符串的方法

    这篇文章主要介绍了C#区分中英文按照指定长度截取字符串的方法,涉及C#操作字符串的正则匹配与截取等常用操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C#使用SqlSugarClient进行数据访问并实现了统一的批量依赖注入(示例代码)

    C#使用SqlSugarClient进行数据访问并实现了统一的批量依赖注入(示例代码)

    M为 BaseDto 请用C# 给出一个案例,支持不同表对应不同的业务逻辑层,然后不同仓储实例,不同表的业务,都实现统一的批量依赖注入,下面通过示例给大家演示如何使用SqlSugarClient进行数据访问,并实现了统一的批量依赖注入,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • c#项目实现发布到服务器全过程

    c#项目实现发布到服务器全过程

    这篇文章主要介绍了c#项目实现发布到服务器全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • C#实现线性搜索算法

    C#实现线性搜索算法

    线性搜索算法是一种基本的搜索算法,通过逐个比较元素来查找目标元素,学习线性搜索算法有助于培养算法思维和编程能力,对于初学者来说是一种重要的算法训练,感兴趣的可以了解一下
    2024-10-10
  • C#字符串与正则表达式的图文详解

    C#字符串与正则表达式的图文详解

    正则表达式是个非常好的工具,它的作用主要是用简单的有规则的表达式来检索和匹配一段字符串,这篇文章主要给大家介绍了关于C#字符串与正则表达式的相关资料,需要的朋友可以参考下
    2022-09-09
  • C#简单读取、改变文件的创建、修改及访问时间的方法

    C#简单读取、改变文件的创建、修改及访问时间的方法

    这篇文章主要介绍了C#简单读取、改变文件的创建、修改及访问时间的方法,涉及C#文件类SetCreationTime、SetLastWriteTime及SetLastAccessTime的相关使用技巧,需要的朋友可以参考下
    2015-07-07
  • C#线程委托实现原理及方法解析

    C#线程委托实现原理及方法解析

    这篇文章主要介绍了C#线程委托实现原理及方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论