注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

扶红星的博客

生活本无味,尝试的多了也便五味俱全了。

 
 
 

日志

 
 

程序开发中关于导入和导出Excel表格相关方法  

2013-07-03 12:31:37|  分类: 知识梳理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、导入Excel表格

protected void btnStockLead_Click(object sender, EventArgs e)//触发按钮事件,执行导入操作
    {
        string fileName = fileUpload.PostedFile.FileName.Substring(fileUpload.PostedFile.FileName.LastIndexOf("\\") + 1);//获取文件名
        string suffix = fileName.Substring(fileName.LastIndexOf(".") + 1);//取后缀

        if (fileUpload.HasFile)//判断当前是否有选取文件
        {
            if (suffix == "xlsx")
            {
             DataView myView = ExcelImport(fileName);

                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["C6ConnectionString"].ConnectionString);//SQL SERVER的数据库连接,这里举例以Sql Server为主,其余数据库以此类推
                SqlTransaction myTrans = null;
                int count = 0;//用来记录导入时出错的条数
                try
                {
                    SqlCommand cmd = new SqlCommand(null, conn);
                    conn.Open();
                    myTrans = conn.BeginTransaction();
                    cmd.Transaction = myTrans;

                    cmd.CommandText = "delete from 基础表";
                    cmd.ExecuteNonQuery();//首先执行清除表内容操作
                    foreach (DataRowView myDrv in myView)
                    {
                        if (!string.IsNullOrEmpty(myDrv.Row[0].ToString()))
                        {
                            count++;
                            if (string.IsNullOrEmpty(myDrv.Row[2].ToString()))
                            {
                                myDrv[2] = 0;
                            }
                            cmd.CommandText = string.Format("insert into 基 础表(编号,次品结存数,仓库结存数,截止到3月27号早9点的买家已付款等待发货数量,实际结存数,未完工产品,未裁数,裁片结余,机缝半成品,外发未 回厂数,后道数,合计,截止到3月27号早9点的等待买家付款的数量,减掉等待买家付款数,已定未到数,返修中的数量,可用数量,可销售天数,近七天总销 售量,日常日均销量,近七天日均销量,近30天总销售量,近一年总销售量,公司外发未回厂 数) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}')", myDrv[0], myDrv[1], myDrv[2], myDrv[3], myDrv[4], myDrv[5], myDrv[6], myDrv[7], myDrv[8], myDrv[9], myDrv[10], myDrv[11], myDrv[12], myDrv[13], myDrv[14], myDrv[15], myDrv[16], myDrv[17], myDrv[18], myDrv[19], myDrv[20], myDrv[21], myDrv[22], myDrv[23]);
                            cmd.ExecuteNonQuery();//逐行向表中插入数据,注意字段对应
                        }
                    }
                    myTrans.Commit();//提交
                    ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('导入成功!')</script>");
                }
                catch (Exception ex)
                {
                    myTrans.Rollback();//回滚
                    ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert(' 第" + count.ToString() + "条出错');</script>");
                }
                finally
                {
                    conn.Dispose();
                    conn.Close();//关闭数据库连接
                }
            }
            else
            {
                ClientScript.RegisterStartupScript(GetType(), "", "alert('请选择Excel文件!');", true);
            }
        }
        else
        {
            ClientScript.RegisterStartupScript(GetType(), "", "alert('请选择要导入的Excel!');", true);
        }
    }
    public DataView ExcelImport(string fileName) //建立Excel表链接,返回Excel表数据
    {
       //EXCEL 的连接串
        string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
        "Data Source=C:\\Documents and Settings\\Administrator\\桌面\\
" + fileName + ";" +
        "Extended Properties='Excel 8.0;IMEX=1';";//Excel 2007文件

        //string sConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" +
        "Data Source=C:\\Documents and Settings\\Administrator\\桌面\\" + fileName + ";" +
        "Extended Properties='Excel 8.0;IMEX=1';";//Excel 2003文件

        OleDbConnection objConn = new OleDbConnection(sConnectionString);//建立EXCEL的连接
        objConn.Open();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
        objAdapter1.SelectCommand = objCmdSelect;
        DataSet objDataset1 = new DataSet();
        objAdapter1.Fill(objDataset1, "XLData");
        DataTable dt = objDataset1.Tables[0];
        DataView myView = new DataView(dt);
        objConn.Close();//关闭EXCEL的连接
        return myView;
    }

二、导出Excel表格

public void CreateExcel( string FileName)
    {
        HttpResponse resp;
        resp = this.Response;
        resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        resp.ContentType = "application/ms-excel";
        resp.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
        string colHeaders = "", Is_item = "";
        int i = 0;
        //定义表对象与行对象,同时使用DataSet对其值进行初始化

        DataTable dt = new DataTable();//注意这里的数据源需要自己灵活改变
        DataRow[] myRow = table.Select("");
       //取得数据表各列标题,标题之间以\t分割,最后一个列标题后加回车符
        for (i = 0; i < table.Columns.Count; i++)
        {
            colHeaders += table.Columns[i].Caption.ToString().Trim() + "\t";
        }
        colHeaders += "\n";
        resp.Write(colHeaders);
       //逐行处理数据
        foreach (DataRow row in myRow)
        {
            //在当前行中,逐列取得数据,数据之间以\t分割,结束时加回车符\n
            for (i = 0; i < table.Columns.Count; i++)
            {
                Is_item += row[i].ToString().Trim().Replace("\r\n", "") + "\t";
            }
            Is_item += "\n";
            resp.Write(Is_item);
            Is_item = "";
        }
        resp.End();//写缓冲区中的数据到HTTP头文件中


//以下部分是实现将控件GridView中绑定的数据以Excel表格的形式导出

        HttpResponse resp;
        resp = page.Response;
        resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        resp.ContentType = "application/ms-excel";
         resp.AddHeader("Content-Disposition", "attachment; filename=" +  System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) +  ".xls"); 

        this.EnableViewState = false;

        StringWriter tw = new StringWriter();//将信息写入字符串
        HtmlTextWriter hw = new HtmlTextWriter(tw);//将文本写入输出流
        GridView1.AllowPaging = false;//不允许分页
        BindGridview();//绑定数据源,这里需要自己灵活变动
        GridView1.RenderControl(hw);//将内容输入到所提供的HtmlTextWriter对象中
        Response.Write(tw.ToString());
        Response.End();    
    }
  评论这张
 
阅读(200)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017