0

MVC 4 の Gridview を使用して、データベースから Excel にテーブルをエクスポートしようとしていました。Excel シートでエクスポートされた行に色を付ける方法を誰か教えてもらえますか?

public ActionResult ExportToExcel()
{
        GridView gv = new GridView();
        gv.DataSource = db.StudentRecords.ToList();
        gv.DataBind();
        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=Marklist.xls");
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        gv.RenderControl(htw);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
        return RedirectToAction("index");
}
4

1 に答える 1

1

これを解決するには、主に 2 つの方法があります。1 つ目は、データを既存の Excel ファイル (すべての書式設定が既に埋め込まれている、作成されたテンプレート ファイル) にレンダリングすることです。2 つ目は、出力をレンダリングするときにセルをプログラムでフォーマットすることです。

Excel ファイルの生成 (より単純な CSV ファイルとは対照的に) は簡単ではないため、最も簡単な方法はサード パーティのコンポーネントを使用することです。私は Aspose.Cells で多くの成功を収めてきました (.NET のサポートに加えて、Java バージョンやその他のバージョンもあるかもしれません)。もちろん、コンポーネントはこれだけではありません。これは商用製品ですが、私の経験上、彼らのサポートは優れています。

Excel ファイルの生成にコンポーネントを使用する場合、データセットをコンポーネント オブジェクト モデルにバインドまたはマップできるため、GridView はほとんど不要です (Aspose の場合は、データをワークシートにバインドします)。

Aspose の Web サイトにある Hello World の例を次に示します。helloworld.aspx.cs コードを調べて、そのしくみを確認してください。

http://www.aspose.com/demos/.net-components/aspose.cells/csharp/quick-start/data/hello-world.aspx

明らかに、これはあなたの例よりも少し複雑ですが、私が理解している限り、これは複雑な Excel ファイル (書式設定、数式など) を生成する最も簡単な方法です。この種のことを定期的に行う場合、これを理解するための投資は非常に便利です。

また、ストリーミングに関する注意事項。Aspose では、ファイルを HttpResponse ストリームに簡単にストリーミングできます。例(上記のドキュメントから):

workbook.Save(HttpContext.Current.Response, "HelloWorld.xls", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003));

Mikael が上で述べたように、この種の作業をはるかに簡単にし、Excel ファイルの非常に高度なレンダリングを可能にする他のコンポーネントがあります。

于 2013-08-01T12:12:58.807 に答える