在上个系统中需要用到Excel整体导入的功能整体的核心思路如下:

1、首先将需要导入的Excel上传至服务器

2、为了避免文件名重复,重命名上传的Excel文件

3、将上传的Excel文件读入DataTable中

4、将DataTable读入数据库中

实现起来还是比较简单的,核心代码如下:

界面需要一个FileUpload控件和一个Button

界面代码:

usingSystem;

usingSystem.Data;

namespaceWebApplication1

{

publicpartialclassWebForm1 : System.Web.UI.Page

{

protectedvoidPage_Load(objectsender, EventArgs e)

{

}

protectedvoidbtnUpload_Click(objectsender, EventArgs e)

{

stringpath = Server.MapPath("~/upload/");

//根据日期时间重命名文件

stringfileName = DateTime.Now.ToString("yyyymmddhhMMss") + FileUpload1.FileName;

ExcelManager em =newExcelManager(path + fileName);

FileUpload1.PostedFile.SaveAs(path + fileName);//另存文件

DataTable dtTable = em.ExecuteGetDataTable(fileName);

em.WriteToDB("studentInfo", dtTable);//导入数据库

}

}

}

using System;

using System.Data;

namespace WebApplication1

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void btnUpload_Click(object sender, EventArgs e)

{

string path = Server.MapPath("~/upload/");

//根据日期时间重命名文件

string fileName = DateTime.Now.ToString("yyyymmddhhMMss") + FileUpload1.FileName;

ExcelManager em = new ExcelManager(path + fileName);

FileUpload1.PostedFile.SaveAs(path + fileName);//另存文件

DataTable dtTable = em.ExecuteGetDataTable(fileName);

em.WriteToDB("studentInfo", dtTable);//导入数据库

}

}

}

Excel导入数据库控制类

其中需要注意的是

1、连接Excel字符串中HDR的值表示是否有表头,YSE表示导入的EXCEL包括表头,NO反之。

2、IMEX的值有三个

当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 只能用来做“写入”用途。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 只能用来做“读取”用途。

当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 可同时支持“读取”与“写入”用途。

这里是EXCEL导入,对于EXCEL是读取操作,即IMEX=0。

usingSystem.Data.OleDb;

usingSystem.Data;

namespaceWebApplication1

{

///

/// excel导入数据库控制类

///

publicclassExcelManager

{

//定义连接

OleDbConnection oledbConn =null;

///

/// 构造函数,初始化连接,给连接赋上地址

///

///

publicExcelManager(stringfileUrl)

{

stringstrConn ="Provider=Microsoft.Jet.Oledb.4.0;"+"data source="+ fileUrl +";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'";

oledbConn =newOleDbConnection(strConn);

}

///

/// 连接Excel表的方法

///

///

publicOleDbConnection GetCon()

{

if(oledbConn.State == ConnectionState.Closed)

{

oledbConn.Open();

}

returnoledbConn;

}

///

/// 将上传的Excel数据导入到DataTable中

///

///

///

publicDataTable ExecuteGetDataTable(stringfileName)

{

DataSet ds =newDataSet();

OleDbDataAdapter oledbda =newOleDbDataAdapter("select * from[Sheet1$]", GetCon());

oledbda.Fill(ds, fileName);

//获取数据集中的第一个表

returnds.Tables[0];

}

///

/// 将加工好的DataTable导入到数据库中

///

/// 数据库中的目标表名称

/// 源表

///

publicboolWriteToDB(stringdestinationTableName, DataTable sourceTable)

{

boolflag =false;

SqlBulkCopyHelper bulkCopyHelper =newSqlBulkCopyHelper();

if(bulkCopyHelper.ExecuteBulkCopy(destinationTableName, sourceTable))

{

flag =true;

}

else

{

flag =false;

}

returnflag;

}

///

/// 上传文件到服务器的UpLoad文件夹

///

///

///

publicboolIsExcel(stringfileName)

{

boolflag =false;

//获得该文件的扩展名

stringfileExtension = System.IO.Path.GetExtension(fileName).ToLower();

//检查扩展名是否为xls

if(fileExtension.Equals(".xls"))

{

flag =true;

}

else

{

flag =false;

}

returnflag;

}

}

}

using System.Data.OleDb;

using System.Data;

namespace WebApplication1

