반응형
///<summary>
/// 데이타 테이블을 엑셀로 받아온다.
///</summary>
/// <param name="dt">원본 데이타 테이블.</param>
/// <param name="columns"> 원본 데이타 테이블의 컬럼들.</param>
/// <param name="newcolumns">보여질 테이블의 컬럼들.</param>
private static void DownExcel(System.Data.DataTable dt, string[] columns, string[] newcolumns)
{
DataGrid grid = new DataGrid();
System.Data.DataTable targetdt = new System.Data.DataTable();
for (int i = 0; i < columns.Length; i++)
{
System.Data.DataColumn column = new System.Data.DataColumn(newcolumns[i]);
targetdt.Columns.Add(column);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
object[] obj = new object[columns.Count()];
for (int j = 0; j < columns.Length; j++)
obj[j] = dt.Rows[i][columns[j]];
targetdt.Rows.Add(obj);
}
grid.DataSource = targetdt;
grid.DataBind();
System.Web.HttpResponse objResponse = System.Web.HttpContext.Current.Response;
objResponse.ClearContent();
objResponse.ClearHeaders();
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
grid.RenderControl(htmlWrite);
objResponse.ContentType = "application/vnd.msexcel";
objResponse.AddHeader("content", "text/html; charset=utf-8");
objResponse.AddHeader("content-disposition", "attachment; filename=SearchResults.xls");
objResponse.Write("");
objResponse.Write(stringWrite.ToString());
objResponse.Flush();
objResponse.Close();
objResponse.End();
}
// 사용법
void btn_ok_Click(object sender, EventArgs e)
{
string[] columns = { "title", "filename", "view_count", "blogurl" }; // 기존의 컬럼명
string[] newcolumns = { "제목", "파일명", "조회수", "블로그주소"}; // 새로운 컬럼명
System.Data.DataTable dt = ds.Tables[1]; // 데이타 테이블
DownExcel(dt, columns, newcolumns);
}
반응형
'코딩정보 > C#' 카테고리의 다른 글
[C#]MX Component V4를 이용한 통신 (0) | 2019.06.12 |
---|---|
[C#] 미쯔비시 PLC와 통신하기 위한 GX Works2설정 (0) | 2019.06.12 |
[C#] 오라클 컨넥션 만들기!! (0) | 2019.06.12 |
[C#] C#으로 MS차트 작성하기 (0) | 2019.06.11 |
[C#] QR코드 생성 해보기!! (1) | 2019.06.11 |