在项目中经常要用EXCEL导入数据到数据库,提高工作效率。
  注意:EXCEL中的第一行不能导入。
  下面是源码:
  IntoExcel.aspx:
  [csharp]
  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="IntoExcel.aspx.cs" Inherits="study_IntoExcel" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns=".w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
  <title>无标题页</title>
  <script language="javascript" type="text/javascript"><!--
  // <!CDATA[
  function check() {
  var k=//S+/.[xls]/;
  if(!k.test(document.getElementById("fileId")。value))
  {
  alert("只能上次xls格式的文件");
  return false;
  }
  return true;
  }
  // --></script>
  </head>
  <body>
  <form id="form1" runat="server">
  <div>
  <p>
  <asp:FileUpload ID="fileId" runat="server" />
  <asp:Button ID="Button1" runat="server" Text="上传" OnClientClick="return check()" onclick="Button1_Click" /></p>
  </div>
  </form>
  </body>
  </html>
  IntoExcel.aspx.cs
  [csharp]
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Collections;
  using System.Configuration;
  using System.Data;
  using System.Web.Security;
  using System.Web.UI.HtmlControls;
  using System.Web.UI.WebControls.WebParts;
  using System.IO;
  using System.Data.OleDb;
  using System.Data.SqlClient;
  using System.Web.UI.WebControls;
  public partial class study_IntoExcel : System.Web.UI.Page
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  }
  /// <summary>
  /// 上传文件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void Button1_Click(object sender, EventArgs e)
  {
  string fileName = fileId.FileName;
  string savePath = Server.MapPath("~/file/");
  FileOperatpr(fileName, savePath);
  fileId.SaveAs(savePath + fileName);
  DataOperator(fileName, savePath);
  }
  /// <summary>
  /// 数据操作
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="savePath"></param>
  private void DataOperator(string fileName, string savePath)
  {
  string myString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + savePath + fileName + ";Extended Properties=Excel 8.0";
  OleDbConnection oconn = new OleDbConnection(myString);
  oconn.Open();
  DataSet ds = new DataSet();
  OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", oconn);
  oda.Fill(ds);
  oconn.Close();
  DataSetOperator(ds,savePath+fileName);
  }

  /// <summary>
  /// 数据集操作
  /// </summary>
  /// <param name="ds"></param>
  private void DataSetOperator(DataSet ds,string filePath)
  {
  SqlConnection conn = new SqlConnection("Data Source=SONYSVR;Initial Catalog=IAR_Factory_811;User ID=sa;Password=P@ssword");
  conn.Open();
  SqlTransaction str = conn.BeginTransaction();//利用事务处理 防止中断
  int k = 0;
  if (ds.Tables[0].Rows.Count < 1)
  {
  Response.Write("<script>alert('没有数据!')</script>");
  return;
  }
  try
  {
  for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  {
  string sqlStr = "insert into IntoExcel(Tname,Tage,Taddress)values";
  sqlStr +="('"+ ds.Tables[0].Rows[i][0].ToString()+"',";
  sqlStr += ds.Tables[0].Rows[i][1].ToString()+",";
  sqlStr +="'" +ds.Tables[0].Rows[i][2].ToString()+"')";
  SqlCommand cmd = new SqlCommand(sqlStr, conn, str);
  cmd.Transaction = str;
  k += cmd.ExecuteNonQuery();
  }
  str.Commit();
  }
  catch (Exception ex)
  {
  Response.Write("发生异常,数据已回滚/n信息/n" + ex.Message);
  str.Rollback();
  }
  finally
  {
  Response.Write("上传成功" + k + "条");
  File.Delete(filePath);
  }
  }
  /// <summary>
  /// 文件操作
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="savePath"></param>
  private void FileOperatpr(string fileName, string savePath)
  {
  if (!Directory.Exists(savePath))
  {
  Directory.CreateDirectory(savePath);
  }
  if (File.Exists(savePath + fileName))
  {
  File.Delete(savePath + fileName);
  }
  }
  }
  Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savePath + ";Extended Properties='Excel 8.0;HDR=YES
  Provider=Microsoft.Jet.OLEDB.4.0;;//连接驱动sat答案
  Data Source=" + savePath + "; // 数据库地址
  Extended Properties='Excel 8.0; // 连接的是Excel8.0
  HDR=YES;// 有两个值:YES/ NO, 这2个值,说了你是否能直接读列名,NO,只可以读下标
  IMEX=1;//解决数字与字符混合时,识别不正常的情况托福答案
  这个读入数据库的方式不是最佳的,应该用office组件
  select * from [Sheet1$] //引用EXCLE文件中sheet1工作表的内容
  OleDB控件用的是OleDb的驱动程序,可以访问各种数据库
  数据库中的字段:
  [sql]
  create table IntoExcel
  (
  Tid int identity(1,1) primary key,
  Tname varchar(50),
  Tage int,
  Taddress varchar(200),
  )
  SQL控件用的是专用的驱动程序,能高效的访问SQL Server数据库
  SQLConnection只能访问SQL Server,而OleDbConnection则可以访问所有数据库。
  如果只是访问SQL Server的话,SQL比OleDb更快。
  EXCEL数据