{

///

/// excel导入数据库控制类

///

public class ExcelManager

{

//定义连接

OleDbConnection oledbConn = null;

///

/// 构造函数,初始化连接,给连接赋上地址

///

///

public ExcelManager(string fileUrl)

{

string strConn = "Provider=Microsoft.Jet.Oledb.4.0;" + "data source=" + fileUrl + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'";

oledbConn = new OleDbConnection(strConn);

}

///

/// 连接Excel表的方法

///

///

public OleDbConnection GetCon()

{

if (oledbConn.State == ConnectionState.Closed)

{

oledbConn.Open();

}

return oledbConn;

}

///

/// 将上传的Excel数据导入到DataTable中

///

///

///

public DataTable ExecuteGetDataTable(string fileName)

{

DataSet ds = new DataSet();

OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from[Sheet1$]", GetCon());

oledbda.Fill(ds, fileName);

//获取数据集中的第一个表

return ds.Tables[0];

}

///

/// 将加工好的DataTable导入到数据库中

///

/// 数据库中的目标表名称

/// 源表

///

public bool WriteToDB(string destinationTableName, DataTable sourceTable)

{

bool flag = false;

SqlBulkCopyHelper bulkCopyHelper = new SqlBulkCopyHelper();

if (bulkCopyHelper.ExecuteBulkCopy(destinationTableName, sourceTable))

{

flag = true;

}

else

{

flag = false;

}

return flag;

}

///

/// 上传文件到服务器的UpLoad文件夹

///

///

///

public bool IsExcel(string fileName)

{

bool flag = false;

//获得该文件的扩展名

string fileExtension = System.IO.Path.GetExtension(fileName).ToLower();

//检查扩展名是否为xls

if (fileExtension.Equals(".xls"))

{

flag = true;

}

else

{

flag = false;

}

return flag;

}

}

}批量导入数据助手类

usingSystem;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Data.SqlClient;

///

/// 批量导入数据助手类

///

publicclassSqlBulkCopyHelper

{

//获取配置文件中的数据库连接字符串

privatestringstrCon = ConfigurationManager.ConnectionStrings["connBasicInfo"].ConnectionString;

privateSqlConnection sqlCon;

///

/// 构造函数,初始化连接字符串

///

publicSqlBulkCopyHelper()

{

sqlCon =newSqlConnection(strCon);

}

///

/// 打开数据库连接

///

///

publicSqlConnection GetCon()

{

if(sqlCon .State ==ConnectionState .Closed )

{

sqlCon.Open();

}

returnsqlCon;

}

///

/// 将源数据表中的数据批量导入到目标表

///

/// 目标表

/// 源表

///

publicboolExecuteBulkCopy(stringtargetTableName, DataTable sourceTable)

{

boolflag =false;

//调用批量拷贝类

using(SqlBulkCopy bulkCopy =newSqlBulkCopy(GetCon()))

{

bulkCopy.DestinationTableName = targetTableName;

try

{

//将源表中的数据批量拷贝到目标表

bulkCopy.WriteToServer(sourceTable);

flag =true;

}

catch(Exception)

{

flag =false;

}

returnflag;

}

}

}

using System;

using System.Data;

using System.Configuration;

using System.Data.SqlClient;

///

/// 批量导入数据助手类

///

public class SqlBulkCopyHelper

{

//获取配置文件中的数据库连接字符串

private string strCon = ConfigurationManager.ConnectionStrings["connBasicInfo"].ConnectionString;

private SqlConnection sqlCon;

///

/// 构造函数,初始化连接字符串

///

public SqlBulkCopyHelper()

{

sqlCon = new SqlConnection(strCon);

}

///

/// 打开数据库连接

///

///

public SqlConnection GetCon()

{

if (sqlCon .State ==ConnectionState .Closed )

{

sqlCon.Open();

}

return sqlCon;

}

///

/// 将源数据表中的数据批量导入到目标表

///

/// 目标表

/// 源表

///

public bool ExecuteBulkCopy(string targetTableName, DataTable sourceTable)

{

bool flag = false;

//调用批量拷贝类

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GetCon()))

{

bulkCopy.DestinationTableName = targetTableName;

try

{

//将源表中的数据批量拷贝到目标表

bulkCopy.WriteToServer(sourceTable);

flag = true;

}

catch (Exception)

{

flag = false;

}

return flag;

}

}

}

