Fala galera, estou precisando criar um relatório em excel com dados contido no gridview, porém esse gridview eu tive que deixar o header com show=false, pois precisei fazer uns merges nele com o RownDataBound.
Só que quando vou exportar para excel, os dados do gridview vem se o nome da coluna porque o header esta com show = false;
Alguém poderia me ajudar a colocar o nome dessas colunas ?]]Abaixo o código que uso para gerar o excel:
protected void btnGenerateExcell_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
foreach (RepeaterItem item in rptData.Items)
{
GridView gvDt = (GridView)item.FindControl("gvdata");
Label lblService = (Label)item.FindControl("lblService");
lblService.ForeColor = System.Drawing.Color.Black;
gvDt.ShowHeader = true;
//Altere a linha de cabeçalho de volta para a cor branca
gvDt.HeaderRow.Style.Add("background-color", "#000000");
gvDt.HeaderRow.Cells[0].Text = "dados";
gvDt.HeaderRow.Cells[0].Visible = true;
gvDt.HeaderRow.Cells[0].ForeColor = System.Drawing.Color.Black;
//Aplicar estilo de células individuais
gvDt.HeaderRow.Cells[0].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[1].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[2].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[3].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[4].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[5].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[6].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[7].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[8].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[9].Style.Add("background-color", "green");
gvDt.HeaderRow.Cells[10].Style.Add("background-color", "green");
for (int i = 0; i < gvDt.Rows.Count; i++)
{
GridViewRow row = gvDt.Rows[i];
//Alterar cor de volta para branco
row.BackColor = System.Drawing.Color.White;
//Aplicar estilo de texto para cada linha
row.Attributes.Add("class", "textmode");
//Aplicar estilo de células individuais do alternada Row
if (i % 2 != 0)
{
row.Cells[0].Style.Add("background-color", "#FFFFFF");
row.Cells[1].Style.Add("background-color", "#FFFFFF");
row.Cells[2].Style.Add("background-color", "#FFFFFF");
row.Cells[3].Style.Add("background-color", "#FFFFFF");
row.Cells[4].Style.Add("background-color", "#FFFFFF");
row.Cells[5].Style.Add("background-color", "#FFFFFF");
row.Cells[6].Style.Add("background-color", "#FFFFFF");
row.Cells[7].Style.Add("background-color", "#FFFFFF");
row.Cells[8].Style.Add("background-color", "#FFFFFF");
row.Cells[9].Style.Add("background-color", "#FFFFFF");
row.Cells[10].Style.Add("background-color", "#FFFFFF");
}
}
//gvDt.RenderControl(hw);
}
rptData.RenderControl(hw);
//estilo para formatar números para string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}