천객만래 [千客萬來] (It has an interminable succession of visitors)

'다운로드'에 해당되는 글 2건

  1. 2010.12.01 [개발/asp.net] DataSet 엑셀로 다운로드하기
  2. 2010.02.22 [IT/개발] 파워빌더 - FTP 사용하기


DataSet에 있는 내용을 엑셀로 다운로드 하기 위해서 DataGrid를 사용합니다.
DataGrid 클래스를 생성하여 DataSet을 바인딩한 다음 엑셀에 보여질 스타일등을 지정해준 다음
해당 웹페이지에 Response 하면 됩니다.

 

private void Page_Load(object sender, System.EventArgs e)
{

    // 엑셀로 만들 데이터를 DataSet에 채웁니다.
    DataSet dsResult = GetMemberList();  

 

    // DataGrid와 DataTable의 각 필드에 상응하는 BoundColumn을 만들어 ArrayList에 추가합니다.

    ArrayList arrColumn = new ArrayList();
    arrColumn.Add(CreateBoundColumn("MEMID", "아이디"));
    arrColumn.Add(CreateBoundColumn("MEMNAME", "이름"));
    arrColumn.Add(CreateBoundColumn

            ("JOINDATE", "가입일", "{0:yyyy/MM/dd}", HorizontalAlign.Center));
    arrColumn.Add(CreateBoundColumn

            ("MILEAGE", "포인트", "{0:###,##0}", HorizontalAlign.Center));

 

    string fileName = "members_" + DateTime.Now.ToString("yyyyMMdd") + ".xls";

    SaveAsExcel(dsResult, arrColumn, "회원리스트", fileName);
}

 

public void SaveAsExcel(DataSet dsResult, ArrayList columns, string subject, string fileName)
{

    // 다운로드시 사용할 파일명을 설정합니다.
    if(fileName.Equals(null) && fileName.Equals(""))
        fileName = DateTime.Now.ToString("yyyyMMdd")+".xls";

 

    System.Web.HttpContext.Current.Response.Buffer = true;

 

    // DataGrid를 생성합니다.

    DataGrid dgExcel = new DataGrid();
    dgExcel.ShowHeader = true;

    dgExcel.Caption =  subject;

 

    // DataGrid에 Header 텍스트를 추가합니다.
    dgExcel.AutoGenerateColumns = false;

    foreach(object column in columns)
        dgExcel.Columns.Add((BoundColumn)column);

 

   // DataGrid의 스타일을 지정합니다.

    dgExcel.HeaderStyle.BackColor = Color.FromName("powderblue");
    dgExcel.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    dgExcel.HeaderStyle.Height = 25;
    dgExcel.HeaderStyle.Font.Bold = true;

 

    // DataGrid에 DataSet의 내용을 채웁니다.

    dgExcel.DataSource = dsResult;
    dgExcel.DataBind();

 

    // DataGrid를 웹페이지에 쓰기 시작...

 

    System.Web.HttpContext.Current.Response.AddHeader
        ("Content-Disposition", string.Format("attachment;filename={0}", fileName));
    System.Web.HttpContext.Current.Response.ContentType = "application/unknown";
    // System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

 

    /////////////////////////////////////////////////////////////////////////////////////////////////
    ///  한글이 깨지는 경우 web.config의 globalization을 euc-kr로 바꿔주세요.
    /// <globalization requestEncoding="euc-kr" responseEncoding="euc-kr" />
    /////////////////////////////////////////////////////////////////////////////////////////////////

    System.Web.HttpContext.Current.Response.Write
        ("<meta http-equiv=Content-Type content='text/html; charset=ks_c_5601-1987'>");

 

    dgExcel.EnableViewState = false;


    System.IO.StringWriter sWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(sWriter);

    dgExcel.RenderControl(htmlWriter);

 

    System.Web.HttpContext.Current.Response.Write(sWriter.ToString());
    System.Web.HttpContext.Current.Response.End();


    dgExcel.Dispose();
}

 

// DataGrid의 반복적인 컬럼 생성 작업을 하는 메서드입니다.

