在项目中经常要用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. poj2594

    特殊的最小路径覆盖回顾一下经典的最小路径覆盖问题是每个点都恰好被一条路径覆盖我们把有向无环图的点拆成i,i',对于原图中边i--->j,连边i-->j'做最大匹配,答案是原图点数-最大匹配 ...

  2. (转载)PCNTL函数族--PHP多进程编程

    (转载)http://www.cnblogs.com/zox2011/archive/2013/02/19/2917448.html php有一组进程控制函数,使得php能在*nix系统中实现跟c一样 ...

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

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

  4. Unicode 字符集及UTF-8 UTF-16编码

    很久以前发在他处的一篇博文,今天翻出来重新整理了一下 Unicode 字符集 共分为 17 个平面(plane), 分别对应 U+xx0000 - U+xxFFFF 的 code points, 其中 ...

  5. lightoj 1291 无向图边双联通+缩点统计叶节点

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

  6. hdu 1754 线段树模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 #include <cstdio> #include <cmath> # ...

  7. RabbitMQ-优先级(priority)队列/消息

    就像在日常生活中,事情有轻重缓急一样.我们对于需要处理的消息也有这样的需求. 例如重要的消息我要尽快的得到处理,当然我们可以给重要的消息开个“VIP通道”,但是VIP数量很多,并且VIP也分层次呢? ...

  8. 学习restful 架构

    越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...

  9. Demo_玩家移动(主要注意动画的设置)

    using UnityEngine; using System.Collections; public class NewPlayerMove : MonoBehaviour { private fl ...

  10. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...