c excel批量导入mysql数据库_Excel批量导入数据库相关推荐

  1. 批量 杀掉 mysql 连接_批量杀死MySQL连接的四种方法详解

    方法一 通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令.复制代码 代码如下:mysql> ...

  2. excel导入mysql 截断_Excel导入数据库时出现的文本截断问题解决方案

    问题 在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为: 忽略错误 导入SQLServer2008过程中,如果源数据和目标数据类型不匹配会导入失败, ...

  3. excel导入mysql代码_EXCEL导入Mysql方法

    在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总结出了以下几种方 ...

  4. excel单元格内容拆分_Excel批量合并相同内容的单元格

    因为我平常工作中整理数据会经常需要批量合并单元格,所以我各处学习,整理了如下批量合并相同内容单元格的方法,以下有WPS的应用截图,也有excel的应用截图,但原理是一样的,供大家参考. 在日常办公中经 ...

  5. 2005数据库导入mysql没有主键_MSSQL2005数据库导入导出+带主键、自动增量、关系图、表架构等...

    MSSQL2005数据库导入导出+带主键.自动增量.关系图.表架构等 关键词:mssql2005.导入导出 1.在本地安装Mssql Server 2005 2.接着安装SQLServer2005_X ...

  6. DG导入mysql依赖包_MySql导入导出数据库(含远程导入导出)

    1.先运行cmd,cd 到mysql安装目录中的bin文件夹 2.mysqldump -u root -p 数据库名 > 导出文件名.sql 其他情况下: 1.导出整个数据库 mysqldump ...

  7. pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)

    我想直观的查看数据库表之间的关系与中文注释,发现Navicat Premium下的表模型功能,并没有注释功能: 用起来不是很方便.所有想到了用PowerDesigner来逆向MYSQL中的表,并显示中 ...

  8. myeclipse怎么导入mysql驱动_myeclipse sql导入数据库驱动包

    如何配置struts+hibernate,基本使用方法 不少童鞋在自学SSH框架的时候,难在创建第一个项目,如何搭建好这些框架,很多书上只是给出了代码但是没有教如何使用,所以在本次博客中将会图文结合来 ...

  9. 2005数据库导入mysql没有主键_mysql数据库详解(续二)

    mysql数据库登陆问题解决汇总 首先需要说明一下,MYSQL数据库登陆的方式,通常就是本地登陆(localhost)和远程登陆,那么这里在深入地了解一部localhost和127.0.0.1的区别是 ...

最新文章

  1. HTML文件撰写的注意事项有哪些,CSS及HTML 常见误区和注意事项(一)
  2. PHP的Smarty较为完整的笔记
  3. 计算机体系结构-- 第一章4--计算机体系结构
  4. Masuit.Tools,一个免费的轮子
  5. 交换机是如何对数据包打标签去标签的_条形码软件如何在标签纸上套打可变条码...
  6. h0152. 故事计算题(计蒜客——西邮K题)解析
  7. python中字典的value可以为任意对象_手把手教你学Python之字典
  8. 想红想疯了?人民日报怒批女主播进教室摆拍:如此装束 成何体统
  9. java实现加权抽样_用Java替换加权采样
  10. Java事务管理之JDBC
  11. 关于电脑的基础知识_电脑基础知识:关于硬盘知识你有必要知道的几件事!
  12. 【安装SSH服务】ubuntu安装ssh以及开启root用户ssh登录
  13. ajax 与 php 简单聊天室
  14. 由浅入深学习android input系统(五) - input系统的启动
  15. 全阶滑模观测器程序_滑模观测器设计
  16. 解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated
  17. Android开发记录:视频提取音频
  18. Web项目之人力资源管理系统
  19. Codeforces Round #579 div3 E Boxers(思维)
  20. 抛家舍业的文思海辉,能否凤凰涅槃?

热门文章

  1. 爷青结?诺基亚贝尔实验室官宣转让Plan 9版权!
  2. OpenAI 将 k8s 扩展至 7500 个节点以支持机器学习
  3. 他曾一举击败英伟达,却因坚持研发背负骂名
  4. ​苹果或于明年9月发布电动汽车;10家头部平台紧急下架互联网存款产品;Go 1.16首个Beta版本发布|极客头条​...
  5. 员工一言不合就离职怎么办?用 Python 写了个员工流失预测模型
  6. TCP 半连接队列和全连接队列满了,怎么破?
  7. IDEA 社区版不支持 Tomcat?一招完美解决!
  8. 抗住 60 亿次攻击,起底阿里云安全的演进之路 | 问底中国 IT 技术演进
  9. 云原生与数据中台,企业数字化转型的“正确打开方式”
  10. Laravel 成为最佳 PHP 框架的 14 个理由!