我目前正在为我的 ASP .NET 应用程序使用 Visual Studio 2008。我正在尝试通过 Response 对象将一些带有日文字符的报告导出到 Excel。当我尝试导出时,所有日文字符看起来都是乱码。它适用于汉字。这是我尝试过的:
我尝试安装日语语言包/编码为 UTF-8 / UTF-7 / Shift-JIS / 全球化(Web.Config).. 但没有运气。任何想法如何解决这个问题?谢谢 !!
string attachment = "attachment; filename=PerksPlusReport.xls";
//Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("content-disposition", attachment);
//Response.Charset = "UTF-8";
//Response.Charset = "UTF-7";
//Response.Charset = "Shift_JIS";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
// Create a form to contain the grid
HtmlForm frm = new HtmlForm();
ReportGridView.Parent.Controls.Add(frm);
frm.Attributes["runat"] = "server";
GridView GridView2 = new GridView();
ReportView reportDetails = GetReportDetails();
GridView2.DataSource = GetReportResults(this.ReportId.Value, reportDetails.Sql);
GridView2.DataBind();
PrepareGridViewForExport(GridView2);
frm.Controls.Add(GridView2);
frm.RenderControl(htw);
string fileContents = sw.ToString();
int startSpot = fileContents.IndexOf("<table");
fileContents = fileContents.Substring(startSpot);
int endSpot = fileContents.IndexOf("</table>");
fileContents = fileContents.Substring(0, endSpot + 8);
try
{
// Replace all < and > with < and >
fileContents = fileContents.Replace("<", "<");
fileContents = fileContents.Replace(">", ">");
fileContents = fileContents.Replace("€", "€");
string RegularExpression = @"<a[^>]*>([^<]*)</a>";
Regex regex = new Regex(RegularExpression);
//If match found .. uses the delegate function to replace the whole content with the filtered values
if (regex.IsMatch(fileContents))
{
regex.Replace(fileContents, delegate (Match m){return fileContents.Replace(m.Captures[0].Value, m.Groups[1].Value);});
}
}
catch (Exception ex2)
{
Response.Write(ex2.ToString());
}
Response.Write(fileContents);
Response.End();