0

誰かがこの問題に遭遇したかどうかはわかりません。問題を再現するための手順は次のとおりです。

手順: 1. リスト --> 担当者ページに移動します。2. [エクスポート] ボタンをクリックして、担当者リストの .XLS レポートを生成します。3. .XLS レポートを閉じて、連絡先リストなどの他のページに移動します。4. 連絡先リストで、[閉じる] ボタンをクリックして、[連絡先] リスト ページにリダイレクトします。

想定: - ページには連絡担当者リスト ページが表示される必要があります。

実際: - モジバキ文字を含む奇妙なページが表示されます。この URL の画像を参照してくださいhttp://i.imgur.com/dIsZc.png

アクティブ レポートを使用して Excel を生成するコードは次のとおりです。

private static void PushContentToHttp(ActiveReport report, MemoryStream msData, string fileName, string url) {

        report.Run();
        XlsExport xls = new XlsExport();
        xls.DisplayGridLines = true;
        xls.AutoRowHeight = true;
        xls.Export(report.Document, msData);

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Buffer = true;

        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        HttpContext.Current.Response.AddHeader("Content-Length", msData.Length.ToString());
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename= \"" + fileName + ".xls\"");
        HttpContext.Current.Response.AddHeader("Refresh", "3; url=" + url);
        HttpContext.Current.Response.Charset = "utf-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252);
        //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
        HttpContext.Current.Response.BinaryWrite(msData.ToArray());
        HttpContext.Current.Response.End();
 //       HttpContext.Current.Response.Redirect(url,true);

    }

どんな助けでも大歓迎です!どうもありがとう!:)

4

2 に答える 2

0

実際、これの原因は、ページがブラウザーによってキャッシュされた Excel ページにリダイレクトしようとすることです。私が提案できるのは、キャッシュされたExcelページをロードする代わりに、前のページが完全にロードされるように、ブラウザを戻すだけでなく完全なリダイレクトを行うことです. ANSIエンコードとは何の関係もありません。リダイレクトが間違っているだけです。

于 2012-07-27T01:48:10.263 に答える
0

これは、Excel のデフォルトのエンコーディングが ANSI 125x であり、それを UTF-8 に書き込もうとしていることが原因であるに違いありません。

この関連する SO の質問を参照してください: Excel スプレッドシートの文字エンコード (およびそれをデコードするために使用する Java charset)

于 2012-07-26T04:49:07.090 に答える