asp.net/c#代码实现excel to mssql数据导入

来源:互联网 发布:oecd投入产出数据库 编辑:程序博客网 时间:2024/05/17 02:44

做网站项目时,可能会遇到将excel文件中的数据导入至sql server数据库的需求,把excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连接的sql server数据库即可,技术上没有什么难度。

     但是需要考虑的一个问题是,系统安装的环境一般是专用sql server服务器+web服务器+客户端,而excel文件往往在客户端导入,如果直接使用sql语句读取的话,由于sql在web服务器上运行,不能读取到客户端的excel地址,就会出错了。

     既然知道了错误的原因,解决方案也就有了:

1、把客户端的excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;

2、使用OleDb+sql语句读取web服务器上的excel文件

3、将读取的数据写入到sql server 数据库

4、将web服务器上的临时excel删除

部分代码如下:

 

protected void btnInput_Click(object sender, EventArgs e)
    {
        if (File1.PostedFile.FileName.ToString() == "")
        {
            MessageBox.Show(this, "请添加Excel表格!");
            return;
        }
        string filePath1 = File1.PostedFile.FileName.ToString();
        string fileExe = File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf("."));//扩展名

        if (fileExe != ".xls")
        {
            MessageBox.Show(this, "文件非Excel表格式!");
            return;
        }
        else
        {
            //string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("//"));
            //FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload//") + filename);//上传文件

            //string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("fileupload//") + filename + ";Extended Properties=Excel 8.0";
            //string sqlin = "SELECT * FROM [Sheet2$]";
            //OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
            //OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
            //DataSet dsin = new DataSet();
            //adapterin.Fill(dsin);
            //DataTable dtin = dsin.Tables[0];//连接并读取excel数据
           
            string fileName = this.File1.FileName.ToString().Trim();
            FileInfo filePath = new FileInfo(this.Server.MapPath("./../../UpLoadFolder/Excel/").Trim() + fileName);
            this.File1.SaveAs(filePath.ToString().Trim());

            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
            OleDbConnection myConn = new OleDbConnection(strCon);
            myConn.Open();
            System.Data.DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);

            string tableName = schemaTable.Rows[0][2].ToString().Trim(new char[] { '$', '/'' });
            OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [" + tableName + "$]", myConn);
            DataSet DataSet = new DataSet();
            adp.Fill(DataSet);
            DataTable DateTable = DataSet.Tables[0];

            for (int i = 0; i < DateTable.Rows.Count; i++)
            {
                Sql_SaveFromExcel(DateTable.Rows[i][0].ToString(), DateTable.Rows[i][1].ToString(), DateTable.Rows[i][2].ToString());
            }
            myConn.Close();
            File.Delete(filePath.ToString().Trim());
            Response.Redirect(list_url);
        }
    }

 

 

 

原创粉丝点击