0

これは私のコードですが、予期しない形式のエラーが発生します。MIME タイプに何か問題があるに違いありませんが、これはオリジナルの公式 MIME タイプであることがわかりました。

私は何が欠けていますか?この方法で作成したドキュメントを開こうとするたびに「破損」しているように見えますが、メッセージをクリックして離すとすべて正常に動作します。

メッセージ:開こうとしているファイル 'name.ext' は、ファイル拡張子で指定された形式とは異なります。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。今すぐファイルを開きますか?

ただし、ファイルが無効なためインポートできないため、この警告を取り除く必要があります。ファイルを 2003-2007 形式の .xls として保存すると、修正されたようです。しかし、これは実用的な解決策ではありません。

   protected void ExportToExcel(string fileName)
    {
        var cmd = new SqlCommand(query);
        var dt = GetData(cmd);

        var writer = new StringWriter();

        var gridview = new GridView();
        gridview.AllowPaging = false;
        gridview.DataSource = dt;
        gridview.DataBind();

        Response.Clear();

        var hw = new HtmlTextWriter(writer);
        gridview.RenderControl(hw);
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
        //  this.EnableViewState = false;

        Response.Write(writer.ToString());
        //    Response.Flush();
        Response.End();
    }
4

2 に答える 2

1

将来の参考のためにコメントを追加すると思いました。TransferSpreadsheet (エクスポート) を実行していたマクロの 1 つが失敗し始め、「外部テーブルが予期された形式ではありません」というメッセージが表示されました。エラーウィンドウ。宛先ファイルのパスに移動して開きました。最後に作成されたファイルに「ガベージ」文字が含まれていることがわかりました。Excel ファイルを削除し、問題なくマクロを再度実行しました。

于 2014-01-21T16:46:57.433 に答える