当前位置:数据库 > SQLServer >>

C#数据库数据导入导出系列之一 ASP.NET Excel导入Sql Server数据库

 

 

在日常的项目中,Excel,Word,txt等格式的数据导入到数据库中是很常见的,我在这里做一下总结

 

这里将分为Asp.net导入Sql Server,Oracle数据库和WinForm导入Sql Server,Oracle数据库。

 

先看界面图

 

 

 

实现的基本思想:

 

1,先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹。

 

2,使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Excel文件当做一个数据库来读。在联系数据库语句中,Data Source就是该文件在服务器上得物理路径

 

3,将第二步中读出的数据以DataTable对象返回。

 

4,遍历DataTable对象,然后到Sql Server数据库中查询,是否存在该条数据。如果存在,可以做更新,或者不做处理;如果不存在,则插入数据。

 

注意:在遍历DataTable的时候,可是使用dt.Rows[i]["Name"].ToString();Name为Name列的表头,所以Excel中列的顺序就无关紧要了。当然,前提是你知道Excel里列中各表头的名字。如果Excel中列的顺序固定,即可按下面代码中的方式进行。

 

添加的引用:

 

 

using System; 

using System.Data; 

using System.Data.OleDb; 

using System.Data.SqlClient; 

using System.IO; 

using System.Text; 

using System.Web; 

using System.Web.UI; 

 

 

代码:

 

 

private DataTable  xsldata() 

        { 

           if(fuload.FileName == "") 

            { 

                lbmsg.Text = "请选择文件"; 

                return null; 

            } 

            string fileExtenSion; 

            fileExtenSion = Path.GetExtension(fuload.FileName); 

            if(fileExtenSion.ToLower() != ".xls" && fileExtenSion.ToLower() != ".xlsx") 

            { 

                lbmsg.Text = "上传的文件格式不正确"; 

                return null; 

            } 

            try 

            { 

                string FileName = "App_Data/" + Path.GetFileName(fuload.FileName); 

                if(File.Exists(Server.MapPath(FileName))) 

                { 

                    File.Delete(Server.MapPath(FileName)); 

                } 

                fuload.SaveAs(Server.MapPath(FileName)); 

                //HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES 

                string connstr2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(FileName) + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; 

                string connstr2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(FileName) + ";Extended Properties=\"Excel 12.0;HDR=YES\""; 

                OleDbConnection conn; 

                if(fileExtenSion.ToLower() == ".xls") 

                { 

                    conn = new OleDbConnection(connstr2003); 

                } 

                else 

                { 

                    conn = new OleDbConnection(connstr2007); 

                } 

                conn.Open(); 

                string sql = "select * from [Sheet1$]"; 

                OleDbCommand cmd = new OleDbCommand(sql, conn); 

                DataTable dt = new DataTable(); 

                OleDbDataReader sdr = cmd.ExecuteReader(); 

 

                dt.Load(sdr); 

                sdr.Close(); 

                conn.Close(); 

                //删除服务器里上传的文件 

                if(File.Exists(Server.MapPath(FileName))) 

                { 

                    File.Delete(Server.MapPath(FileName)); 

                } 

                return dt; 

            } 

&nbs

补充:软件开发 , C# ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,