本文为序列文章,总共分为以下四部分,本文为第一部分。
目 的:
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。
4.新建一个excel文件,不管是excel 2003还是2007,2013,测试皆可以。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>"); } } } }
我的excel数据为:
Student RoleNO Course Student1 ELS-21 BE Student2 ELS-22 BE Student3 ELS-23 BE Student4 ELS-24 BE Student5 ELS-25 BE Student6 ELS-26 BE Student7 ELS-27 BE
好啦,运行一下看看吧
参考资料:
How to import MS Excel data to SQL Server table using c#.net.pdf
本文是C#.NET实现Excel文件导入数据库的系列教程首篇,目标包括显示导入进度、分析Excel数据和返回导入结果。使用VS2010、SQL Server 2008 R2和Excel 2013。教程详细讲解了创建数据库、定义表结构,以及网页中添加FileUpload和Button控件来实现文件选择和导入操作。

3640

被折叠的 条评论
为什么被折叠?



