c#.net excel文件导入到数据库 之一

本文是C#.NET实现Excel文件导入数据库的系列教程首篇,目标包括显示导入进度、分析Excel数据和返回导入结果。使用VS2010、SQL Server 2008 R2和Excel 2013。教程详细讲解了创建数据库、定义表结构,以及网页中添加FileUpload和Button控件来实现文件选择和导入操作。

本文为序列文章,总共分为以下四部分,本文为第一部分。


目    的:

1. excel文件导入到数据库;

2. 添加导入数据时间进度条,实时动态显示;

3. 对excel文件进行分析,显示本excel文件存在多少条数据等信息;

4. 返回导入的结果,如:有多少条数据导入成功,多少条失败。


语     言:

C#.net, sql


开发环境:

vs2010, sql server 2008 r2,,excel 2013


我们采用快速原型模型(Rapid Prototype Model)方法,所以第一步的目的即是能从网页导入数据。我们先看看第一步完成之后的结果,图1。


多对多

图1.第一步的最终界面显示

在图1中,我们选择文件,然后点击导入,即可。当然这个界面实在有点丑,没办法,大家忍一下。

现在详细解释如何导入数据,一步一步的来。


1.建立数据库


首先我们建立一个数据库,名字为ExcelImport,这个就不用解释了吧!

其次在ExcelImport下建立表,表名为tStudent。代码如下:

CREATE    TABLE  tStudent   
(     
Student VARCHAR(64),     

RoleNO  VARCHAR(16),      

Course  VARCHAR(32),    

)

2.建立一个c#.net网站项目,新建一个网页,如图,选择红方框内的,然后取你一个你喜爱的名字吧,比如我的就是index.aspx。

3.在第二步中的页面中添加两个控件,一个FileUpload,用作文件选择之用;另一个为Button,以作数据输入之用,并添加鼠标事件onclick="Button1Click" ,本网页的代码为:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="ExcelToSql.index" %>

<!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 runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID = "FileUpload1" runat = "server" />
        <asp:Button ID="Button1" runat="server" onclick="Button1Click" Text="导入" />
        
    </div>
    </form>
</body>
</html>

鼠标事件代码(全部),注释很详细:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data.SqlClient;

namespace ExcelToSql
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1Click(object sender, EventArgs e)
        {
            //取得绝对路径
            string path = Server.MapPath(FileUpload1.PostedFile.FileName);           

            //判断是否选择了文件
            if (FileUpload1.HasFile)
            {
                ImportDataFromExcel(path);
            }
            else
            {
                //弹出提示框
                Response.Write( "<script>alert('亲,先选择文件!')</script>");
            }
        }

        public void ImportDataFromExcel(string excelfilepath)
        {        
            //要插入数据的数据库中的表名,在第二步中建立的表
            string sqltable = "tStudent";

            // 从excel中选择要插入的表项
            string myexceldataquery = "select Student,RoleNO,Course from [Sheet1$]";
            
            try
            {
                //excel文件连接代码 
                string excelConnectionString = @"provider=microsoft.jet.oledb.4.0;data source=" + excelfilepath +
                ";extended properties=" + "\"excel 8.0;hdr=yes;\"";

                //数据库连接代码,其中server的.表示本机,其他的为用户名和密码
                string sqlConnectionString = "Server=.; User Id=sa; Pwd=sa1; database=ExcelImport; connection reset=false";
                
                ////删除之前插入的数据
                //string clearSql = "delete * from " + sqltable;
                //SqlConnection sqlConn = new SqlConnection(sqlConnectionString);
                //SqlCommand sqlCmd = new SqlCommand(clearSql, sqlConn);
                //sqlConn.Open();
                //sqlCmd.ExecuteNonQuery();
                //sqlConn.Close();

                //从excel中导入数据到database
                OleDbConnection oledbconn = new OleDbConnection(excelConnectionString);
                OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
                oledbconn.Open();
                OleDbDataReader dr = oledbcmd.ExecuteReader();
                SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlConnectionString);
                bulkcopy.DestinationTableName = sqltable;

                while (dr.Read())
                {
                    bulkcopy.WriteToServer(dr);
                }
                oledbconn.Close();
            }
            catch (Exception ex)
            {
                //出错信息显示
                Response.Write("<script>alert("+ex.ToString()+")</script>"); 
            }
        }
    }
}
4.新建一个excel文件,不管是excel 2003还是2007,2013,测试皆可以。

我的excel数据为:


Student RoleNOCourse
Student1 ELS-21BE
Student2 ELS-22BE
Student3ELS-23BE
Student4ELS-24BE
Student5 ELS-25BE
Student6 ELS-26BE
Student7 ELS-27BE




好啦,运行一下看看吧


参考资料:


How to import MS Excel data to SQL Server table using c#.net.pdf


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值