2014-04-14 3 views
1

MVC 5/부트 스트랩 응용 프로그램을 만들고 있습니다. 사용자가 테이블 데이터를 Excel로 보낼 수 있도록해야합니다. TableTools가 그렇게 할 수 있다는 것을 알고 있습니다. 그러나 나는 DataTables/TableTools를 다른 용도로 사용하지 않고 Excel로 내보내기를 원합니다. 나는 테이블 스타일을하기 위해 그것을 사용하고 싶지 않다. 나는 그것을 위해 부트 스트랩을 사용하고있다.jQuery/DataTables - Excel로 내보내기

그렇다면 이러한 목적으로 DataTables/TableTools를 사용할 수있는 방법이 있습니까? 또한 폼의 어딘가에 (기본적으로 TableTools 버튼 일 필요는 없음) 버튼을 놓을 수 있고, 클릭 할 때 Excel 내보내기를 할 수 있습니다. 이것이 가능한가?

답변

3

TableTools 플러그인이 DataTables 개체에서 작동하도록 설계되었으므로 가능성이 가장 높습니다. 개인적으로 DataTables를 사용하고 싶지 않다면이 시간을 조사하지 않고 ASP.NET MVC 5/Bootstrap 사이트에서 비슷한 기능을 구현 한 방법에 대한 개요를 공유 할 것입니다. 나는 (내 DataTable을의 추가 매개 변수를 전달하고이 예에서) 클릭 이벤트에 대한 기능을 추가 내보기 위해 스크립트 섹션에서

<button id="export" type="button">Export</button> 

:

단순히 내보기에 버튼을 배치

파일 ('GenerateCsv')와 '(DownloadCsv을 파일을 반환하는 FileStreamResult를 생성하기 위해 첫째 ActionResult : 파일 다운로드를 시작하기 위해 헤더를 처리하지 않습니다 아약스 호출로
$("#export").click(function (e) { 
var myTableSettings = dataTable.dataTableSettings[0]; 

$.ajax(
    { 
     url: "GenerateCsv", 
     type: "POST", 
     data: myTableSettings.oAjaxData, 
     success: function (data) { 
      document.location.href = 'DownloadCsv'; 
     } 
     error: function() {}    
    }); 
}); 

, 그것은 두 단계 접근 방식이 필요 ').

이 경우 CSV 파일을 생성하기 위해 LinqToCsv (http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library)을 사용했습니다. 나는 TableTools가 Excel이 아닌 실제 Excel 파일 (http://datatables.net/extensions/tabletools/buttons)이 인식하는 CSV 파일을 생성하므로 CSV 형식을 언급합니다.

처음 TableTools를 조사했을 때 다운로드 플러그인을 사용하여 전체 테이블 내보내기를 수행하고자 할 때 맞춤 매개 변수를 다시 바인딩하는 방법에 대한 문제가 발생했습니다.