Winform框架通用导入程序,支持Excel,xls/xlsx格式|C/S开发框架

目录
一、功能介绍
CSFramework.GenericImporter (Excel通用导入程序)是CSFrameworkV6旗舰版的通用功能之一,提供Excel两种格式的数据导入。
- xls : Microsoft Excel 97~2003 Files
- xlsx: Microsoft Excel 2007~2010 Files
IImporterSource 接口提供扩展,用户可实现导入其他文件或数据库的资料。
xls 文件连接字符串
C# 全选
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={_FileName};Extended Properties='Excel 8.0;HDR=YES;IMEX=1';Mode=ReadWrite;Persist Security Info=False;xlsx 文件连接字符串
C# 全选
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={_FileName};Extended Properties='Excel 12.0;HDR=YES;IMEX=1';Mode=ReadWrite;Persist Security Info=False;二、VS解决方案
核心库:CSFramework.GenericImporter

测试程序:Tester

三、开发环境
开发工具:VS2019
开发语言:C#
.NET版本:.NET Framework 4.5+
其他组件:DevExpress 17.2
四、Demo 开发手册
该Demo演示从Excel文件导入客户资料。
Tester 工程项目 引用 CSFramework.GenericImporter.dll
1. 建立数据源表结构模型
C# 全选
/// <summary>
/// 数据源表结构
/// </summary>
public class CustomerDataSourceModel
{
public string 客户编码 { get; set; }
public string 客户名称 { get; set; }
public string 英文名 { get; set; }
public string 联系人 { get; set; }
public string 电话号码 { get; set; }
public string 地址 { get; set; }
public string 开户银行 { get; set; }
public string 银行账号 { get; set; }
public string 备注 { get; set; }
}对应 Excel文件格式:

2. 实现导入逻辑
定义一个自定类,实现 IImporterTarget 抽象类,编写客户资料相关程序逻辑。
C# 全选
/// <summary>
/// 从Excel导入客户资料
/// </summary>
public class ImportCustomerFromExcel : IImporterTarget
{
bllCustomer _BLL;
List<tb_Customer> _List = new List<tb_Customer>();
List<String> _ExistsKeys = new List<string>();
public ImportCustomerFromExcel()
{
_BLL = new bllCustomer();
_ExistsKeys = _BLL.GetCustomerKeys();
this.TargetType = typeof(tb_Customer);
this.SourceType = typeof(CustomerDataSourceModel);
}
/// <summary>
/// 数据源映射关系
/// </summary>
/// <returns></returns>
public override List<FieldMapping> GetMapping()
{
List<FieldMapping> list = new List<FieldMapping>();
list.Add(new FieldMapping("客户编码", nameof(tb_Customer.CustomerCode), typeof(String)));
list.Add(new FieldMapping("客户名称", nameof(tb_Customer.NativeName), typeof(String)));
list.Add(new FieldMapping("英文名", nameof(tb_Customer.EnglishName), typeof(String)));
list.Add(new FieldMapping("联系人", nameof(tb_Customer.ContactPerson), typeof(String)));
list.Add(new FieldMapping("电话号码", nameof(tb_Customer.Tel), typeof(String)));
list.Add(new FieldMapping("地址", nameof(tb_Customer.Address1), typeof(String)));
list.Add(new FieldMapping("开户银行", nameof(tb_Customer.Bank), typeof(String)));
list.Add(new FieldMapping("银行账号", nameof(tb_Customer.BankAccount), typeof(String)));
list.Add(new FieldMapping("备注", nameof(tb_Customer.Remark), typeof(String)));
return list;
}
//
// 省略其他代码....
//
}3. 调用Demo
C# 全选
private void btnImportCustomer_Click(object sender, EventArgs e)
{
IImporterTarget target = new ImportCustomerFromExcel();
frmImportExcel.ExecuteImporter(target, (list) =>
{
//显示导入结果
gridControl1.DataSource = list;
});
}开发者注意事项
开发者注意:
- 创建数据源表结构模型,如:CustomerDataSourceModel
- 创建目的表结构模型,如:tb_Customer
- 实现导入逻辑,继承 IImporterTarget 抽象类
- 重写GetMapping方法
- 若要检查数据是否重复,需要从BLL层获取数据库存在的键值用于导入时比较
- 重写PostImportedData方法
- 实现BLL层提交数据方法
程序截图 & 测试报告
1. 打开Excel文件

2. 选择资料表,预览数据

3. 开始导入

4. 导入完成,显示操作报告

5. 模拟导入存在的资料
C# 全选
public List<string> GetCustomerKeys()
{
//
//从数据库获取现有的客户编码
//
var list = new List<string>();
list.Add("csv6customer"); //模拟数据库存在客户编码
return list;
}
DevExpress版本低于v17.x或升级更高版本的用户请注意
打开 CSFramework.GenericImporter项目下Form1,在工具箱搜索 grid,拖放一个GridControl 组件到 界面

此时会自动添加DevExpress引用,删除 v17.2引用即可。

若需要源码请联系作者:C/S框架网/喜鹊软件


参考文档:
C#使用SqlBulkCopy快速导入Excel文件(xls/xlsx)-C/S开发框架
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网
Winform开发框架 - 类库同时支持.NETFramework以及.NET Core
支持换肤 | 界面图片切换 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库)
Winform界面自适应快速开发框架(C#+Dev+三层架构+多数据库支持)
Winform开发框架代码生成器 - 支持生成输入组件自适应窗体(LayoutControl)
Winform快速开发框架-表格支持用户自定义样式(自由配置列栏目)
C# OleDbConnection读取加装Excel2003(.xls),Excel2007(.xlsx)文件
Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能)
CSFrameworkV6旗舰版 | 导入导出Excel文件数据开发教程|C/S开发框架
Winform框架通用导入Excel文件源码下载
开发数据查询窗体 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
Winform企业级WCF快速开发框架平台(C/S架构+WCF+DevExpress+SQL多数据库)
C#使用SqlBulkCopy快速导入Excel文件(xls/xlsx)-C/S开发框架
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网
Winform开发框架 - 类库同时支持.NETFramework以及.NET Core
支持换肤 | 界面图片切换 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库)
Winform界面自适应快速开发框架(C#+Dev+三层架构+多数据库支持)
Winform开发框架代码生成器 - 支持生成输入组件自适应窗体(LayoutControl)
Winform快速开发框架-表格支持用户自定义样式(自由配置列栏目)
C# OleDbConnection读取加装Excel2003(.xls),Excel2007(.xlsx)文件
Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能)
CSFrameworkV6旗舰版 | 导入导出Excel文件数据开发教程|C/S开发框架
Winform框架通用导入Excel文件源码下载
开发数据查询窗体 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
Winform企业级WCF快速开发框架平台(C/S架构+WCF+DevExpress+SQL多数据库)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
