在项目中经常要用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. 【HDOJ】2405 Marbles in Three Baskets

    BFS+状态压缩. /* 2405 */ #include <iostream> #include <queue> #include <cstdio> #inclu ...

  2. sublime每次打开时都提示升级,怎么取消这个弹出框?

    答案其实很简单,设置如下: 进入Preferences -> Settings-User ,添加 "update_check": false 重启Sublime. 发现了什么 ...

  3. Round Numbers (排列组合)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7558   Accepted: 2596 Description The c ...

  4. 【转】Java删除文件夹和文件

    原文网址:http://kxjhlele.iteye.com/blog/323657 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下 ...

  5. 算法优化(动态规划):COGS 2009. [USACO Mar09]餐厅清扫

    2009. [USACO Mar09]餐厅清扫 ★★☆   输入文件:cleanup.in   输出文件:cleanup.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] ...

  6. python 解析 配置文件

    资料: https://docs.python.org/3/library/configparser.html 环境 python 3.4.4 RawConfigParser方式 example.cf ...

  7. redis 集群

    http://www.linuxidc.com/Linux/2015-08/121845.htm Redis3.0版本之后支持Cluster,具体介绍redis集群我就不多说,了解请看redis中文简 ...

  8. OPENCV第一篇

    了解过之前老版本OpenCV的童鞋们都应该清楚,对于OpenCV1.0时代的基于 C 语言接口而建的图像存储格式IplImage*,如果在退出前忘记release掉的话,就会照成内存泄露.而且用起来超 ...

  9. 开始我的 JNI 入门吧

    JNI (java native interface)   java本地开发接口(一句话 : 就是1个 adapter). JNI  是一个协议  -   是用来让   java代码和C,C++ 代码 ...

  10. hash定义

    * 若结构中存在关键字和K相等的记录,则必定存储在f(K)的位置上.由此,不需比较便可直接取得所查记录.这个对应关系f称为 散列函数(Hash function),按这个思想建立的表为 散列表. * ...