zoukankan      html  css  js  c++  java
  • EXCEL导入GridView,然后再汇入数据库.

    近日项目中有一个多笔料号要输入,我做了一个用javascript复制输入框的功能,可以输入多笔料号。
    但是使用者反馈,料号太多,可能几百个料号在EXCEL文件里,这样输入很慢,需要增加功能。于是想到了SQLSERVER导入EXCEL的功能。
    declare @strExcelName varchar(50)
    set @strExcelName='c:\sl.xls'
    exec('select * into ##tmp from openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=No;IMEX=1;DATABASE='+@strExcelName+''',[Sheet1$]) ')
    select * from ##tmp

    这样是可以导入数据,但是问题来了。我的数据库服务器和运行程序服务器不在同一服务器,无法导入(可能有方法,但是项目紧,没时间去探索),于是想到另外一个方法:先上传EXCEL文件,然后读入DATASET放入GridView,然后从GridView提交到数据库,这样就没有问题。
    文件上传控件:<input id="myFile" runat="server" type="file" />
    Form里不需要enctype="multipart/form-data"

    文件上传代码:
                if (myFile.PostedFile.FileName != "")
                
    {
                    
    //上传文件的绝对路径
                    string sFile = myFile.PostedFile.FileName;
                    
    //获取文件全名
                    sFile = sFile.Substring(sFile.LastIndexOf("\\"+ 1);
                    
    //获取后缀名
                    sFile = sFile.Substring(sFile.LastIndexOf("."));
                    
    if (sFile.ToLower() != ".xls")
                    
    {
                        Response.Write(
    "请选择Excel文件!");
                        Response.End();
                    }

                    
    //为了防止重名,获得日期为文件名年月日时分秒毫秒
                    string datatime = System.DateTime.Now.ToString("yyyMMddHHmmssffff");
                    
    //上传后文件的新名
                    sFile = datatime + sFile;
                    
    //AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
                    
    //sPath 获取上传后的路径
                    string sPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ExcelFiles\\" + sFile;
                    
    //上传文件
                    myFile.PostedFile.SaveAs(sPath);
                    
    this.myGridView.DataSource = GetExcelContent(sPath);
                    
    this.myGridView.DataBind();
                }

    读取EXCEL到DATASET代码:
            private DataSet GetExcelContent(string filepath)
            
    {
                
    string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
                System.Data.OleDb.OleDbConnection myConn 
    = new System.Data.OleDb.OleDbConnection(strCon);
                
    string strCom = "SELECT F1 as resno,F2 as resname FROM [Sheet1$]";
                myConn.Open();
                System.Data.OleDb.OleDbDataAdapter myCommand 
    = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn);
                
    //创建一个DataSet对象   
                DataSet myDataSet = new DataSet();
                
    //得到自己的DataSet对象   
                myCommand.Fill(myDataSet);
                
    //关闭此数据链接   
                myConn.Close();
                
    return myDataSet;
            }

    最后是数据提交到数据库代码:
                string stresno = "";
                
    string stresname = "";
                
    foreach (GridViewRow row in this.myGridView.Rows)
                
    {
                    Label txtesno 
    = (Label)row.FindControl("labresno");
                    stresno 
    += txtesno.Text.ToString().Trim().Replace("'""''"+ ";";

                    Label txtresname 
    = (Label)row.FindControl("labresname");
                    stresname 
    += txtresname.Text.ToString().Trim().Replace("'""''"+ ";";
                }

                Response.Write(stresno 
    + "<br/>" + stresname);
                Response.End();
  • 相关阅读:
    5.3Python解析动态页面源代码
    5.2
    5.1selenium
    团队项目第一阶段冲刺第十天
    团队项目第一阶段冲刺第九天
    4.30线程和进程
    团队项目第一阶段冲刺第八天
    Mac下全局安装yarn,报错,没有访问权限解决办法
    Mac下的常用命令行
    I Term2常用快捷键
  • 原文地址:https://www.cnblogs.com/cnaspnet/p/863680.html
Copyright © 2011-2022 走看看