ASP.Net实现动态下载Excel模板

需求分析:

需要实现根据登陆用户所在的部门,下载对应的Excel数据模板。例如,如果用户所在单位是信息所,显示下载的Excel模板为:

TestRow1 TestRow2 TestRow3 TestRow4 TestRow5 TestRow6 TestRow7 信息所
TestData TestData TestData TestData TestData TestData TestData TestData
...... ...... ...... ...... ...... ...... ...... ......

如果用户所在单位是规划所,显示的下载Excel模板为:

TestRow1 TestRow2 TestRow3 TestRow4 TestRow5 TestRow6 TestRow7 规划所
TestData TestData TestData TestData TestData TestData TestData TestData
...... ...... ...... ...... ...... ...... ...... ......

前7列数据是从数据库中读取的信息,最后一列为用户所要填报的数据,表头需要动态获取用户所在的部门,从而达到动态下载Excel模板的目的。

具体实现:

可根据具体的Excel模板需求,对模板进行重新定义。

        protected void GridView1_OnRowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Header)
            {
                if (GridView1.HeaderRow == null){
                    GridView1.Columns[0].HeaderText= "TestRow1";
                    GridView1.Columns[1].HeaderText = "TestRow2";
                    GridView1.Columns[2].HeaderText = "TestRow3";
                    GridView1.Columns[3].HeaderText = "TestRow4 ";
                    GridView1.Columns[4].HeaderText = "TestRow5 ";
                    GridView1.Columns[5].HeaderText = "TestRow6";
                    GridView1.Columns[6].HeaderText = "TestRow7";
                    GridView1.Columns[7].HeaderText = "TestRow8";
                }
               //根据登录用户所在的机构名称,动态定义Excel 单位填报的一列
                GridView1.Columns[9].HeaderText = Session["jg"].ToString();
               
            }

其中,获取GridView标题的语句如下:

GridView1.Columns[i].HeaderText

i为该GridView的列的数目,注意从0开始。获得了标题,就可以对表头进行动态重定义。进而实现动态生成Excel的功能。

本人小白,工作一年,一直在努力向各位大佬学习,一起冲冲冲!

Guess you like

Origin blog.csdn.net/weixin_40165004/article/details/120491052