asp.net实现 EXCEL数据导入到数据库功能的更多相关文章

  1. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  2. 利用TOAD实现把EXCEL数据导入oracle数据库

    利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...

  3. c#将Excel数据导入到数据库的实现代码

    这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...

  4. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  5. NOPI Excel 数据导入到数据库

    /// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...

  6. 把Excel数据导入到数据库

    引入命名空间 using System.IO; using System.Data; using System.Data.OleDb; 引入命名空间 首先要把Excel上传到服务器 //上传Excel ...

  7. c#将Excel数据导入到数据库的实现代码(OleDb)

    sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web ...

  8. c#将Excel数据导入到数据库的实现代码(转载)

    假如Excel中的数据如下:     数据库建表如下:     其中Id为自增字段:      代码如下: using System; using System.Collections.Generic ...

  9. C# Excel数据导入到数据库

    http://www.jb51.net/article/44743.htm 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 复制代码 代码如下: using System ...

随机推荐

  1. Ubuntu 中使用 谷歌日历

    简介 对于经常使用待办类软件的人来说,谷歌日历是个不错的选择.但每次,都要登录网页去查看,对于我这样的懒人来说似乎麻烦了些. 所以在网上找了个叫做 Calendar Indicator 的软件. 效果 ...

  2. bzoj 1208 宠物收养所--splay

    这个题也是单点维护,不管来的是人还是狗,只要num=0就插入,否则就删除. // File Name: ACM/bzoj/1208.cpp // Author: Zlbing // Created T ...

  3. vim学习与理解

    1. 转变思维 --> vim 无鼠标文本编辑工具 在鸟哥的linux私房菜中,是这么说明linux的: 1. vim是linux like系统中非常强大的一个文本编辑工具,历史悠久,很多系统都 ...

  4. 【模拟】NCPC 2014 K Train passengers

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1797 题目大意: 有N个车站,火车一共可以坐M个人,每个车站下车Ai,上车Bi个人,在 ...

  5. HDOJ 2053 Switch Game

    Problem Description There are many lamps in a line. All of them are off at first. A series of operat ...

  6. Access denied for user 'root'@'localhost' (using password:YES) 解决方案

    1.打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件. 2.重启MySQL服务. 3.在命令行中输入“mysql -uroot -p” ...

  7. 动态规划——线性dp

    我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp.在这篇文章中,我们将讨论有关线性dp的一些问题. 在有关线性dp问题中,有着几个比较经典而基础的模 ...

  8. SRM 406(1-250pt, 1-500pt)

    DIV1 250pt 题意:有几家宠物店,vecort<int>A表示每家宠物店含有小狗占小狗总数的百分比.现在要做扇形统计图统计每家店的小狗百分比,如下图,问作出来的扇形统计图中最多含有 ...

  9. Java 单元测试Junit

    @Test @Before @After 测试方法运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) @BeforeClass @AfterClass 测试类运行前执 ...

  10. OpenGL ES2.0基础入门

    1.OpenGL ES 1.x渲染管线(又称为渲染流水线) (1).基本处理: 基本处理主要是设定3D空间中物体的顶点坐标.顶点对应的颜色.顶点的纹理坐标等属性,并且指定绘制方式. 常见的绘制方式有: ...