vs2005中Excel 数据倒入SQL数据库

本文介绍了一个使用ASP.NET实现Excel数据导入的具体案例,包括页面布局、代码实现及数据库交互过程。示例展示了如何从Excel文件中读取数据并插入到SQL Server数据库中,同时实现了数据分页展示。

完整示例:

ImportDetail.aspx代码如下 :

 

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="ImportDetail.aspx.cs" Inherits="ExcelImportDetail._Default" %>

<!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>
    
<title>Excel Import </title>
</head>
<body>
    
<form runat="server">
        
<table width="100%">
            
<tr style="height: 100px">
            
</tr>
            
<tr align="center">
                
<td>
                    
<asp:GridView ID="GridView2" runat="server" OnPageIndexChanging="GridView2_PageIndexChanging"
                        AllowPaging
="true">
                        
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                        
<RowStyle BackColor="#fbffff" ForeColor="#333333" />
                        
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
                        
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" />
                        
<HeaderStyle BackColor="#5D96d5" Height="20px" Font-Bold="True" ForeColor="White" />
                    
</asp:GridView>
                
</td>
            
</tr>
            
<tr>
              
            
</tr>
        
</table>
    
</form>
</body>
</html>

ImportDetail.aspx.cs 代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace ExcelImportDetail
{
    
public partial class _Default : System.Web.UI.Page
    
{
        
private readonly string AddressBookConnString = System.Configuration.ConfigurationManager.ConnectionStrings["AddressBookConnectionString"].ToString();

        
protected void Page_Load(object sender, EventArgs e)
        
{
            
if (!IsPostBack)
            
{   
                InsertData();
                GridView2.DataSource 
= GetDataSet();
                GridView2.DataBind();
            }

        }

        
private DataSet CreateDataSet()
        
{
            
string strConn;
            strConn 
= "Provider=Microsoft.Jet.OLEDB.4.0;" +
            
"Data Source=d:/CollectedErrors.xls;" +
            
"Extended Properties=Excel 8.0;";
            OleDbConnection conn 
= new OleDbConnection(strConn);
            OleDbDataAdapter myCommand 
= new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
            DataSet myDataSet 
= new DataSet();
            myCommand.Fill(myDataSet);
            
return myDataSet;
        }

        
private void InsertData()
        
{
            SqlConnection Conn 
= new SqlConnection(AddressBookConnString);
            SqlDataAdapter Adapter 
= new SqlDataAdapter("Select * From part1_detail", Conn);
            SqlCommandBuilder builder 
= new SqlCommandBuilder(Adapter);
            builder.QuotePrefix 
= "[";
            builder.QuoteSuffix 
= "]";
            DataSet Tempdataset 
= CreateDataSet();
            
for (int i = 0; i < Tempdataset.Tables[0].Rows.Count; i++)
            
{
                Tempdataset.Tables[
0].Rows[i].SetAdded();
            }

            
try
            
{
                
// test builder commandtext  
              string tmp = builder.GetUpdateCommand().CommandText;
                
int Rows = Adapter.Update(Tempdataset);
                
if (Rows > 0)
                
{
                   ClientScript.RegisterStartupScript(
this.GetType(), "Import Message"," alert("" + Rows.ToString() + " Rows Import The Database !")",true);
                }

                
else
                
{

                    ClientScript.RegisterStartupScript(
this.GetType(), "Import Message"" alert("Import Data Failuer !")"true);
                }

            }

            
catch (Exception ex)
            
{
                
throw new Exception("Exception", ex);
            }
              
        }

        
private DataSet GetDataSet()
        
{
            DataSet ds 
= new DataSet();
            String cmdtext 
= " Select * FROM part1_detail ";
            SqlConnection Conn 
= new SqlConnection(AddressBookConnString);
            SqlDataAdapter Adapter 
= new SqlDataAdapter(cmdtext, Conn);  
            
try
            
{
                Adapter.Fill(ds);
            }

            
catch (Exception ex)
            
{
                
throw new Exception("Exception", ex);
            }

             
return ds;
        }


        
protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e)
        
{
            
this.GridView2.PageIndex = e.NewPageIndex;
            GridView2.DataSource 
= this.GetDataSet();
            GridView2.DataBind();
        }

    }

}

web.config 如下:

   <connectionStrings>
        
<add name="AddressBookConnectionString" connectionString="Data Source=C1030SQLEXPRESS;Initial Catalog=Test;Integrated Security=True"
            providerName
="System.Data.SqlClient" />
    
</connectionStrings>

数据库创建如下:

CREATE TABLE [dbo].[part1_detail](
    [LIST] [
float] NOT NULL,
    [Tracking_NO] [nvarchar](
255) COLLATE Chinese_PRC_CI_AS NULL,
    [DCN] [nvarchar](
255) COLLATE Chinese_PRC_CI_AS NULL,
    [Fields_with_Error] [nvarchar](
255) COLLATE Chinese_PRC_CI_AS NULL,
    [Error_Explanation] [nvarchar](
255) COLLATE Chinese_PRC_CI_AS NULL,
    [UCID] [
float] NULL,
    [DeDupe] [
float] NULL,
    [Validating] [
float] NULL,
    [keystroke_in_error] [
float] NULL,
    [No_Error] [
float] NULL,
    [Web_Entered] [
float] NULL,
    [Total_Keystrokes] [
float] NULL,
    [Batch_NO] [nvarchar](
255) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK_part1_detail] PRIMARY KEY CLUSTERED 
(
    [LIST] ASC
)WITH (IGNORE_DUP_KEY 
= OFF) ON [PRIMARY]
) ON [PRIMARY]

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值