您的位置:首页 > 数据库

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

2013-11-29 16:25 405 查看
本文为序列文章,总共分为以下四部分,本文为第一部分。

目    的:

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);
OleDbComm
c156
and 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: