J{0}Y Ответов: 1

Данные объекта DataTable в Excel экспортировать данные в юникоде


Я пытаюсь экспортировать данные в excel и так много кода используется но данные unicode не попадают должным образом

Что я уже пробовал:

protected void djb_Click(object sender, EventArgs e)
    {
string strFinal = "0";
        try
        {
            string Str = "";
            DataTable DTKhata = new DataTable();
            DTKhata.Columns.Add(new DataColumn("mutationno", typeof(string)));
            DTKhata.Columns.Add(new DataColumn("khata", typeof(string)));
            DTKhata.Rows.Add("सद्क्ब क", "asdbk askdb ");
            DTKhata.Rows.Add("1", "1");
            DTKhata.Rows.Add("1", "1");
            DTKhata.Rows.Add("1", "1");
            DTKhata.Rows.Add("1", "1");
            DTKhata.Rows.Add("1", "1");
            int Cnt = DTKhata.Columns.Count;
            if (DTKhata.Rows.Count > 0)
            {
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ClearContent();
                HttpContext.Current.Response.ClearHeaders();
                HttpContext.Current.Response.Buffer = true;
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=mv.xls");
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HttpContext.Current.Response.Charset = "utf-8";
                //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");

                HttpContext.Current.Response.Write(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
                HttpContext.Current.Response.Write("<Table border=1>");

                HttpContext.Current.Response.Write("<tr><th style='text-align:left;mso-number-format:\"\\@\";\'>जिला</th> <th style='text-align:left;mso-number-format:\"\\@\";\'>teh</th> </tr>");

                foreach (DataRow row in DTKhata.Rows)
                {
                    HttpContext.Current.Response.Write("<TR>");
                    for (int i = 0; i < Cnt; i++)
                    {
                        HttpContext.Current.Response.Write("<td style=\'text-align:left;mso-number-format:\"\\@\";\'>");
                        HttpContext.Current.Response.Write(row[i].ToString());
                        HttpContext.Current.Response.Write("</Td>");
                    }
                    HttpContext.Current.Response.Write("</TR>");
                }
                HttpContext.Current.Response.Write("</Table>");
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }


        }
        catch (Exception ex)
        {
            //HttpContext.Current.Response.End();
        }
        finally
        {
            HttpContext.Current.Response.End();
        }
}

1 Ответов

Рейтинг:
1

AnvilRanger

Вы не создаете файл Excel. То, что вы создаете, - это HTML-файл с расширением XLS. Excel может отображать файл, потому что он может понять структуру HTML.

Чтобы создать настоящие файлы Excel, обратитесь к OpenXML SDK или EPPlus. Эти библиотеки позволяют создавать настоящие документы Excel.