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

数据库表如下

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Data.SqlClient; namespace insertData
{
class FileSvr
{
/// <summary>
/// 获取DataRow的真实长度
/// </summary>
/// <param name="dr">DataRow</param>
/// <returns>真实长度</returns>
public int getRowLen(DataRow dr)
{
int i = ;
for (; i < dr.ItemArray.Length; i++)
if (dr[i].ToString().Trim() == "") break;
return i;
}
/// <summary>
/// //Excel指定的工作表数据导入Datable
/// </summary>
/// <param name="fileUrl">Excel路径</param>
/// <param name="sheetName">工作表名</param>
/// <returns></returns>
public DataTable getExcelDatatable(string fileUrl, string sheetName)//Excel指定的工作表数据导入Datable
{
//支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; DataTable dt = null;
//建立连接
OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
try
{
//打开连接
if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
{
conn.Open();
} //查询sheet中的数据
string strSql = "select * from [" + sheetName + "$]";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dt = ds.Tables[];
return dt;
}
catch (Exception exc)
{
throw exc;
}
finally
{
conn.Close();
conn.Dispose();
}
}
public void InsertRoute(DataTable dt, string strConnection,int dir)//从DataTable导入数据到数据库
{
int retVal = ;
int count0 = ;
int count = ;
int routeNo;
SqlConnection conn = new SqlConnection(strConnection);
conn.Open();
string strSql;
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = conn;
sqlCmd.Parameters.Add("@编号", System.Data.SqlDbType.Int, );
sqlCmd.Parameters.Add("@线路号", System.Data.SqlDbType.Int, );
sqlCmd.Parameters.Add("@行向", System.Data.SqlDbType.Int, );
sqlCmd.Parameters.Add("@线路名称", System.Data.SqlDbType.NVarChar, );
sqlCmd.Parameters.Add("@始发站点", System.Data.SqlDbType.NVarChar, );
sqlCmd.Parameters.Add("@开往方向", System.Data.SqlDbType.NVarChar, );
sqlCmd.Parameters.Add("@更新时间", System.Data.SqlDbType.DateTime, );
foreach (DataRow dr in dt.Rows)//遍历行数据
{
strSql= "update 线路 set 线路号=@线路号, 行向=@行向, 线路名称=@线路名称, 始发站点=@始发站点, 开往方向=@开往方向,更新时间=@更新时间 where 编号=@编号";
sqlCmd.CommandText = strSql;
routeNo =Convert.ToInt32(dr[].ToString().Trim());
sqlCmd.Parameters["@编号"].Value = routeNo+dir*;
sqlCmd.Parameters["@线路号"].Value=routeNo;
sqlCmd.Parameters["@行向"].Value=dir;
sqlCmd.Parameters["@线路名称"].Value=routeNo+"路";
sqlCmd.Parameters["@始发站点"].Value=dr[].ToString();
sqlCmd.Parameters["@开往方向"].Value=dr[getRowLen(dr)-].ToString();
sqlCmd.Parameters["@更新时间"].Value = DateTime.Now;
retVal = sqlCmd.ExecuteNonQuery();
if (retVal == )
{
strSql = @"insert into 线路( 编号, 线路号, 行向, 线路名称, 始发站点, 开往方向, 更新时间) values(@编号,@线路号,@行向,@线路名称,@始发站点,@开往方向,@更新时间)";
sqlCmd.CommandText = strSql;
retVal = sqlCmd.ExecuteNonQuery();
count++;
Console.WriteLine("插入线路{0}成功!", routeNo);
}
else
{
count0++;
Console.WriteLine("更新线路{0}成功!", routeNo);
}
}
conn.Close();
Console.WriteLine("插入{0}条、更新{1}条线路",count, count0);
}
}

结果如下

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

  1. 使用python将excel数据导入数据库

    使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...

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

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  3. 如何把excel数据导入数据库

    这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...

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

    最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...

  5. Excel数据导入数据库

    maven依赖 <!--excel相关依赖--> <dependency> <groupId>org.apache.poi</groupId> < ...

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

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  7. PHPExcel将Excel数据导入数据库

    <?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...

  8. ASP.NET Excel数据导入数据库

    <identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...

  9. 利用poi,jxl将Excel数据导入数据库

    需求:‘需要将本地的Excel中的数据经过验证之后导入数据库,在导入数据库之前在页面上展示出来 思路:将Excel导入存到session里面 去判断有没有不合法数据  如果有阻止提交 工具类: imp ...

随机推荐

  1. VS2010 中 Entity Framework 多数据库并存方法

    选中相应数据库生成的 *.edmx文件,然后在属性中找到“自定义工具命名空间”,为每个EF数据集设置不同的命名空间,这样每个数据库生成的代码就会被隔离在不同的命名空间,即使同名类型也就不会相互影响了.

  2. Backbone.js学习之Backbone.View(视图)

    Backbone.js为复杂WEB应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和自定义事件:集合附有可枚举函数的丰富API: 视 ...

  3. fastdfs 安装配置

      介绍文档   1.安装 # wget # tar xf download # cd FastDFS/ # ./make.sh 运行文件 有报错信息 compilation terminated. ...

  4. 解决ideviceinstaller未安装的问题

    在Mac上,使用Appium时提示: Could not initialize ideviceinstaller; make sure it is installed and works on you ...

  5. 使用RedisTemplate进行Redis存取的工具类设计

    通常在访问量大数据更新频率不高的系统中会使用第三方的缓存组件来降低数据库服务的负载,鉴于模块独立分工独立的考虑,针对缓存组件操作的工作全部应该统一接口对其他业务提供服务,这样业务操作只需要关注业务实现 ...

  6. D3树状图异步按需加载数据

    D3.js这个绘图工具,功能强大不必多说,完全一个Data Driven Document的绘图工具,用户可以按照自己的数据以及希望实现的图形,随心所欲的绘图. 图形绘制,D3默认采用的是异步加载,但 ...

  7. 强势回归,Linux blk用实力证明自己并不弱!

    Flash的出现把存储的世界搅翻了天,仿佛一夜之间发现了新大陆,所有旧世界的东西都变得笨拙.NVMe驱动义无反顾地抛弃了Linux blk,开发自己的队列管理. 当第一次看到NVMe重新使用Linux ...

  8. .NET 开发快捷键大全

    序号 快捷键 说明 1 Ctrl + Tab 切换当前编辑视图 2 Ctrl + Shift + Tab 反向切换当前编辑视图 3 F7 将窗体设计视图转成其代码视图 4 Shift + F7 将代码 ...

  9. 在Eclipse中使用JUnit4进行单元测试(高级篇)

    通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...

  10. ASP.NET管道

    以IIS 6.0为例,在工作进程w3wp.exe中,利用Aspnet_ispai.dll加载.NET运行时(如果.NET运行时尚未加载).IIS 6引入了应用程序池的概念,一个工作进程对应着一个应用程 ...