2016-03-23 16 views
0

私は何時間もインターネットを検索してきましたが、誰も現在の答えがないようです。私は、単純なテーブルをPARTIALビューで設定し、データベースからではなくhtmlテーブルのデータをエクスポートしたいとします。私はプラグインを使用するオプションもありません。私はJavaScript/Jqueryを通してこれを行うことに門戸を開いていますが、私はMVCにはかなり新しいので、インターネット上で他のソリューションを使い果たしてしまいました。ASP.NET MVC 5の部分ビューからHTMLテーブルをエクスポートするにはどうすればいいですか

アドレス帳の概要(一部)

<table class="table table-bordered table-responsive table-striped" id="tblAddressBook"> 
    <thead> 
     <tr> 
      <th> @Html.DisplayNameFor(model => model.Name)</th> 
      <th> @Html.DisplayNameFor(model => model.Address)</th> 
     <tr> 
    </thead> 
    <tbody> 
    @foreach (var item in Model) 
     { 
     <td class="text-right">@Html.DisplayFor(modelItem => item.Name)</td> 
     <td class="text-right">@Html.DisplayFor(modelItem => item.Address)</td> 
    } 
    </tbody> 
    <tfoot> 
     <td class="text-right>Model.Sum(model => model.TotalPeople))</td> 
     <td class="text-right>Model.Sum(model => model.Addresses))</td> 
    </tfoot> 

アドレス帳

<button type="button" class="btn btn-primary"> 
    Export 
</button> 
<div id="summaryAddressBook"> 
      @Html.Partial("AddressBook/_Summary", Model.Peoples) 
</div> 

アドレス帳コントローラ

public ActionResult Export() { 
    Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment;filename=ExcelFile.xls"); 
    return View(); 
} 
+0

あなたが任意のプラグインを使用することができない場合に使用しているので、あなたは(マイクロソフトオープンXML SDKを使用するよりもかなり多くの他の選択肢を持っていませんサーバー上のinteropは、すべてのコストをかけて回避すべきものです)。これは、コードを書いてバグのないように長い時間がかかり、難しい方法です。または、EPPlusのようなライブラリを使用して、数時間で完了させることができます。 –

+0

@AlexanderDerck時間を費やしても大丈夫ですが、Microsoft Open XML SDKを使用する以外の方法がいくつかあります。私はwebformsの実装を見てきましたがMVCのためのものは本当に有用です – cxwilson

答えて

0

個人的には、私はそれをどうやってやるかです。私はこのてのテーブルからデータを収集するためにjQueryのを使用します。

var tableData = {} 
$('#tblAddressBook > tbody > tr').each(function() {...add each row's columns to tableData...}); 

そして、MVCコントローラメソッドにAJAX呼び出しを作ります。ここをクリックしてください: Making a Simple Ajax call to controller in asp.net mvc

データがコントローラメソッドに追加されましたので、データでExcelファイルを作成することができます。できるだけ.xlsにエクスポートするサードパーティのライブラリが必要な場合は、.xlsではなく.csvファイルを使用します。

編集:別の方法として、あなたはここを参照してください、jqueryのをスキップして、まっすぐコントローラにテーブルのモデルを渡すことができます。Pass Table Value from View to Controller MVC

0

「アドレス帳の概要」(PartialView)の場合は、コードを変更するだけのテーブルが含まれています -

public ActionResult Export() { 
    Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment;filename=ExcelFile.xls"); 
    return View(); 
} 

: -

public ActionResult Export() 
{ 
    Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile.xls"); 
    return PartialView("Address_Book_Partial_View_FileName_Here_Without_Extension"); 
} 
関連する問題