将gridview导出到Excel时无法识别阿拉伯字符

ama*_*l50 2 c# asp.net excel gridview arabic

我在将gridviews导出到Excel时识别阿拉伯字符时遇到问题.阿拉伯语文本显示为"Ø®Ù​​"اØμ",它无法识别阿拉伯语数据以及阿拉伯语gridview标题

我使用以下代码在同一个Web应用程序中导出到Excel许多网格视图,它工作正常,它识别阿拉伯文本

protected void BtnExportDateSearch_Click(object sender, EventArgs e)
{
    Response.Clear();

    Response.AddHeader("content-disposition", "attachment;filename=ExportDataDateSearch.xls");

    HttpContext.Current.Response.Charset = "UTF-8";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

    Response.ContentType = "application/vnd.xls";
    StringWriter StringWriter = new System.IO.StringWriter();

    HtmlTextWriter HtmlTextWriter = new HtmlTextWriter(StringWriter);
    GridView1.RenderControl(HtmlTextWriter);

    Response.Write(StringWriter.ToString());
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)

我所拥有的案例之间的区别,如果我从通常的选择查询中检索数据到gridview,它识别阿拉伯语文本但是如果我使用unpivot和CASE语句,阿拉伯语在asp页面的gridview上查看正常但是当我将其导出为ex​​cel时,无法识别阿拉伯语文本.

这是存储过程,它是我的gridview的数据源:

ALTER PROCEDURE [dbo].[UnpivotApprovedPalms]
    @StartDateTime datetime2(7),
    @EndDateTime datetime2(7)
AS
BEGIN
    SELECT 
        FarmID, 
        CASE PalmsName 
            WHEN 'kalas' THEN N'????'
            WHEN 'khnizi' THEN N'?????'
            WHEN 'jashKharma' THEN N'?? ????'
            WHEN 'anbaratAlMadina' THEN N'????? ???????'
            WHEN 'NabtatSaif' THEN N'???? ???'
            ELSE PalmsName 
        END AS 'PalmsName',
        Quantity, TransactionDateTime
    FROM 
        [ApprovedPalmsInFarm] 
    UNPIVOT
        (Quantity
         FOR PalmsName IN ([kalas], [khnizi], [jashKharma], [anbaratAlMadina])
        ) u   
    WHERE
        u.TransactionDateTime >= @StartDateTime 
        AND u.TransactionDateTime <= @EndDateTime;

    RETURN
END
Run Code Online (Sandbox Code Playgroud)

导致此问题的代码有什么问题?乳清当我更改查询它工作正常,但特别是我的unpivot查询与案例陈述阿拉伯语无法识别?asp页面可以正确查看带有阿拉伯文本的gridview,但只有当我将其导出到Excel时才会识别出阿拉伯语

Eri*_*ric 6

字节顺序标记(BOM)添加到Excel文件的标题中

 Response.AddHeader("content-disposition", "attachment;filename=ExportDataDateSearch.xls");

// Insert below
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
Run Code Online (Sandbox Code Playgroud)

引用:ASP.NET Excel导出编码问题