原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网
原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网C/S框架网基于Winform开发框架所有版本提供通用导入Excel功能界面(frmImportExcel),解决导入不同表结构的Excel文件到数据库,为软件系统提供强大的技术支持。我们设计的ERP系统或MES系统,有不同的用户需求,需要系统支持导入用户自定义格式的Excel数据,若没有通用的导入界面,对于研发和维护存在很大的挑战。
参考Winform开发框架通用导入Excel功能界面:
1. 应用场景界面提供【Excel导入】按钮

2. Winform开发框架通用导入Excel功能界面

操作步骤:
【1】选择Excel文件,建议Office 2007格式(*.xls文件)
【2】点击【测试连接】
【3】选择一个Sheet表格(Sheet)
【4】点击【预览数据】,检查表格内的数据
【5】点击【开始导入】

按钮事件:
C# Code:
private void btnExcelImport_Click(object sender, EventArgs e)
{
//导入产品三层结构Excel数据
Import3LevelProductXLS target = new Import3LevelProductXLS();
//打开通用导入界面
frmImportExcel.ExecuteImporter(target, target.GetMapping());
if (!String.IsNullOrWhiteSpace(target.ErrorInfo))
{
Msg.Warning(target.ErrorInfo);//导入失败提示
}
else
{
//导入成功则刷新数据
if (target.LastImportCounter > 0)
btnQuery_Click(btnQuery, new EventArgs());
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
private void btnExcelImport_Click(object sender, EventArgs e)
{
//导入产品三层结构Excel数据
Import3LevelProductXLS target = new Import3LevelProductXLS();
//打开通用导入界面
frmImportExcel.ExecuteImporter(target, target.GetMapping());
if (!String.IsNullOrWhiteSpace(target.ErrorInfo))
{
Msg.Warning(target.ErrorInfo);//导入失败提示
}
else
{
//导入成功则刷新数据
if (target.LastImportCounter > 0)
btnQuery_Click(btnQuery, new EventArgs());
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
导入产品三层结构Excel数据-Import3LevelProductXLS类实现:
C# Code:
/// <summary>
/// 导入产品三层结构Excel数据
/// </summary>
public class Import3LevelProductXLS : IImporterTarget
{
private bllProduct _BLL;
private string _BatchNo;
public Import3LevelProductXLS()
{
_ReportTitle = "导入产成品";
_BLL = new bllProduct();
_DataTarget = _BLL.QueryTmpImport("-");
}
public override List<FieldMapping> GetMapping()
{
List<FieldMapping> list = new List<FieldMapping>();
list.Add(new FieldMapping("分类", sys_tmp_ImportProduct.分类));
list.Add(new FieldMapping("部套编码", sys_tmp_ImportProduct.部套编码));
list.Add(new FieldMapping("部套序号", sys_tmp_ImportProduct.部套序号));
list.Add(new FieldMapping("转序件序号", sys_tmp_ImportProduct.转序件序号));
list.Add(new FieldMapping("描述", sys_tmp_ImportProduct.描述));
list.Add(new FieldMapping("数量", sys_tmp_ImportProduct.数量));
list.Add(new FieldMapping("工时代码", sys_tmp_ImportProduct.工时代码));
list.Add(new FieldMapping("定额工时", sys_tmp_ImportProduct.定额工时));
list.Add(new FieldMapping("生产周期", sys_tmp_ImportProduct.生产周期));
list.Add(new FieldMapping("偏置期", sys_tmp_ImportProduct.偏置期));
list.Add(new FieldMapping("物类", sys_tmp_ImportProduct.物类));
list.Add(new FieldMapping("联动", sys_tmp_ImportProduct.联动));
list.Add(new FieldMapping("产品编码", sys_tmp_ImportProduct.产品编码));
list.Add(new FieldMapping("备注", sys_tmp_ImportProduct.备注));
list.Add(new FieldMapping("班组工时", sys_tmp_ImportProduct.班组工时));
list.Add(new FieldMapping("员工代码", sys_tmp_ImportProduct.员工代码));
list.Add(new FieldMapping("产品型号", sys_tmp_ImportProduct.产品型号));
return list;
}
public override void ClearData()
{
//导入资料前是否先清除目标表
//_BLL.DeleteAll();
}
protected override void BeginImport(DataTable dataSource)
{
_DataSource = dataSource;
_BatchNo = Globals.NewRowIDTime();
AddReport(false, _ReportTitle, "开始导入数据到临时表。", _BatchNo);
}
protected override void EndImport(int success, int failed)
{
AddReport(false, _ReportTitle, "导入到临时表结束。", _BatchNo);
if (success > 0)
{
AddReport(false, _ReportTitle, "开始导入正式表...", _BatchNo);
int a; int b; int c; string err;
bool ok = _BLL.ImportByTmpTable(_BatchNo, out a, out b, out c, out err);
this.LastImportCounter = a + b + c;
this.LastImportFailed = 0;
this.ErrorInfo = err;
if (!String.IsNullOrEmpty(err))
AddReport(true, _ReportTitle, err, _BatchNo);
AddReport(false, _ReportTitle, "导入到正式表结束。", _BatchNo);
AddReport(false, _ReportTitle, string.Format("导入成功记录数:{0}", this.LastImportCounter), _BatchNo);
}
}
/// <summary>
/// 导入一条记录
/// </summary>
/// <param name="drTarge"></param>
/// <returns></returns>
protected override bool PostImportedData(DataRow drTarge, out string errMsg)
{
errMsg = "";
try
{
//创建用于保存的临时表
DataTable dtSave = _DataTarget.Clone();
DataRow tmp = dtSave.Rows.Add(drTarge.ItemArray);
tmp[sys_tmp_ImportProduct.BatchNo] = _BatchNo;
tmp[sys_tmp_ImportProduct.联动] = ConvertEx.ToInt(tmp[sys_tmp_ImportProduct.联动]);
//提交一条记录
//建议使用存储过程,或一次提交多条记录更新(优化速度)
return bllBaseDataDict.Update(dtSave, typeof(sys_tmp_ImportProduct));
}
catch (Exception ex)
{
errMsg = ex.Message;
return false;
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// <summary>
/// 导入产品三层结构Excel数据
/// </summary>
public class Import3LevelProductXLS : IImporterTarget
{
private bllProduct _BLL;
private string _BatchNo;
public Import3LevelProductXLS()
{
_ReportTitle = "导入产成品";
_BLL = new bllProduct();
_DataTarget = _BLL.QueryTmpImport("-");
}
public override List<FieldMapping> GetMapping()
{
List<FieldMapping> list = new List<FieldMapping>();
list.Add(new FieldMapping("分类", sys_tmp_ImportProduct.分类));
list.Add(new FieldMapping("部套编码", sys_tmp_ImportProduct.部套编码));
list.Add(new FieldMapping("部套序号", sys_tmp_ImportProduct.部套序号));
list.Add(new FieldMapping("转序件序号", sys_tmp_ImportProduct.转序件序号));
list.Add(new FieldMapping("描述", sys_tmp_ImportProduct.描述));
list.Add(new FieldMapping("数量", sys_tmp_ImportProduct.数量));
list.Add(new FieldMapping("工时代码", sys_tmp_ImportProduct.工时代码));
list.Add(new FieldMapping("定额工时", sys_tmp_ImportProduct.定额工时));
list.Add(new FieldMapping("生产周期", sys_tmp_ImportProduct.生产周期));
list.Add(new FieldMapping("偏置期", sys_tmp_ImportProduct.偏置期));
list.Add(new FieldMapping("物类", sys_tmp_ImportProduct.物类));
list.Add(new FieldMapping("联动", sys_tmp_ImportProduct.联动));
list.Add(new FieldMapping("产品编码", sys_tmp_ImportProduct.产品编码));
list.Add(new FieldMapping("备注", sys_tmp_ImportProduct.备注));
list.Add(new FieldMapping("班组工时", sys_tmp_ImportProduct.班组工时));
list.Add(new FieldMapping("员工代码", sys_tmp_ImportProduct.员工代码));
list.Add(new FieldMapping("产品型号", sys_tmp_ImportProduct.产品型号));
return list;
}
public override void ClearData()
{
//导入资料前是否先清除目标表
//_BLL.DeleteAll();
}
protected override void BeginImport(DataTable dataSource)
{
_DataSource = dataSource;
_BatchNo = Globals.NewRowIDTime();
AddReport(false, _ReportTitle, "开始导入数据到临时表。", _BatchNo);
}
protected override void EndImport(int success, int failed)
{
AddReport(false, _ReportTitle, "导入到临时表结束。", _BatchNo);
if (success > 0)
{
AddReport(false, _ReportTitle, "开始导入正式表...", _BatchNo);
int a; int b; int c; string err;
bool ok = _BLL.ImportByTmpTable(_BatchNo, out a, out b, out c, out err);
this.LastImportCounter = a + b + c;
this.LastImportFailed = 0;
this.ErrorInfo = err;
if (!String.IsNullOrEmpty(err))
AddReport(true, _ReportTitle, err, _BatchNo);
AddReport(false, _ReportTitle, "导入到正式表结束。", _BatchNo);
AddReport(false, _ReportTitle, string.Format("导入成功记录数:{0}", this.LastImportCounter), _BatchNo);
}
}
/// <summary>
/// 导入一条记录
/// </summary>
/// <param name="drTarge"></param>
/// <returns></returns>
protected override bool PostImportedData(DataRow drTarge, out string errMsg)
{
errMsg = "";
try
{
//创建用于保存的临时表
DataTable dtSave = _DataTarget.Clone();
DataRow tmp = dtSave.Rows.Add(drTarge.ItemArray);
tmp[sys_tmp_ImportProduct.BatchNo] = _BatchNo;
tmp[sys_tmp_ImportProduct.联动] = ConvertEx.ToInt(tmp[sys_tmp_ImportProduct.联动]);
//提交一条记录
//建议使用存储过程,或一次提交多条记录更新(优化速度)
return bllBaseDataDict.Update(dtSave, typeof(sys_tmp_ImportProduct));
}
catch (Exception ex)
{
errMsg = ex.Message;
return false;
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761

参考文档:
Winform框架通用导入Excel文件源码下载
CSFrameworkV6旗舰版 | 导入导出Excel文件数据开发教程|C/S开发框架
C# .NET8使用NPOI导出数据到Excel文件
CSFrameworkV6-导出Excel模版、导入数据设计
Winform框架通用导入程序,支持Excel,xls/xlsx格式|C/S开发框架
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
C#使用SqlBulkCopy快速导入Excel文件(xls/xlsx)-C/S开发框架
OLEDB创建DbConnection连接Excel文件报错:未在本地计算机上注册ACE.OLEDB
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
C# Excel xls文件导入程序Excel数据库通用类XlsFileDB
C#读取Excel文件提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
C# OleDbConnection读取加装Excel2003(.xls),Excel2007(.xlsx)文件
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
《资料表维护》功能界面(对应系统库sys_BusinessTables 表)的作用是什么?
CSFramework开发框架标准版成功案例-凹印制版ERP系统|C/S框架网
Winform界面的功能按钮同等权限控制|C/S框架网
Winform框架通用导入Excel文件源码下载
CSFrameworkV6旗舰版 | 导入导出Excel文件数据开发教程|C/S开发框架
C# .NET8使用NPOI导出数据到Excel文件
CSFrameworkV6-导出Excel模版、导入数据设计
Winform框架通用导入程序,支持Excel,xls/xlsx格式|C/S开发框架
TMS-物流运输管理系统《系统详细设计说明书》docx下载(原创文档)
C#使用SqlBulkCopy快速导入Excel文件(xls/xlsx)-C/S开发框架
OLEDB创建DbConnection连接Excel文件报错:未在本地计算机上注册ACE.OLEDB
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
C# Excel xls文件导入程序Excel数据库通用类XlsFileDB
C#读取Excel文件提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
C# OleDbConnection读取加装Excel2003(.xls),Excel2007(.xlsx)文件
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品
《资料表维护》功能界面(对应系统库sys_BusinessTables 表)的作用是什么?
CSFramework开发框架标准版成功案例-凹印制版ERP系统|C/S框架网
Winform界面的功能按钮同等权限控制|C/S框架网
其它资料:
什么是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内容管理系统 |
在线客服