public BoundColumn CreateBoundColumn(string DataFieldValue, string HeaderTextValue)
{
    // Create a BoundColumn.
    BoundColumn column = new BoundColumn();

 

    // Set the properties of the BoundColumn.
    column.DataField = DataFieldValue;
    column.HeaderText = HeaderTextValue;
    return column;
}

 

public BoundColumn CreateBoundColumn

   (string DataFieldValue, string HeaderTextValue, string FormatValue, HorizontalAlign AlignValue)
{
  
  // Create a BoundColumn using the overloaded CreateBoundColumn method.
    BoundColumn column = CreateBoundColumn(DataFieldValue, HeaderTextValue);

 

    // Set the properties of the BoundColumn.
    column.DataFormatString = FormatValue;
    column.ItemStyle.HorizontalAlign = AlignValue;
    return column;
}




쌈꼬쪼려 소백촌닭
Posted by SB패밀리


파워빌더 11.5 버전 테스트


FTP서버에 파일을 Upload, Download, Delete, 목록가져오기 등을 구현하는 예제입니다.

해당 Zip파일을 풀면 ftp.dll과 이 dll을 파워빌더에서 API로 사용하는 방법이 설명되어 있는 파일, 그리고 이를 구현한 PB n.v.o가 PBL에 있습니다.

ftp.dll은 system32폴더 또는 파워빌더 실행파일이 있는 위치에 두시면
됩니다.


[ftp1.pbl]
------------------------------------------------------------------------
// FTP
n_ftp in_ftp

// FTP UPload

string is_server, is_user, is_pass, is_serverfilename, is_clientfilename


is_server = a_server
is_user = a_user
is_pass = a_pass
is_serverfilename = a_serverfilename
is_clientfilename = a_clientfilename

    // 1. FTP object 생성
    in_ftp    = create n_ftp 

    // 2. FTP Connect
    Int li_i
    li_i = in_ftp.FTPConnect(is_server, is_user, is_pass)

    if li_i <> 0 then
       MessageBox("오류", "FTP Server에 접속중 오류가 발생했습니다.", Exclamation!)
       destroy in_ftp
       return
    end if

    // 3. FTP Transfer
    Int li_rtn
    string s_server_file, s_client_file
    s_server_file = is_serverfilename //"c:\\test.txt"
    s_client_file = is_clientfilename //"/tmp/test"

    // 송신 put
    li_rtn = in_ftp.FTPputFile(s_client_file, s_server_file, 0)

   
    /* -ftp의 사용법------------------------------------------------------------
    FTPgetCurrentDir ( return string(blob) ) 
    FTPsetCurrentDirUp ()
    FTPsetCurrentDir ( "디렉토리")
    FTPfileList ( return string(blob) )
    FTPgetFile ( String REMOTE_FILE, String LOCAL_FILE, integer BINARY_OR_TEXT )
    FTPcreateDir ( String NEW_DIR )
    FTPdeleteFile ( String DEL_FILE )
    FTPdeleteDir ( String DEL_DIR )
    FTPrenameDir ( String CURR_DIR, String NEW_DIR )
    FTPputFile ( String LOCAL_FILE, String REMOTE_FILE, integer BINARY_OR_TEXT )
    FTPping ( String IPaddress )
    ------------------------------------------------------------------------- */   

    if li_rtn = 0 then
       //Transfer Success..
        MessageBox("안내", "파일전송 성공!")
    else
       //Transfer Failure..
       MessageBox("안내", "파일전송 실패!")
       return
    end if

    // 4. FTP Disconnect
    Int li_rtn2
    li_rtn2 = in_ftp.FTPDisconnect()
    if li_rtn2 <> 0 then
       MessageBox("오류", "FTP Disconnect를 하는 중에 오류가 발생했습니다.", Exclamation!)
       destroy in_ftp
       return
    end if

    // 5. FTP Close
    destroy in_ftp

------------------------------------------------------------------------------------------

출처 : 구글 검색
고맙게 잘 봤습니다.

Posted by SB패밀리