ASP.NET导入Excel到数据库(SQL)

ASP.NET导入Excel到数据库(SQL)

       在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?

企业或者单位在从无信息化到信息化的一个转变过程。

       在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算的作用,那么当企业或单位实施信息化之后必然会将原有数据导入到系统中去存储与分析。那么作为程序员就必然面临一个将数据导入数据库的功能,下面针对此类情况作如下概述。

在ASP.NET的B/S架构下,去导入Excel。

举例来说:

我们需要导入员工信息表到数据库中。Excel格式如下:

 

那么在我们了解了这个之后,下面就是在ASP.NET中通过button来触发导入事件的发生。

protected void btnChange_Click(object sender, EventArgs e)

        {

            UserInfoClass tClass = (UserInfoClass)Session["UserInfo"];

            string tLanguageType = tClass.Language;

//获取文件路径

            string filePath = this.file1.PostedFile.FileName;

            if (filePath != "")

            {

                if (filePath.Contains("xls"))//判断文件是否存在

                {

                    InputExcel(filePath);

                }

                else

                {

                    MessageBox.Show("请检查您选择的文件是否为Excel文件!谢谢!");

                }

            }

            else

            {

                MessageBox.Show("请先选择导入文件后,再执行导入!谢谢!");

            }

        }

 

        private void InputExcel(string pPath)

        {

            string conn = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + pPath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

            OleDbConnection oleCon = new OleDbConnection(conn);

            oleCon.Open();

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

            OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, oleCon);

            DataSet ds = new DataSet();

            mycommand.Fill(ds, "[Sheet1$]");

            oleCon.Close();

            int count = ds.Tables["[Sheet1$]"].Rows.Count;

            for (int i = 0; i < count; i++)

            {

                string tUserID, tUserName, tDept, tEmail, tLeader, tAngent;

                tUserID = ds.Tables["[Sheet1$]"].Rows[i]["員工代號"].ToString().Trim();

                tUserName = ds.Tables["[Sheet1$]"].Rows[i]["員工姓名"].ToString().Trim();

                tDept = ds.Tables["[Sheet1$]"].Rows[i]["所屬部門代號"].ToString().Trim();

                tEmail= ds.Tables["[Sheet1$]"].Rows[i]["E-Mail Address"].ToString().Trim();

                tLeader = ds.Tables["[Sheet1$]"].Rows[i]["直属主管"].ToString().Trim();

                tAngent = ds.Tables["[Sheet1$]"].Rows[i]["代理人"].ToString().Trim();

                string excelsql = "insert into " + this.UserInfo.Company + "..[resak] (resak001, resak002, resak015,resak005,resak013,resak009) values ('" + tUserID + "','" + tUserName + "','" + tDept + "','" + tEmail + "','" + tLeader + "','" + tAngent + "')";

                DBCommand cmd = DscDBData.GetDataDBCommand();

                cmd.ExeNonQuery(excelsql);

            }

        }

当然此部分内容拿过来要稍作修改,比如最后的执行Insert语句的部分,等内容。

上面完成了ASP.NET下导入Excel到数据库的功能。

接下来如果你希望直接将Excel在SQL语句中导入到数据库,实现方式如下:

SELECT * INTO PURTC

FROM   OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:/12.xls',sheet1$)

注意将Excel中的栏位与表中栏位对应Ok的话,即可!

 

至于导出Excel就比较更多了,在我的之前的文章中也有论述。



/// <summary>
        /// 取cvs文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static DataSet subImportCsv_Dataset(string filePath, string fileName)
        {
            string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
            strConn += filePath;//这个地方只需要目录就可以了                                                      
            strConn += ";Extensions=asc,csv,tab,txt;";
            OdbcConnection objConn = new OdbcConnection(strConn);
            DataSet ds = new DataSet();
            try
            {
                string strSQL = "select * from " + fileName;//文件名,不要带目录
                OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
                da.Fill(ds);

            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ds;
        }

        /// <summary>
        /// 取excel文件
        /// </summary>
        /// <param name="strExcelFileName"></param>
        /// <param name="strSheetName"></param>
        /// <returns></returns>
        public static DataSet ExcelToDataTable(string strExcelFileName, string strSheetName)
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties=Excel 5.0;";
            string strExcel = string.Format("select * from [{0}$]", strSheetName);
            DataSet ds = new DataSet();
            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                conn.Open();
                OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
                adapter.Fill(ds, strSheetName);
                conn.Close();
            }
            return ds;
        }

分类: C#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值