2016년 1월 20일 수요일

C# WebForm : 웹페이지를 간단하게 Excel 로 저장

업무용 프로그램을 만들다 보면 필연적으로 출력기능이 필요한 경우가 생긴다.
정석대로라면 웹프린트를 하던가 엑셀을 만들어서 다운로드 하게 하던가 해야 하지만, 규격화된 레포트가 아니라 그냥 단순히 데이터만 받을수 있으면 되는 경우라면, 간단히 현재 페이지의 내용을 엑셀 형식으로 다운 받게 하면 된다.

물론 이 경우는 엑셀 프로그램이 Html 형태의 데이터를 읽을수 있다는 편법을 이용하는 거라, 실제 엑셀 파일을 만들어 주는것은 아니라는 것을 염두에 두고 있어야 한다.


예를 들어 요런 페이지를 엑셀로 다운 받게 만들고 싶다면...
일단 버튼을 하나 만들어 주고 그 버튼 클릭시 이벤트에다...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class web_Tmp_year : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.ClearHeaders();
        string fileName = "파일명[" + DateTime.Today.ToString().Substring(0, 10) + "].xls";
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
        Response.Charset = "euc-kr";

        Button1.Visible = false;

        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        String convStr = Table1.ToString();
        
        Response.Write(convStr);
    }
}


요렇게 ....
이렇게 만든 페이지를 웹브라우져에서 보면...


이렇게 나오는데, 저 버튼을 클릭하면...


이렇게 파일이 다운로드 됨.
이걸 엑셀 프로그램으로 열어 보면...


이런 경고가 나타나지만, 그냥 무시하고 열면 된다. 그러면...


이렇게 웹페이지의 내용을 엑셀에서 열어 볼 수 있음.

... 근데... 사실...


다운받은 이 파일은... 텍스트 에디터로 열어 보면...


그냥 원래 Html 을 엑셀 확장자로 다운 받은것일 뿐임.
뭐... 그래도 사용하는데에는 별 지장 없음.