1.获取DataTable

  1. /// <summary>
  2. /// 查询Excel文件中的数据
  3. /// </summary>
  4. /// <param name="strPath">文件路径</param>
  5. /// <param name="sheetName">工作表名</param>
  6. /// <returns>DataTable</returns>
  7. public DataTable getExcel(string strPath,string sheetName)
  8. {
  9. string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + strPath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
            //连接串, HDR=yes 表示excel第一行是标题行,反之表示第一行不是标题行
  10. OleDbConnection cnnxls = new OleDbConnection(mystring);
  11. cnnxls.Open();
  12. OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [" + sheetName + "]", cnnxls);//查询工作表中的数据
  13. DataSet ds = new DataSet();
  14. myDa.Fill(ds, "[" + sheetName + "]");
  15. cnnxls.Close();
  16. DataTable dt = ds.Tables[];
  17. return dt;
  18. }

2.点击按钮函数,将数据存入数据库

  1. /// <summary>
  2. /// 把Excel中的数据保存到sql数据库中
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. protected void btnSave_Click(object sender, EventArgs e)
  7. {
  8. if (LaValue.Text.Length >)
  9. {
  10. Helper.ExcelHelper eh = new Helper.ExcelHelper();//公共方法类对象,封装Excel操作的方法
  11. DataTable dt = eh.getExcel(LaValue.Text, DropDownList1.Text.ToString());//得到Datatable
  12. DataRow[] dr = dt.Select();//得到
  13. int rowsnum = dt.Rows.Count;//表中数据行数
  14. List<String> lstMsg = new List<string>();//保存失败信息
  15. if (rowsnum == )
  16. {
  17. Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "alert('Excel表为空表,无数据!');", true);
  18. }
  19.  
  20. else
  21. {
  22. String error = "";
  23. for (int i = ; i < dr.Length; i++)//循环插入数据
  24. {
  25. // excel列名不能变
  26. string C_OraName = dr[i]["CompanyName"].ToString();
  27. string C_Town = dr[i]["Town"].ToString();
  28. string C_Trding = dr[i]["Trading"].ToString();
  29. string C_PostCode = dr[i]["PostCode"].ToString();
  30. string C_Phone = dr[i]["Phone"].ToString();
  31.  
  32. if (String.IsNullOrEmpty(C_OraName))
  33. {
  34. error += "公司名不能为空 ";
  35. }
  36. if (error.Equals("")) //
  37. {
  38. Model.Model_Companey company_model = new Model.Model_Companey();
  39. BLL.BLL_Companey company_bll = new BLL.BLL_Companey();
  40. company_model.C_OraName = C_OraName;
  41. company_model.C_Town = C_Town;
  42. company_model.C_Trding = C_Trding;
  43. company_model.C_Postcode = C_PostCode;
  44. company_model.C_Phone = C_Phone;
  45. // 公司名之前未出现过
  46. if (Helper.SQLHelper.SqlContains(C_OraName, "Companey", "C_OraName") == false)
  47. {
  48. company_bll.Add(company_model);//添加数据
  49. }
  50. else
  51. {
  52. error = C_OraName + "已存在";
  53. lstMsg.Add("未导入成功," + "原因:" + error + "。");//保存错误信息
  54. error = "";
  55. }
  56. }
  57. else
  58. {
  59. }
  60. }
  61. this.txtMessageList.Items.Add("导入完成。");
  62. if (null != lstMsg)
  63. {
  64. this.txtMessageList.Items.Add("共有" + lstMsg.Count() + "条记录未成功。<br /><br />");
  65. foreach (string s in lstMsg)
  66. {
  67. this.txtMessageList.Items.Add(s);
  68. }
  69. }
  70. }
  71. }
  72. }

