将Excel数据导入数据库

Excel如下,这页工作表名叫“线路”

数据库表如下

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Data;
  6 using System.Data.OleDb;
  7 using System.Configuration;
  8 using System.Data.SqlClient;
  9
 10 namespace insertData
 11 {
 12     class FileSvr
 13     {
 14         /// <summary>
 15         /// 获取DataRow的真实长度
 16         /// </summary>
 17         /// <param name="dr">DataRow</param>
 18         /// <returns>真实长度</returns>
 19         public int getRowLen(DataRow dr)
 20         {
 21             int i = 0;
 22             for (; i < dr.ItemArray.Length; i++)
 23                 if (dr[i].ToString().Trim() == "") break;
 24             return i;
 25         }
 26         /// <summary>
 27         /// //Excel指定的工作表数据导入Datable
 28         /// </summary>
 29         /// <param name="fileUrl">Excel路径</param>
 30         /// <param name="sheetName">工作表名</param>
 31         /// <returns></returns>
 32         public DataTable getExcelDatatable(string fileUrl, string sheetName)//Excel指定的工作表数据导入Datable
 33         {
 34             //支持.xls和.xlsx,即包括office2010等版本的   HDR=Yes代表第一行是标题,不是数据;
 35             const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties=‘Excel 12.0; HDR=Yes; IMEX=1‘";
 36
 37             DataTable dt = null;
 38             //建立连接
 39             OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
 40             try
 41             {
 42                 //打开连接
 43                 if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
 44                 {
 45                     conn.Open();
 46                 }
 47
 48                 //查询sheet中的数据
 49                 string strSql = "select * from [" + sheetName + "$]";
 50                 OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
 51                 DataSet ds = new DataSet();
 52                 da.Fill(ds);
 53                 dt = ds.Tables[0];
 54                 return dt;
 55             }
 56             catch (Exception exc)
 57             {
 58                 throw exc;
 59             }
 60             finally
 61             {
 62                 conn.Close();
 63                 conn.Dispose();
 64             }
 65         }
 66 public void InsertRoute(DataTable dt, string strConnection,int dir)//从DataTable导入数据到数据库
 67         {
 68             int retVal = 0;
 69             int count0 = 0;
 70             int count = 0;
 71             int routeNo;
 72             SqlConnection conn = new SqlConnection(strConnection);
 73             conn.Open();
 74             string strSql;
 75             SqlCommand sqlCmd = new SqlCommand();
 76             sqlCmd.Connection = conn;
 77             sqlCmd.Parameters.Add("@编号", System.Data.SqlDbType.Int, 4);
 78             sqlCmd.Parameters.Add("@线路号", System.Data.SqlDbType.Int, 4);
 79             sqlCmd.Parameters.Add("@行向", System.Data.SqlDbType.Int, 4);
 80             sqlCmd.Parameters.Add("@线路名称", System.Data.SqlDbType.NVarChar, 50);
 81             sqlCmd.Parameters.Add("@始发站点", System.Data.SqlDbType.NVarChar, 50);
 82             sqlCmd.Parameters.Add("@开往方向", System.Data.SqlDbType.NVarChar, 50);
 83             sqlCmd.Parameters.Add("@更新时间", System.Data.SqlDbType.DateTime, 4);
 84             foreach (DataRow dr in dt.Rows)//遍历行数据
 85             {
 86                 strSql= "update 线路 set 线路号[email protected]线路号, 行向[email protected]行向, 线路名称[email protected]线路名称, 始发站点[email protected]始发站点, 开往方向[email protected]开往方向,更新时间[email protected]更新时间 where 编号[email protected]编号";
 87                 sqlCmd.CommandText = strSql;
 88                 routeNo =Convert.ToInt32(dr[0].ToString().Trim());
 89                 sqlCmd.Parameters["@编号"].Value = routeNo+dir*100000;
 90                 sqlCmd.Parameters["@线路号"].Value=routeNo;
 91                 sqlCmd.Parameters["@行向"].Value=dir;
 92                 sqlCmd.Parameters["@线路名称"].Value=routeNo+"路";
 93                 sqlCmd.Parameters["@始发站点"].Value=dr[1].ToString();
 94                 sqlCmd.Parameters["@开往方向"].Value=dr[getRowLen(dr)-1].ToString();
 95                 sqlCmd.Parameters["@更新时间"].Value = DateTime.Now;
 96                 retVal = sqlCmd.ExecuteNonQuery();
 97                 if (retVal == 0)
 98                 {
 99                     strSql = @"insert into 线路( 编号, 线路号, 行向, 线路名称, 始发站点, 开往方向, 更新时间) values(@编号,@线路号,@行向,@线路名称,@始发站点,@开往方向,@更新时间)";
100                     sqlCmd.CommandText = strSql;
101                     retVal = sqlCmd.ExecuteNonQuery();
102                     count++;
103                     Console.WriteLine("插入线路{0}成功!", routeNo);
104                 }
105                 else
106                 {
107                     count0++;
108                     Console.WriteLine("更新线路{0}成功!", routeNo);
109                 }
110             }
111             conn.Close();
112             Console.WriteLine("插入{0}条、更新{1}条线路",count, count0);
113         }
114 }

结果如下

时间: 2024-11-13 04:25:27

将Excel数据导入数据库的相关文章

EXCEL数据导入数据库实例(NPOI)

Default.aspx 页面代码: 引用了:    <script src="../../js/jquery.easyui.min.js" type="text/javascript"></script> <form id="fileForm" runat="server" enctype="multipart/form-data" method="post&quo

[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作

C#将Excel数据导入数据库(MySQL或Sql Server)

最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel数据导入到DataSet中; 2.将DataSet里面的数据遍历插入到对应的数据库 一.将excel数据导入到DataSet中 需添加引用using System.Data; using System.Data.OleDb; public static DataSet ReadExcel(strin

PHPExcel将Excel数据导入数据库

1 <?php 2 //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: 3 //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据保存进数据库 4 require_once "./PHPExcel.class.php"; 5 require_once "./PHPExcel/Cell/DataType.php"; 6 require_once "./PHPExcel/IOFa

excel数据导入数据库

1 using (FileStream fs = File.OpenRead(@"D:\成绩管理\名单.xls")) 2 { 3 IWorkbook wk = new HSSFWorkbook(fs);//根据文件流创建workbook 4 if (wk.NumberOfSheets > 0) 5 { 6 ISheet sheet = wk.GetSheetAt(0);//创建工作表 7 //学号 姓名 性别 出生年月 专业 8 for (int r = 1; r <= s

ASP.NET Excel数据导入数据库

http://www.cnblogs.com/xiaopin/archive/2011/03/31/2001199.html  原网址,这个写的特别好:    其他实现方式参考:http://blog.csdn.net/lee576/archive/2011/03/02/6217811.aspx protected void btnImport_Click(object sender, EventArgs e) { if (FileUpload1.HasFile == false)//HasFi

POI 读取Excel文件,将Excel数据导入数据库

/** * 读取Excel单元格所显示的字符串(显示什么就返回什么) * 创建人:minlorry * 创建日期:2015-07-31 * 更新日期:2015-07-31 * 更新说明:生硬地处理了数值单元格的处理,日期单元格未作处理. * @param cell Excel单元格 * @return String 单元格显示的字符串 */ public static String getStringValue(Cell cell) { String stringValue = "";

ASP.NET Excel数据导入数据库---2

protected void btnImport_Click(object sender, EventArgs e) { if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件 { Response.Write("<script>alert('请您选择Excel文件')</script> "); return;//当无文件时,返回 } string IsXls = System.IO.Pat

python之EXCEL数据导入数据库

操作承接上面数据库操作的基础,好了,直接上代码 # Excel导入数据库处理 tables = load_workbook(filename='Database/stud.xlsx') # 获取表内容 data = tables.worksheets[0] rows = data.max_row cols = data.max_column sql = 'insert into stu (name, age) values (?, ?)' xl_data = [] for rx in range