在项目中经常要用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. 2015 BJOI 0102 Secret

    传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=477 试题描述: 在 MagicLand 这片神奇的大陆上,有样一个古老传说 ...

  2. phpMyAdmin 跨站脚本漏洞

    漏洞名称: phpMyAdmin 跨站脚本漏洞 CNNVD编号: CNNVD-201307-647 发布时间: 2013-08-09 更新时间: 2013-08-09 危害等级: 低危   漏洞类型: ...

  3. 字符串(广义后缀自动机):BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 843  Solved: 510[Submit][St ...

  4. HDOJ 3466 Proud Merchants

    Problem Description Recently, iSea went to an ancient country. For such a long time, it was the most ...

  5. 高效算法——D 贪心,区间覆盖问题

    Given several segments of line (int the X axis) with coordinates [Li , Ri ]. You are to choose the m ...

  6. VS2015接口智能提示少了异常信息 怎么破~

    问题:我想让VS2015提示的时候也显示关于“异常”的批注信息,亲们 如何破? 下图是VS3013的提示 下图是VS2015的提示 下图是接口注释

  7. lightoj 1013 dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1013 #include <cstdio> #include <cst ...

  8. Threading Module源码概述(三)

    Threading中的Thread threading中一个关键的组件是threading.Thread. class Thread(_Verbose): __initialized = False ...

  9. Spring task任务调度详解

    spring内部有一个task是Spring自带的一个设定时间自动任务调度 task使用的时候很方便,但是他能做的东西不如quartz那么的多! 可以使用注解和配置两种方式,配置的方式如下 引入Spr ...

  10. 文字保护纱-Material Design

    Ok,关于这个Material Design 都快被说烂了,他被开发者越来越熟悉的程度,却与市场上的单薄身影形成了鲜明的对比,以至于每当我提及Material Design时就像祥林嫂附身一样. 有些 ...