3.将工作表名放入DropDownList控件中以作选择

  1. /// <summary>
  2. /// 把工作表名绑定到DropDownList控件中
  3. /// </summary>
  4. /// <param name="sender"></param>
  5. /// <param name="e"></param>
  6. protected void btnup_Click(object sender, EventArgs e)
  7. {
  8. if (FileUpload1.HasFile)
  9. {
  10. string ext = System.IO.Path.GetExtension(FileUpload1.FileName);//获取文件后缀
  11. if (ext.ToLower() != ".xls" && ext.ToLower() != ".xlsx")
  12. {
  13. Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "alert('请选择一个Excel文件!');", true);
  14. return;
  15. }
  16. HttpFileCollection files = HttpContext.Current.Request.Files;//获取页面上所有的FileUpload控件
  17. string tmp = files[].FileName;
  18. string savePath = "e:/test/" + DateTime.Now.ToString("yymmdd") + ".xls";//保存路径
  19. LaValue.Text = savePath; //保存路径到一个不可见的Label控件中
  20. FileUpload1.SaveAs(savePath);//保存文件
  21. DropdownListBind(savePath);//绑定DropDownList
  22. }
  23. }

4.绑定DropDownList函数

  1. /// <summary>
  2. /// 绑定DropDownList
  3. /// </summary>
  4. /// <param name="savePath">路径</param>
  5. protected void DropdownListBind(string savePath)
  6. {
  7. string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + savePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";//连接Excel串
  8. OleDbConnection cnnxls = new OleDbConnection(mystring);//创建连接
  9. cnnxls.Open();
  10. DataSet ds = new DataSet();
  11. DataTable dt = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获取工作表名
  12. DropDownList1.DataSource = dt;
  13. foreach (DataRow dr in dt.Rows)
  14. {
  15. DropDownList1.Items.Add((String)dr["TABLE_NAME"]);//向控件中添加工作表名
  16. }
  17. cnnxls.Close();
  18. }

Excel文件数据保存到SQL中的更多相关文章

  1. 1.scrapy爬取的数据保存到es中

    先建立es的mapping,也就是建立在es中建立一个空的Index,代码如下:执行后就会在es建lagou 这个index.     from datetime import datetime fr ...

  2. 将爬取的数据保存到mysql中

    为了把数据保存到mysql费了很多周折,早上再来折腾,终于折腾好了 安装数据库 1.pip install pymysql(根据版本来装) 2.创建数据 打开终端 键入mysql -u root -p ...

  3. c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)

    使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...

  4. Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...

  5. vue下载和上传excle数据文件,解析excel文件数据并存在数据库中

    下载: VUE: window.open("xxxx/downloadOldTaskDataFile.do_", "_blank"); JAVA: /** * ...

  6. 将 excel文件数据导入MySQL数据库中

    第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...

  7. Python将数据保存到CSV中

    #coding:utf-8import csv headers = ['ID','UserName','Password','Age','Country'] rows = [(1001,'qiye', ...

  8. Python爬虫数据保存到MongoDB中

    MongoDB是一款由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储方式类似于JSON对象,它的字段值可以是其它文档或数组,但其数据类型只能是String文本型. ...

  9. 在scrapy中将数据保存到mongodb中

    利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline 需要在类属性中定义两个常量 DB_URL:数据库的URL地址 DB_NAME:数据库的 ...

随机推荐

  1. Android菜单详解(一)——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  2. java8-concurrency-tutorial-thread-executor-examples

    http://ifeve.com/java8-concurrency-tutorial-thread-executor-examples/

  3. java并发6-小结

    为什么需要并发   并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开.这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作).做 ...

  4. [LeetCode] 28. Implement strStr() 解题思路

    Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...

  5. 有关autoresizingMask属性遇到的一个小问题

    前言:在讲述这个小问题之前,我们有必要先了解一下UIViewAutoresizing的有关属性概念和使用详解. 参考:自动布局之autoresizingMask使用详解(Storyboard& ...

  6. 自定义input file样式

    自定义input file样式:一般都是通过隐藏input,通过定义label来实现.这种做法要注意的是label的for属性要指定input对应的id; <!DOCTYPE html> ...

  7. SWFLoader交互

    主应用程序: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=& ...

  8. IOS设计模式学习(19)策略

    1 前言 面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略.与这种做法有关的一种设计模式成为策略模式. 2 详述 2.1 简述 策略模式中得一个关键角色是策略类,它为所有支持的或相关的算 ...

  9. (第三章)Java内存模型(中)

    一.volatile的内存语义 1.1 volatile的特性 理解volatile特性的一个好办法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面通过具体 ...

  10. 【iOS开发之C语言】sprintf,strncpy,strcmp三个函数的区别

    strncpy 这个函数用于将源字符串的内容拷贝到目标字符串,会覆盖掉目标字符串的之前内容 ] = "love"; char str2[] = "cool"; ...