9

優れたものにエクスポートしたいかみそりのビューがあります。

私はそれを行うために私の見解でこの行を使用しています:

Response.AddHeader("Content-Type", "application/vnd.ms-excel");    

この行にコメントすると、自分の好きなスタイルでビューを見ることができます。コメントを外して要求すると、ブラウザからExcelファイルをダウンロードするように求められます。しかし、問題は、ファイルを開くと、このエラーが発生することです

Missing file c:\scrips\excel.css

これは、ページを表示するために使用しているcssです。

では、どうすればファイルをそのレイアウトとともに保存できますか?

4

2 に答える 2

15

おそらく、別の「EXPORT」ビューを作成する必要があります。これは、独自の controllerActionであり、Viewそれ自体であることを意味します。ビューは、結果の Excel ファイルの外観と同じである必要があります。スタンドアロンである必要があります。レイアウトなし、CSS を保持するスタイル タグ (スタイル/スクリプト/その他のリンクなし)。

簡単な例を次に示します。

Controller「ホーム」と呼ばれるものがあるとしましょう。

内部のアクションHomeController:

public ActionResult Export()
{
    Response.AddHeader("Content-Type", "application/vnd.ms-excel");
    return View();
}

ビュー(Home\Export.cshtml):

@{
    Layout = "";
}
<style type="text/css">
    body {font-family: Tahoma;}
    h2 {color:red}
    table {border:1px solid black; border-spacing:0}
    td {color:green; font-size:.8em; padding:5px}
    .heading {background:#ccc}
</style>

<h2>Test</h2>

<table>
    <tr class="heading">
        <th>Name</th>
        <th>Age</th>
    </tr>
    <tr>
        <td>Test1</td>
        <td>15</td>
    </tr>
    <tr>
        <td>Test2</td>
        <td>16</td>
    </tr>
</table>

このページを読み込むと、ダウンロード ボックスがポップアップ表示され、適切なスタイルで Excel で開きます。

于 2012-09-12T01:25:32.780 に答える
1

コントローラーには、Excel ファイルを含む Web ページではなく、実際に Excel ファイルを提供するアクションが必要です。コントローラーのアクションは次のようになります。

public ActionResult Export()
{
    byte[] doc = GetExcelFileSomehow();
    var file = File(doc, "application/vnd.ms-excel");
    file.FileDownloadName = "MyFile.xlsx";
    return file;
}
于 2012-09-12T01:57:58.910 に答える