最近在一个项目中需要用到Excel文件导入数据库的功能,本人很懒,所以到网上搜了一堆方法,但是通过对比,觉得一下三种是比较好用或者不是很常见的方法,希望对大家有所帮助。

方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作。

  1. openFileDialog = new OpenFileDialog();
  2. openFileDialog.Filter = "Excel files(*.xls)|*.xls";
  3. if(openFileDialog.ShowDialog()==DialogResult.OK)
  4. {
  5. FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
  6. string filePath = fileInfo.FullName;
  7. string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";
  8. try
  9. {
  10. OleDbConnection oleDbConnection = new OleDbConnection(connExcel);
  11. oleDbConnection.Open();
  12. //获取excel表
  13. DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
  14. //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素
  15. string tableName = dataTable.Rows[0][2].ToString().Trim();
  16. tableName = "[" + tableName.Replace("'","") + "]";
  17. //利用SQL语句从Excel文件里获取数据
  18. //string query = "SELECT classDate,classPlace,classTeacher,classTitle,classID FROM " + tableName;
  19. string query = "SELECT 日期,开课城市,讲师,课程名称,持续时间 FROM " + tableName;
  20. dataSet = new DataSet();
  21. //OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection);
  22. //OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
  23. OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);
  24. oleAdapter.Fill(dataSet,"gch_Class_Info");
  25. //从excel文件获得数据后,插入记录到SQL Server的数据表
  26. DataTable dataTable1 = new DataTable();
  27. SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT classID, classDate,
  28. classPlace, classTeacher, classTitle, durativeDate FROM gch_Class_Info",sqlConnection1);
  29. //SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);
  30. sqlDA1.Fill(dataTable1);
  31. foreach(DataRow dataRow in dataSet.Tables["gch_Class_Info"].Rows)
  32. {
  33. DataRow dataRow1 = dataTable1.NewRow();
  34. dataRow1["classDate"] = dataRow["日期"];
  35. dataRow1["classPlace"] = dataRow["开课城市"];
  36. dataRow1["classTeacher"] = dataRow["讲师"];
  37. dataRow1["classTitle"] = dataRow["课程名称"];
  38. dataRow1["durativeDate"] = dataRow["持续时间"];
  39. dataTable1.Rows.Add(dataRow1);
  40. }
  41. Console.WriteLine("新插入 " + dataTable1.Rows.Count.ToString() + " 条记录");
  42. sqlDA1.Update(dataTable1);
  43. oleDbConnection.Close();
  44. }
  45. catch(Exception ex)
  46. {
  47. Console.WriteLine(ex.ToString());
  48. }
  49. }

方案二: 直接通过SQL语句执行SQL Server的功能函数将Excel文件转换到SQL Server数据库。

OpenFileDialog openFileDialog = newOpenFileDialog();

  1. openFileDialog.Filter = "Excel files(*.xls)|*.xls";
  2. SqlConnection sqlConnection1 = null;
  3. if(openFileDialog.ShowDialog()==DialogResult.OK)
  4. {
  5. string filePath = openFileDialog.FileName;
  6. sqlConnection1 = new SqlConnection();
  7. sqlConnection1.ConnectionString = "server=(local);integrated security=SSPI;initial catalog=Library";
  8. //import excel into SQL Server 2000
  9. /*string importSQL = "SELECT * into live41 FROM OpenDataSource" +
  10. "('Microsoft.Jet.OLEDB.4.0','Data Source=" + "\"" + "E:\\022n.xls" + "\"" +
  11. "; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet1$]";*/
  12. //export SQL Server 2000 into excel
  13. string exportSQL = @"EXEC master..xp_cmdshell
  14. 'bcp Library.dbo.live41 out " + filePath + "-c -q -S" + "\"" + "\"" +
  15. " -U" + "\"" + "\"" + " -P" + "\"" + "\"" + "\'";
  16. try
  17. {
  18. sqlConnection1.Open();
  19. //SqlCommand sqlCommand1 = new SqlCommand();
  20. //sqlCommand1.Connection = sqlConnection1;
  21. //sqlCommand1.CommandText = importSQL;
  22. //sqlCommand1.ExecuteNonQuery();
  23. //MessageBox.Show("import finish!");
  24. SqlCommand sqlCommand2 = new SqlCommand();
  25. sqlCommand2.Connection = sqlConnection1;
  26. sqlCommand2.CommandText = exportSQL;
  27. sqlCommand2.ExecuteNonQuery();
  28. MessageBox.Show("export finish!");
  29. }
  30. catch(Exception ex)
  31. {
  32. MessageBox.Show(ex.ToString());
  33. }
  34. }
  35. if(sqlConnection1!=null)
  36. {
  37. sqlConnection1.Close();
  38. sqlConnection1 = null;
  39. }

