2013-08-30 3 views
1

jQuery DataTable을 서버 측 구현으로 변경하여 정상적으로 작동합니다. 이제 XLS를 다운로드 할 수있는 기능을 추가하고 싶습니다. 비 서버 측 테이블에 대한 내장 된 csv 내보내기와 유사합니다.ASP.NET에서 서버 측 DataTable XLS 다운로드

$(document).ready(function() { 
    $('#example').dataTable({ 
     "sDom": 'T<"clear">lfrtip', 
     "oTableTools": { 
      "aButtons": [ { 
       "sExtends": "download", 
       "sButtonText": "Download XLS", 
       "sUrl": "/generate_xls.php" 
      } ] 
     } 
    }); 

질문 : 나는이 비슷한을

  1. 어떻게 PHP를 사용하지 않고도 내 .NET 응용 프로그램에서 파일을 다운로드합니까?

  2. xls 또는 csv 파일에 대한 내 테이블 데이터를 모두 얻으려면 어떻게해야합니까? 분명히 그들은 서버에 위치하므로 초기 프론트 엔드 구현과 똑같지는 않습니다.

유용한 링크 나 도움말을 자유롭게 제공해주세요. 감사!

답변

0

좋아, 그래서 나는 (다른 대답의 도움으로) 나 자신을 알아낼 수 있었다. 기본적으로 컨트롤러 동작을 가리 키도록 "sURL"을 설정하고 컨트롤러는 다음과 같이 CSV 파일을 생성하고 다운로드했습니다.

public ActionResult AccountsExportCSV() 
    { 
     MemoryStream output = new MemoryStream(); 
     StreamWriter writer = new StreamWriter(output); 
     load_repo(); 
     var accounts = _repo.GetAllAccounts(); 

     writer.Write("Email"); 
     writer.Write(","); 
     writer.Write("Full Name"); 
     writer.Write(","); 
     writer.Write("Phone"); 
     writer.Write(","); 
     writer.Write("Points"); 
     writer.Write(","); 
     writer.Write("Date Added"); 
     writer.Write(","); 
     writer.Write("Last Sync"); 
     writer.Write(","); 
     writer.Write("User Type"); 
     writer.WriteLine(); 

     int userType = 0; 

     foreach (Account account in accounts) 
     { 
      writer.Write(account.Email); 
      writer.Write(","); 
      writer.Write(account.FullName); 
      writer.Write(","); 
      writer.Write(account.Phone); 
      writer.Write(","); 
      writer.Write(account.Points); 
      writer.Write(","); 
      writer.Write(account.AddDate); 
      writer.Write(","); 
      writer.Write(account.LastDate); 
      writer.Write(","); 
      userType = Convert.ToInt32(account.UserType); 
      switch (userType) 
      { 
       case 0: 
        writer.Write("Unknown"); 
        break; 
       case 1: 
        writer.Write("User"); 
        break; 
       case 10: 
        writer.Write("Support"); 
        break; 
       case 20: 
        writer.Write("Manager"); 
        break; 
       case 30: 
        writer.Write("Admin"); 
        break; 
       case 40: 
        writer.Write("Developer"); 
        break; 
      } 
      writer.WriteLine(); 
     } 

     writer.Flush(); 
     output.Position = 0; 

     return File(output, "text/comma-seperated-values", "accounts.csv"); 
    } 
관련 문제