c excel批量导入mysql数据库_Excel批量导入数据库
在上个系统中需要用到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批量导入数据库相关推荐
- 批量 杀掉 mysql 连接_批量杀死MySQL连接的四种方法详解
方法一 通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令.复制代码 代码如下:mysql> ...
- excel导入mysql 截断_Excel导入数据库时出现的文本截断问题解决方案
问题 在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为: 忽略错误 导入SQLServer2008过程中,如果源数据和目标数据类型不匹配会导入失败, ...
- excel导入mysql代码_EXCEL导入Mysql方法
在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总结出了以下几种方 ...
- excel单元格内容拆分_Excel批量合并相同内容的单元格
因为我平常工作中整理数据会经常需要批量合并单元格,所以我各处学习,整理了如下批量合并相同内容单元格的方法,以下有WPS的应用截图,也有excel的应用截图,但原理是一样的,供大家参考. 在日常办公中经 ...
- 2005数据库导入mysql没有主键_MSSQL2005数据库导入导出+带主键、自动增量、关系图、表架构等...
MSSQL2005数据库导入导出+带主键.自动增量.关系图.表架构等 关键词:mssql2005.导入导出 1.在本地安装Mssql Server 2005 2.接着安装SQLServer2005_X ...
- DG导入mysql依赖包_MySql导入导出数据库(含远程导入导出)
1.先运行cmd,cd 到mysql安装目录中的bin文件夹 2.mysqldump -u root -p 数据库名 > 导出文件名.sql 其他情况下: 1.导出整个数据库 mysqldump ...
- pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)
我想直观的查看数据库表之间的关系与中文注释,发现Navicat Premium下的表模型功能,并没有注释功能: 用起来不是很方便.所有想到了用PowerDesigner来逆向MYSQL中的表,并显示中 ...
- myeclipse怎么导入mysql驱动_myeclipse sql导入数据库驱动包
如何配置struts+hibernate,基本使用方法 不少童鞋在自学SSH框架的时候,难在创建第一个项目,如何搭建好这些框架,很多书上只是给出了代码但是没有教如何使用,所以在本次博客中将会图文结合来 ...
- 2005数据库导入mysql没有主键_mysql数据库详解(续二)
mysql数据库登陆问题解决汇总 首先需要说明一下,MYSQL数据库登陆的方式,通常就是本地登陆(localhost)和远程登陆,那么这里在深入地了解一部localhost和127.0.0.1的区别是 ...
最新文章
- HTML文件撰写的注意事项有哪些,CSS及HTML 常见误区和注意事项(一)
- PHP的Smarty较为完整的笔记
- 计算机体系结构-- 第一章4--计算机体系结构
- Masuit.Tools,一个免费的轮子
- 交换机是如何对数据包打标签去标签的_条形码软件如何在标签纸上套打可变条码...
- h0152. 故事计算题(计蒜客——西邮K题)解析
- python中字典的value可以为任意对象_手把手教你学Python之字典
- 想红想疯了?人民日报怒批女主播进教室摆拍:如此装束 成何体统
- java实现加权抽样_用Java替换加权采样
- Java事务管理之JDBC
- 关于电脑的基础知识_电脑基础知识:关于硬盘知识你有必要知道的几件事!
- 【安装SSH服务】ubuntu安装ssh以及开启root用户ssh登录
- ajax 与 php 简单聊天室
- 由浅入深学习android input系统(五) - input系统的启动
- 全阶滑模观测器程序_滑模观测器设计
- 解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated
- Android开发记录:视频提取音频
- Web项目之人力资源管理系统
- Codeforces Round #579 div3 E Boxers(思维)
- 抛家舍业的文思海辉,能否凤凰涅槃?
热门文章
- 爷青结?诺基亚贝尔实验室官宣转让Plan 9版权!
- OpenAI 将 k8s 扩展至 7500 个节点以支持机器学习
- 他曾一举击败英伟达,却因坚持研发背负骂名
- ​苹果或于明年9月发布电动汽车;10家头部平台紧急下架互联网存款产品;Go 1.16首个Beta版本发布|极客头条​...
- 员工一言不合就离职怎么办?用 Python 写了个员工流失预测模型
- TCP 半连接队列和全连接队列满了,怎么破?
- IDEA 社区版不支持 Tomcat?一招完美解决!
- 抗住 60 亿次攻击,起底阿里云安全的演进之路 | 问底中国 IT 技术演进
- 云原生与数据中台,企业数字化转型的“正确打开方式”
- Laravel 成为最佳 PHP 框架的 14 个理由!