方案三: 通过到入Excel的VBA dll,通过VBA接口获取Excel数据到DataSet

  1. OpenFileDialog openFile = new OpenFileDialog();
  2. openFile.Filter = "Excel files(*.xls)|*.xls";
  3. ExcelIO excelio = new ExcelIO();
  4. if(openFile.ShowDialog()==DialogResult.OK)
  5. {
  6. if(excelio!=null)
  7. excelio.Close();
  8. excelio = new ExcelIO(openFile.FileName);
  9. object[,] range = excelio.GetRange();
  10. excelio.Close();
  11. DataSet ds = new DataSet("xlsRange");
  12. int x = range.GetLength(0);
  13. int y = range.GetLength(1);
  14. DataTable dt = new DataTable("xlsTable");
  15. DataRow dr;
  16. DataColumn dc;
  17. ds.Tables.Add(dt);
  18. for(int c=1; c<=y; c++)
  19. {
  20. dc = new DataColumn();
  21. dt.Columns.Add(dc);
  22. }
  23. object[] temp = new object[y];
  24. for(int i=1; i<=x; i++)
  25. {
  26. dr = dt.NewRow();
  27. for(int j=1; j<=y; j++)
  28. {
  29. temp[j-1] = range[i,j];
  30. }
  31. dr.ItemArray = temp;
  32. ds.Tables[0].Rows.Add(dr);
  33. }
  34. dataGrid1.SetDataBinding(ds,"xlsTable");
  35. if(excelio!=null)
  36. excelio.Close();
  37. }

  当然还有其他一些方法,如遍历Excel文件中的数据然后构造sql语句,直接利用sql操作Excel文件导入数据库等,这些都是很常见的方法,因此就不再做收录了。最后说明下,以上的方法是我从网上找的源码并做了一定的修改。

转载于:https://www.cnblogs.com/cxcco/archive/2010/08/04/1792235.html

将Excel文件数据导入到SqlServer数据库的三种方案相关推荐

  1. Excel文件数据导入到MySQL数据库

    这里以Navicat客户端工具为例,当然版本也有关系这里我用的是16. 1.把Excel文件数据第一行改成对应的数据库字段 2.右键目标表-->导入向导-->选择excel文件格式 3.注 ...

  2. Excel表格数据导入到SQLServer数据库

    数据挖掘课上,老师说我们最后考察是以课程论文的形式给出,用SQLServer分析数据. 数据挖掘用的是Clement软件,结课写论文还要用SQLServer分析数据,我们分析的数据肯定不会少,是一点一 ...

  3. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...

    如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...

  4. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

  5. redis和sqlserver数据同步_SQLServer数据库之redis数据库的数据导入到SQLServer数据库中...

    本文主要向大家介绍了SQLServer数据库之redis数据库的数据导入到SQLServer数据库中,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. #!/usr/bin/ ...

  6. oracle表中放入word,“如何将excel表格数据导入到oracle数据库对应的表中?“将excel表格导入word...

    如何将excel表格数据导入到oracle数据库对应的表中? 敢问楼主,表A几列,表B存在几列,表C存在几列 常规方法(表中列和excel中列) PLSQL 中 : select * from A u ...

  7. Excel中数据透视表数据源更新的三种方式

    Excel中数据透视表数据源更新的三种方式 1.在原有的基础上重新选择数据源 2.变数据源为表格形式,在创建一个透视表,之后如果添加的数据,选中透视表右键刷新即可 3.利用更新过的数据源再重新创建一个 ...

  8. 基于embedded.mobileprovision描述文件查看iOS苹果证书到期时间三种方案

    在iOS开发中,embedded.mobileprovision描述文件是开发人员非常熟悉的,里面包含了证书信息,如调试设备UDID.Entitlements.AppIDName.DeveloperC ...

  9. halcon 将数据保存到excel_用C#操作Excel文件,实现与Sqlserver数据库进行导入与导出的操作。...

    [实例简介] 用C#3层结构对Excel文件与SqlServer数据库进行导入与导出 [实例截图] 1.将数据库中数据导出Excel文件中,其原理是先将数据库中的你所选择的一张表,先加载到DataGr ...

  10. excel文件数据导入mysql数据库中_将excel里面的数据导入mysql数据库中

    展开全部 条件:PC端已经安装Navicat工具,并636f70793231313335323631343130323136353331333363386161且已经成功连接至数据库. 1.点击鼠标右 ...

最新文章

  1. opencv车牌识别入门资料汇总
  2. panel.setLayout(null);
  3. [bzoj 5332][SDOI2018]旧试题
  4. C语言学习之用*打印菱形
  5. SQL Server 自动更新统计信息的基本算法
  6. 数据可视化平台由哪些要素组成
  7. PowerPoint优点全体验
  8. sql 怎么查一个账号连续登录失败的次数_黑客到底是怎么入侵的,我展示给你看...
  9. Python 识别图片文字( Tesseract 安装使用 )
  10. 利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图
  11. 傅立叶级数与傅里叶变换
  12. 利用栈实现中缀表达式转前缀表达式
  13. Java中的变量名命名规则
  14. 试试kaggle竞赛:辨别猫狗
  15. 安装冰点还原后无法更改系统时间怎么办
  16. 用异或对身份证等图片加密的严谨方式
  17. mini2440的pwm驱动程序和测试程序详解
  18. OpenCV-python进行多个摄像头同步采集并拼接显示(多个视频拼接到一个窗口显示)
  19. MYSQL 基于抖音上MYSQL开发工程师面试,如果是你怎么样
  20. 油液颗粒计数器在工业自动化进程中带来的巨大效益

热门文章

  1. python tableview添加内容_如何在Python PyQt4 TableView中以编程方式更改/更新数据?
  2. Python使用datetime来判断近七天
  3. [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
  4. JSP内置对象之application
  5. 基于MQTT的消息推送环境搭建
  6. nodepad++通过正则表达式,删除带有特殊字符的某一行
  7. _splitpath / _wsplitpath 将绝对路径分割为盘符、路径、文件名、扩展名。
  8. R语言 高阶可视化绘图系统:ggplot2入门 | 第8讲
  9. 机器学习,总是不得其法,问题出在哪里?
  10. 图解欧洲足球五大联赛 | R爬虫可视化第五季