zoukankan      html  css  js  c++  java
  • asp.net 导入Excel表

    一、导入Excel的界面

    这个界面很简单,代码就不列出来了。
    二、导入的代码
    我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里。这里需要注意的是当程序在服务器运行时,要先把导入的文件上传到服务器上,否则不能导入,会出现莫名奇妙的错误,为了改这个错误当初弄了好久,希望大家不要走我的弯路啊。如果是在自己的机器上就不用上穿文件。
    第二部分是选择相应的表,然后将数据导入到表里面,这部分很简单。
    1、
    try
            
    {
                InputDataBLL input 
    = new InputDataBLL();
                
    this.Label1.Text = "";
                
    if (this.FileUpload1.HasFile)
                
    {
                   
    // string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim();
                    DataTable inputdt = new DataTable();
                    
    int len = this.FileUpload1.FileName.ToString().Trim().Length;
                    string path = "~/temp/upfile/"+this.FileUpload1 .FileName .ToString ().Trim();
                    path = Server.MapPath(path);
                    
    this.FileUpload1.SaveAs(path); //上传文件
                    inputdt = input.InputExcel(path, this.FileUpload1.FileName.ToString().Trim().Substring(0, len - 4),this.TextBox1.Text.Trim ());

                    
    if (Session["inputdt"!= null)
                        Session.Remove(
    "inputdt");
                    Session.Add(
    "inputdt", inputdt);
                    
    if (inputdt.Rows.Count > 0)
                    
    {
                        
    this.GridView1.DataSource = inputdt;
                        
    this.GridView1.DataBind();
                    }

                }

                
    else
                    
    throw new Exception("请选择导入表的路径");
            }

            
    catch (Exception ex)
            
    {
                Response.Write(
    "<script language='javascript'>alert('" + ex.Message + "');</script>");
            }

    导入的函数
     /// <summary>
        
    /// 导入数据到数据集中
        
    /// </summary>
        
    /// <param name="Path"></param>
        
    /// <param name="TableName"></param>
        
    /// <param name="tablename2">如果这个有就以他为表名,没有的话就以TableName</param>
        
    /// <returns></returns>

        public DataTable InputExcel(string Path,string TableName,string tablename2)
        
    {
            
    try
            
    {
                
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection conn 
    = new OleDbConnection(strConn);
                conn.Open();
                
    string strExcel = "";
                OleDbDataAdapter myCommand 
    = null;
                
    if (tablename2.Length > 0 && !tablename2.Equals(string.Empty))
                    TableName 
    = tablename2;
                strExcel 
    = "select * from [" + TableName + "$]";
                myCommand 
    = new OleDbDataAdapter(strExcel, strConn);
                DataTable dt 
    = new DataTable();
                myCommand.Fill(dt);
                conn.Close();
                
    return dt;
            }

            
    catch (Exception ex)
            
    {
                
    throw new Exception(ex.Message);
            }

        }
    二、将数据导入到数据库里
    这部分其实很简单,就是插入数据。
     if (this.DropDownList1.SelectedItem.Text.ToString().Equals("Material"))//导物料
                {
                    
    new StockBaseBLL().ISUserModel("物料导入", Response, Request, Server);
                    MaterialBLL material 
    = new MaterialBLL();
                  
         foreach (DataRow row in inputdt.Rows)//inputdt为刚刚从函数中返回的数据源
                    
    {
                        
    float MaterialPrice = 0.0f;
                        
    float MaterialTaxPrice = 0.0f;
                        
    float TaxRate = 0.0f;
                        
    float Moneys = 0.0f;
                        
    int temp=0;
                        
    if (row["单价"].ToString().Trim() != "")
                            MaterialPrice 
    = float.Parse(row["单价"].ToString().Trim());
                        
    if (row["含税单价"].ToString().Trim()!="")
                            MaterialTaxPrice
    =float.Parse(row["含税单价"].ToString().Trim());
                        
    if (row["税率"].ToString().Trim()!="")
                            TaxRate
    = float.Parse(row["税率"].ToString().Trim());
                        
    if (row["金额"].ToString().Trim()!="")
                            Moneys
    =float.Parse(row["金额"].ToString().Trim());

                        
    if (material.SelectMaterialsDynamic("MaterialID='" + row["物料长代码"].ToString() + "'""").Rows.Count <= 0//不存在,其实可以不要,因为编号是主键,如果相同则插不进去
                            temp = material.InsertMaterial(row["物料长代码"].ToString(), row["物料名称"].ToString(), row["单位"].ToString().Trim(), MaterialPrice, MaterialTaxPrice, TaxRate, Moneys, 0);
                        
    else
                            NotIntoID 
    += row["物料长代码"].ToString()+",";
                        
    if (temp > 0)
                                index 
    += temp;
                         temp 
    = 0;
                    }

                }
  • 相关阅读:
    【BZOJ4826】【HNOI2017】影魔(扫描线,单调栈)
    【BZOJ4540】【HNOI2016】序列(莫队)
    【NOIP2017】列队(Splay)
    ZJOI2018酱油记
    【BZOJ4828】【HNOI2017】大佬(动态规划)
    【NOIP2017】宝藏(状态压缩,动态规划)
    【HDU4336】Card Collector (动态规划,数学期望)
    【HDU4652】Dice(数学期望,动态规划)
    【BZOJ4945】【NOI2017】游戏(搜索,2-sat)
    【BZOJ3714】Kuglarz(最小生成树)
  • 原文地址:https://www.cnblogs.com/ringwang/p/991220.html
Copyright © 2011-2022 走看看