asp.net中EXCEL数据导入到数据库的方法

本文实例讲述了asp.net中EXCEL数据导入到数据库的方法。分享给大家供大家参考。具体分析如下:

excel是办公中非常常用的一个办公表格了,但我们在开发中通常会需要直接把excel数据快速导入到数据库中了,这里整理了一个asp.net中EXCEL数据导入到数据库的例子供各位参考学习。

注意:EXCEL中的第一行不能导入。
下面是源码:IntoExcel.aspx:

代码如下:

<%@ Page  AutoEventWireup="true" CodeFile="IntoExcel.aspx.cs" Inherits="study_IntoExcel" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.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

代码如下:

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 <strong><a href="http://www.jb51.net" title="sql" target="_blank">sql</a></strong>Str = "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;;//连接驱动
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的驱动程序,可以访问各种数据库  
 
数据库中的字段:

代码如下:

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更快。

希望本文所述对大家的asp.net程序设计有所帮助。

(0)

相关推荐

  • ASP.NET(C#)读取Excel的文件内容

    .xls格式       Office2003及以下版本 .xlsx格式 Office2007 及以上版本 .csv格式       以逗号分隔的字符串文本(可以将上述两种文件类型另存为此格式) 读取前两种格式和读取后一种格式会用两种不同的方法. 下面看程序:页面前台: 复制代码 代码如下: <div>       <%-- 文件上传控件  用于将要读取的文件上传 并通过此控件获取文件的信息--%>      <asp:FileUpload ID="fileSele

  • asp.net 读取并显示excel数据的实现代码

    我们的ASP页面将在远程服务器上,来读取我们的桌面Excel文件.首先,我们必须把它上传到远程服务器,然后retrive数据.因此,我们首先设计一个表格,上传到服务器.我们必须从文件retrive数据,再一次,所以我们将重新命名Excel,然后上传. 复制代码 代码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits=&q

  • asp.net导出EXCEL的功能代码

    复制代码 代码如下: //由gridviw导出为Excel public static void ToExcel(System.Web.UI.Control ctl) { HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls"); HttpContext.Current.Response.Charset = "UTF-8

  • ASP.NET操作EXCEL的总结篇

    公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出,考虑到导出耗时的问题我主要采用AJAX来做的,分别捕捉几个起止状态,给客户端提示3个状态:正在检索数据...--->准备导出数据...(只是从数据库成功取出,还没有读写excel文件)-->正在读写文件-->导出数据成功,当然如果哪一过程出错,都有对应的提示,只所以想到写这篇文章,主要是因

  • asp.net DataGridView导出到Excel的三个方法[亲测]

    #region DataGridView数据显示到Excel    /// <summary>     /// 打开Excel并将DataGridView控件中数据导出到Excel    /// </summary>     /// <param name="dgv">DataGridView对象 </param>     /// <param name="isShowExcle">是否显示Excel界面 

  • ASP.NET之Excel下载模板、导入、导出操作

    本文介绍了ASP.NET下Excel下载模板.导入.导出操作,供大家参考,具体内容如下 1.下载模板功能 protected void btnDownload_Click(object sender, EventArgs e) { var path = Server.MapPath(("upfiles\\") + "test.xlt"); //upfiles-文件夹 test.xlt-文件 var name = "test.xlt"; try {

  • ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法

    "将页面显示的GridView中的数据,导出到Excel表格中"时遇到这样一个错误: C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致.具体提示如图: 解决办法:这里采用"修改注册表的方法"解决此问题,这并没从根上解决问题: 1.打开注册表编辑器方法:开始 -> 运行 -> 输入regedit -> 确定 2.找到注册表子项HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Exc

  • Asp.Net使用Npoi导入导出Excel的方法

    asp.net针对Excel文件的导入与导出是非常常见的功能之一.本文实例讲述了Asp.Net使用Npoi导入导出Excel的方法.分享给大家供大家参考之用.具体方法如下: 在使用Npoi导出Excel的时候,服务器可以不装任何office组件,一般在导出时用到Npoi导出Excel文件,所导Excel也符合规范,打开时也不会有任何文件损坏之类的提示.但是在做导入时还是使用OleDb的方式,这种方式的导入在服务器端似乎还是需要装office组件的. 一.Npoi导出/下载Excel 具体功能代码

  • asp.net使用npoi读取excel模板并导出下载详解

    为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机.Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123.导出时,如果字段内容以"-"或"="开头,Excel会把它当成公式进行,会报错.Excel会根据Excel文件前8行分

  • asp.net生成Excel并导出下载五种实现方法

    方法一 通过GridView(简评:方法比较简单,但是只适合生成格式简单的Excel,且无法保留VBA代码),页面无刷新 aspx.cs部分 复制代码 代码如下: using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.We

随机推荐