GridView를 excel 보조 클래스로 내보내기
class GridViewExportUtil
{
///
///
///
///
///
public static void Export(string fileName, GridView gv, ArrayList Excludedcolumns)
{
//Columns' index arraylist (removeColumnslistIndex) of GridView gv
if (Excludedcolumns != null)
{
for (int j = 0; j < Excludedcolumns.Count; j++)
{
if (gv.HeaderRow != null)
{
gv.HeaderRow.Cells[Convert.ToInt32(Excludedcolumns[j])].Visible = false;
}
for (int i = 0; i < gv.Rows.Count; i++)
{
gv.Rows[i].Cells[Convert.ToInt32(Excludedcolumns[j])].Visible = false;
}
if (gv.FooterRow != null)
{
gv.FooterRow.Cells[Convert.ToInt32(Excludedcolumns[j])].Visible = false;
}
}
}
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "Utf-8";
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
HttpContext.Current.Response.ContentType = "application/ms-excel";
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
//Create a table to contain the grid
Table table = new Table();
table.GridLines = GridLines.Both;
//include the gridline settings
//table.GridLines = gv.GridLines;
//add the header row to the table
if (gv.HeaderRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
table.Rows.Add(gv.HeaderRow);
}
//add each of the data rows to the table
foreach (GridViewRow row in gv.Rows)
{
GridViewExportUtil.PrepareControlForExport(row);
table.Rows.Add(row);
}
//add the footer row to the table
if (gv.FooterRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
table.Rows.Add(gv.FooterRow);
}
//render the table into the htmlwriter
table.RenderControl(htw);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
//render the htmlwriter into the response
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}
}
}
///
/// Replace any of the contained controls with literals
///
///
private static void PrepareControlForExport(Control control)
{
for (int i = 0; i < control.Controls.Count; i++)
{
Control current = control.Controls[i];
if (current is LinkButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
}
else if (current is ImageButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
}
else if (current is HyperLink)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
}
else if (current is DropDownList)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
}
else if (current is CheckBox)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
}
else if (current is Menu)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as Menu).SelectedValue.ToString()));
}
else if (current is Microsoft.SharePoint.WebControls.Menu)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as Microsoft.SharePoint.WebControls.Menu).Text));
}
if (current.HasControls())
{
GridViewExportUtil.PrepareControlForExport(current);
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CI/CDShareGate 응용 프로그램을 사용하면 작업 예약이 가능하므로 업무 시간 외에 마이그레이션이 실행됩니다. 한 단계 더 나아가 Azure Pipelines를 사용하여 자동화하기로 결정했습니다. ShareGate는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.