Excel文件数据保存到SQL中
1.获取DataTable
- /// <summary>
- /// 查询Excel文件中的数据
- /// </summary>
- /// <param name="strPath">文件路径</param>
- /// <param name="sheetName">工作表名</param>
- /// <returns>DataTable</returns>
- public DataTable getExcel(string strPath,string sheetName)
- {
- string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + strPath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
//连接串, HDR=yes 表示excel第一行是标题行,反之表示第一行不是标题行- OleDbConnection cnnxls = new OleDbConnection(mystring);
- cnnxls.Open();
- OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [" + sheetName + "]", cnnxls);//查询工作表中的数据
- DataSet ds = new DataSet();
- myDa.Fill(ds, "[" + sheetName + "]");
- cnnxls.Close();
- DataTable dt = ds.Tables[];
- return dt;
- }
2.点击按钮函数,将数据存入数据库
- /// <summary>
- /// 把Excel中的数据保存到sql数据库中
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void btnSave_Click(object sender, EventArgs e)
- {
- if (LaValue.Text.Length >)
- {
- Helper.ExcelHelper eh = new Helper.ExcelHelper();//公共方法类对象,封装Excel操作的方法
- DataTable dt = eh.getExcel(LaValue.Text, DropDownList1.Text.ToString());//得到Datatable
- DataRow[] dr = dt.Select();//得到
- int rowsnum = dt.Rows.Count;//表中数据行数
- List<String> lstMsg = new List<string>();//保存失败信息
- if (rowsnum == )
- {
- Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "alert('Excel表为空表,无数据!');", true);
- }
- else
- {
- String error = "";
- for (int i = ; i < dr.Length; i++)//循环插入数据
- {
- // excel列名不能变
- string C_OraName = dr[i]["CompanyName"].ToString();
- string C_Town = dr[i]["Town"].ToString();
- string C_Trding = dr[i]["Trading"].ToString();
- string C_PostCode = dr[i]["PostCode"].ToString();
- string C_Phone = dr[i]["Phone"].ToString();
- if (String.IsNullOrEmpty(C_OraName))
- {
- error += "公司名不能为空 ";
- }
- if (error.Equals("")) //
- {
- Model.Model_Companey company_model = new Model.Model_Companey();
- BLL.BLL_Companey company_bll = new BLL.BLL_Companey();
- company_model.C_OraName = C_OraName;
- company_model.C_Town = C_Town;
- company_model.C_Trding = C_Trding;
- company_model.C_Postcode = C_PostCode;
- company_model.C_Phone = C_Phone;
- // 公司名之前未出现过
- if (Helper.SQLHelper.SqlContains(C_OraName, "Companey", "C_OraName") == false)
- {
- company_bll.Add(company_model);//添加数据
- }
- else
- {
- error = C_OraName + "已存在";
- lstMsg.Add("未导入成功," + "原因:" + error + "。");//保存错误信息
- error = "";
- }
- }
- else
- {
- }
- }
- this.txtMessageList.Items.Add("导入完成。");
- if (null != lstMsg)
- {
- this.txtMessageList.Items.Add("共有" + lstMsg.Count() + "条记录未成功。<br /><br />");
- foreach (string s in lstMsg)
- {
- this.txtMessageList.Items.Add(s);
- }
- }
- }
- }
- }
3.将工作表名放入DropDownList控件中以作选择
- /// <summary>
- /// 把工作表名绑定到DropDownList控件中
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void btnup_Click(object sender, EventArgs e)
- {
- if (FileUpload1.HasFile)
- {
- string ext = System.IO.Path.GetExtension(FileUpload1.FileName);//获取文件后缀
- if (ext.ToLower() != ".xls" && ext.ToLower() != ".xlsx")
- {
- Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "alert('请选择一个Excel文件!');", true);
- return;
- }
- HttpFileCollection files = HttpContext.Current.Request.Files;//获取页面上所有的FileUpload控件
- string tmp = files[].FileName;
- string savePath = "e:/test/" + DateTime.Now.ToString("yymmdd") + ".xls";//保存路径
- LaValue.Text = savePath; //保存路径到一个不可见的Label控件中
- FileUpload1.SaveAs(savePath);//保存文件
- DropdownListBind(savePath);//绑定DropDownList
- }
- }
4.绑定DropDownList函数
- /// <summary>
- /// 绑定DropDownList
- /// </summary>
- /// <param name="savePath">路径</param>
- protected void DropdownListBind(string savePath)
- {
- string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + savePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";//连接Excel串
- OleDbConnection cnnxls = new OleDbConnection(mystring);//创建连接
- cnnxls.Open();
- DataSet ds = new DataSet();
- DataTable dt = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获取工作表名
- DropDownList1.DataSource = dt;
- foreach (DataRow dr in dt.Rows)
- {
- DropDownList1.Items.Add((String)dr["TABLE_NAME"]);//向控件中添加工作表名
- }
- cnnxls.Close();
- }
Excel文件数据保存到SQL中的更多相关文章
- 1.scrapy爬取的数据保存到es中
先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index. from datetime import datetime fr ...
- 将爬取的数据保存到mysql中
为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...
- c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)
使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...
- Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...
- vue下载和上传excle数据文件,解析excel文件数据并存在数据库中
下载: VUE: window.open("xxxx/downloadOldTaskDataFile.do_", "_blank"); JAVA: /** * ...
- 将 excel文件数据导入MySQL数据库中
第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...
- Python将数据保存到CSV中
#coding:utf-8import csv headers = ['ID','UserName','Password','Age','Country'] rows = [(1001,'qiye', ...
- Python爬虫数据保存到MongoDB中
MongoDB是一款由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储方式类似于JSON对象,它的字段值可以是其它文档或数组,但其数据类型只能是String文本型. ...
- 在scrapy中将数据保存到mongodb中
利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline 需要在类属性中定义两个常量 DB_URL:数据库的URL地址 DB_NAME:数据库的 ...
随机推荐
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- java8-concurrency-tutorial-thread-executor-examples
http://ifeve.com/java8-concurrency-tutorial-thread-executor-examples/
- java并发6-小结
为什么需要并发 并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开.这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作).做 ...
- [LeetCode] 28. Implement strStr() 解题思路
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- 有关autoresizingMask属性遇到的一个小问题
前言:在讲述这个小问题之前,我们有必要先了解一下UIViewAutoresizing的有关属性概念和使用详解. 参考:自动布局之autoresizingMask使用详解(Storyboard& ...
- 自定义input file样式
自定义input file样式:一般都是通过隐藏input,通过定义label来实现.这种做法要注意的是label的for属性要指定input对应的id; <!DOCTYPE html> ...
- SWFLoader交互
主应用程序: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=& ...
- IOS设计模式学习(19)策略
1 前言 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略.与这种做法有关的一种设计模式成为策略模式. 2 详述 2.1 简述 策略模式中得一个关键角色是策略类,它为所有支持的或相关的算 ...
- (第三章)Java内存模型(中)
一.volatile的内存语义 1.1 volatile的特性 理解volatile特性的一个好办法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面通过具体 ...
- 【iOS开发之C语言】sprintf,strncpy,strcmp三个函数的区别
strncpy 这个函数用于将源字符串的内容拷贝到目标字符串,会覆盖掉目标字符串的之前内容 ] = "love"; char str2[] = "cool"; ...