小工具知识网

当前位置: 首页 > 行业知识 > C#实现Excel合并单元格数据导入数据集

行业知识

C#实现Excel合并单元格数据导入数据集

2026-11-01 14:30:48 来源:互联网转载

���录

功能需求

Excel与DataSet的映射关系

范例运行环境

Excel DCOM 配置

设计实现

组件库引入

​方法设计

返回值 

参数设计

打开数据源并计算Sheets

拆分合并的单元格

创建DataTable

将单元格数据写入DataTable

总结


功能需求

将Excel里的worksheet表格导入到DataSet里,是项目应用里常用的一种操作。一般情况下,worksheet是一个标准的二维数组,如下图:

我们可以效仿 MS SQL SERVER 的一些基本导入选项,如首行是否包含数据,要导入哪个Sheet?还是遍历Sheets?

实际的情况,客户经常会提供一些合并单元格的Excel表格,如下图中的“所在部门名称”列:

再畅想一下,假设有跨列的情况如下:

解决导入,一种方法,是让客户进行单元格拆分或技术服务人员进行拆分后再导入。另一种就是我们要继续完善应用,处理实现合并单元格的自动化处理。

Excel与DataSet的映射关系

下图是 Excel 与 DataSet 的映射关系图:

1、Excel应用的Workbook对象与 DataSet 同为容器对象

2、Worksheets和Tables均代表各自的表集合

3、Worksheet与Table进行对应,产生和导入实际的数据

范例运行环境

操作系统: Windows Server 2019 DataCenter

操作系统上安装 Office Excel 2016

.net版本: .netFramework4.7.1 或以上

开发工具:VS2019  C#

Excel DCOM 配置

请参考我的文章《C# 读取Word表格到DataSet》有对Office DCOM详细配置介绍,这里不再赘述,Excel的对应配置名称如下图所示:

  

设计实现

组件库引入

方法设计

设计  object[] ExcelAsDataSet(string _filename,bool hastitle,string startaddress,string endaddress) 方法

返回值 

方法返回object数组,共包括两个object对象,如果成功转化则 object[0] 存储 DataSet对象,否则为 null。如果不成功则 object[1] 存储string 错误信息对象,可根据object[1].ToString()!="" 来判断是否转化成功。

参数设计
  1. string _filename:Excel 数据源文件路径
  2. bool hastitle: 是否包含标题,如果设置为true,则表示首行数据为列名称定义
  3. string startaddress:可指定有效的起始单元格地址,不设置则默认为“A1”(即第一个单元格)
  4. string endaddress:可指定有效的截止单元格地址,不设置则默认为最后一个有值单元格(即XlCellType.xlCellTypeLastCell 枚举) 

    通过3、4参数的定义,可以定义出有效的导入矩形区域。

打开数据源并计算Sheets

object[] rv=new object[2];rv[0]=null;rv[1]="";//创建一个名为ExcelApp的组件对象//ExcelApplication excel = new ExcelApplication();            Excel.Application excel = new Excel.Application();excel.DisplayAlerts=false;excel.AskToUpdateLinks=false;Excel.Workbook xb=excel.Workbooks.Add(_filename);//获取活动的 worksheet和 excel sheet的个数,准备遍历sheetsWorksheet worksheet = (Worksheet) excel.ActiveSheet;sheetCount=excel.Sheets.Count;  intstartSheetIndex=1;intendSheetIndex=sheetCount;DataSet ds=new DataSet();//遍历sheets            for (int currentIndex = startSheetIndex; currentIndex 

上一篇:揭秘Bittorrent下载秘籍,轻松掌握高效下载技巧!

下一篇:service服务器怎么装?