web 从Excel表格导入到sql数据库

前台代码: 

<table width="900" style="text-align: center; vertical-align: middle;" align="center" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td style="width: 90">
                店铺:
            </td>
            <td style="text-align: left; width: 180px">
                <asp:DropDownList ID="ddlSeller" runat="server">
                    <asp:ListItem Selected="True" Value="111">123</asp:ListItem>
                    <asp:ListItem Value="222">222</asp:ListItem>
                    <asp:ListItem Value="333">333</asp:ListItem>
                    <asp:ListItem Value="444">444</asp:ListItem>
                    <asp:ListItem Value="555">555</asp:ListItem>
                    <asp:ListItem Value="666">666</asp:ListItem>
                </asp:DropDownList>
            </td>
           <td style="width: 140;text-align: right">
                工作表名称:
            </td>
            <td style="text-align: left; width: 180px">
                <asp:TextBox ID="txtSheet" runat="server" Width="120px" ForeColor="Blue"></asp:TextBox>
            </td>
            <td style="text-align: left; width: 180px">
                <asp:TextBox runat="server" ID="txtIemport" Visible="false" />
                <asp:FileUpload ID="FileUpload1" runat="server" />
            </td>
            <td style="text-align: left">
                <asp:Button runat="server" ID="btnImport" Text="导入" OnClick="btnImport_Click" />
            </td>
        </tr>
        <tr>
            <td colspan="6">
                <asp:GridView ID="gvImport" runat="server" Width="900">
                </asp:GridView>
            </td>
        </tr>
    </table>

后台代码: 

protected void btnImport_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        string fileName = Server.HtmlEncode(FileUpload1.FileName);
        string extension = System.IO.Path.GetExtension(fileName);
        if ((extension == ".xlsx") || (extension == ".xls"))
        {
            ExalToSql();
        }
    }
}



    private void ExalToSql()
    {
        string sheet = "";
        string path = Server.MapPath(FileUpload1.FileName);
        FileUpload1.PostedFile.SaveAs(path);//保存文件
        //string connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + path + ";Extended Properties =Excel 12.0;HDR=YES;IMEX=1;";
        string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";Extended Properties='Excel 8.0;'";
        //建立EXCEL的连接
        OleDbConnection objConn = new OleDbConnection(sConnectionString);
        int count = 0;//用来记录出错的条数

        try
        {
            if (string.IsNullOrWhiteSpace(txtSheet.Text))
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "startup", "<script>alert('请认真填写工作表名称,谢谢!!!');window.location='ImportSellerExamine.aspx'</script>");
            }
            else
            {
                sheet = txtSheet.Text.Trim();
            }

            string strCom = " SELECT * FROM [" + sheet + "$A1:E100] ";
            objConn.Open();
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, objConn);
            DataSet ds = new DataSet();
            myCommand.Fill(ds, "[" + sheet + "$]");
            DataTable dt = ds.Tables[0];
            string query = "select count(*) from CustomerServiceMonth where seller_id='" + ddlSeller.SelectedItem.Value + "'";
            int customercount = int.Parse(SQLDBHelper.GetSingle(query).ToString());
            if (customercount > 0)
            {
                string delete = "delete from Customer where seller_id='" + ddlSeller.SelectedItem.Value + "' and monthOfDate=" + DateTime.Now.Month;
                SQLDBHelper.ExecuteSql(delete);
            }

            foreach (DataRow myDrv in dt.Rows)
            {
                count++;
                if (!string.IsNullOrWhiteSpace(myDrv[1].ToString().Trim()))
                {
                    string sql = @"INSERT INTO Customer
                                ([ww_nick]
                                ,[ww_successRate]
                                ,[seller_id]
                                ,[ww_unitPrice]
                                ,[ww_sale]
                                ,[monthOfDate]
                                ,[modified]
                                ,[salrate])
                                VALUES
                                ('" + myDrv[0].ToString().Trim()
                                    + "','" + myDrv[1].ToString().Trim()
                                    + "','" + ddlSeller.SelectedItem.Value
                                    + "','" + myDrv[2].ToString().Trim()
                                    + "','" + myDrv[3].ToString().Trim()
                                    + "'," + DateTime.Now.Month
                                    + ",'" + DateTime.Now
                                    + "','" + myDrv[4].ToString().Trim() + "')";

                    SQLDBHelper.ExecuteSql(sql);
                }
            }
            gvImport.DataSource = ds;
            gvImport.DataBind();
        }
        catch
        {
            Page.Response.Write("alert('第" + count.ToString() + "条数据出错!');");
        }
        finally
        {
            objConn.Close();//关闭EXCEL的连接
        }
    }

《编译原理》是计算机科学中一门极为重要的课程,主要探讨如何将高级程序设计语言转换成机器可执行的指令。清华大学的张素琴教授在这一领域有着深厚的学术造诣,其编译原理课后习题答案对于学习者而言是非常珍贵的资源。这份压缩文件详细解析了课程中所涉及的概念、理论和方法的实践应用,目的是帮助学生更好地理解编译器设计的核心内容。 编译原理的核心知识点主要包括以下几点: 词法分析:作为编译过程的首要环节,词法分析器会扫描源代码,识别出一个个称为“标记”(Token)的最小语法单位。通常借助正则表达式来定义各种标记的模式。 语法分析:基于词法分析产生的标记流,语法分析器依据文法规则构建语法树。上下文无关文法(CFG)是编译器设计中常用的一种形式化工具。 语义分析:这一步骤用于理解程序的意义,确保程序符合语言的语义规则。语义分析可分为静态语义分析和动态语义分析,前者主要检查类型匹配、变量声明等内容,后者则关注运行时的行为。 中间代码生成:编译器通常会生成一种高级的中间表示,如三地址码或抽象语法树,以便于后续的优化和目标代码生成。 代码优化:通过消除冗余计算、改进数据布局等方式提升程序的执行效率,同时不改变程序的语义。 目标代码生成:根据中间代码生成特定机器架构的目标代码,这一阶段需要考虑指令集体系结构、寄存器分配、跳转优化等问题。 链接:将编译后的模块进行合并,解决外部引用,最终形成一个可执行文件。 错误处理:在词法分析、语法分析和语义分析过程中,编译器需要能够检测并报告错误,例如语法错误、类型错误等。 张素琴教授的课后习题答案覆盖了上述所有核心知识点,并可能包含实际编程练习,比如实现简单的编译器或解释器,以及针对特定问题的解题策略。通过解答这些习题,学生可以加深对编译原理的理解,提升解决问题的能力,为今后参与编译器开发或软件工程实践奠定坚实的基础。这份资源不仅是学习编译原理的有力辅助材料,也是
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值