0

こんにちは、グリッド データを Excel にエクスポートしようとしていますが、IE8 では機能しません。[OK] と [閉じる] の 2 つのボタンを含む Ajax モーダル ポップアップ ダイアログ ボックスを使用しています。[OK] をクリックすると、Excel ファイルをダウンロードします。動作しますMozilla では問題ありませんが、IE では機能しません。以下のコードを使用しています。その方法を教えてください。また、最初にファイルを開くと、ファイルを開く前に警告が表示されます。

  Response.Clear();
    Response.Buffer = true;

    string filename = "Checkout";
     Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".adt");

    Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
    Response.Write("<head>");
    Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
    Response.Write("<!--[if gte mso 9]><xml>");
    Response.Write("<x:ExcelWorkbook>");
    Response.Write("<x:ExcelWorksheets>");
    Response.Write("<x:ExcelWorksheet>");
    Response.Write("<x:Name>Sheet1</x:Name>");
    Response.Write("<x:WorksheetOptions>");
    Response.Write("<x:Print>");
    Response.Write("<x:ValidPrinterInfo/>");
    Response.Write("</x:Print>");
    Response.Write("</x:WorksheetOptions>");
    Response.Write("</x:ExcelWorksheet>");
    Response.Write("</x:ExcelWorksheets>");
    Response.Write("</x:ExcelWorkbook>");
    Response.Write("</xml>");
    Response.Write("<![endif]--> ");
    Response.Write("</head>");

    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView gv = new GridView();
    gv.AutoGenerateColumns = true;
    gv.DataSource = dt;
    gv.DataBind();
    gv.RenderControl(hw);

    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
4

1 に答える 1

0

技術的に言えば、これは Excel へのエクスポートではないため、警告が表示されますが、間違ったヘッダーを含む html を送信して、ブラウザーをだましてこのコンテンツを Excel で開くようにします。

ネイティブの Excel ライブラリを使用し、サーバー上で実際の Excel ファイルを生成することをお勧めします。たとえば、EPPlusはオープン ソースであり、サーバー上で Excel を必要としません。

DataTable から Excel ファイルを生成する ashx ハンドラの例を次に示します。

https://stackoverflow.com/a/9569827/351383

于 2013-07-31T12:23:33.373 に答える