需求分析:
需要实现根据登陆用户所在的部门,下载对应的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的功能。
本人小白,工作一年,一直在努力向各位大佬学习,一起冲冲冲!