Member 12855422 Ответов: 1

Экспорт данных в excel из dataview C#


У меня есть listView в форме и какая-то таблица в ней с русскими словами. При экспорте данных в Excel английские слова и цифры экспортируются хорошо, а вот русские слова превращаются в какие-то символы, но не в слова. Помоги мне! Мой код:

string[] st = new string[listView1.Columns.Count];
            DirectoryInfo di = new DirectoryInfo(@"..");
            if (di.Exists == false)
                di.Create();
            StreamWriter sw = new StreamWriter(@".." + "1.xls", false);
            sw.AutoFlush = true;
            for (int col = 0; col < listView1.Columns.Count; col++)
            {
                sw.Write("\t" + listView1.Columns[col].Text.ToString());
            }

            int rowIndex = 1;
            int row = 0;
            string st1 = "";
            for (row = 0; row < listView1.Items.Count; row++)
            {
                if (rowIndex <= listView1.Items.Count)
                    rowIndex++;
                st1 = "\n";
                for (int col = 0; col < listView1.Columns.Count; col++)
                {
                    st1 = st1 + "\t" + listView1.Items[row].SubItems[col].Text.ToString();
                }
                sw.WriteLine(st1);
            }
            sw.Close();
            FileInfo fil = new FileInfo(@".." + "1.xls");
            if (fil.Exists == true)
                MessageBox.Show("Process Completed", "Export to Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {

        }


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

Я попытался отредактировать код, как
<pre lang="c#"> StreamWriter sw = new StreamWriter(@".." + "1.xls", false, Encoding.UTF8);
и русские символы-это нормально, но все данные идут в один столбец в Excel :(

1 Ответов

Рейтинг:
0

Vaibhav-Systematix

Не могли бы вы попробовать использовать приведенный ниже код в качестве образца? это работает от меня

У меня есть данные в dataview (C#), и я создал html-строку в C# с помощью цикла Foreach и экспортировал html-строку в Excel через

StringWriter()


Я сделал это с помощью Datatable, но могу сделать то же самое с помощью dataview.


protected void btnExportToExcel_Click(object sender, EventArgs e)
       {
           Response.Clear();
           Response.Buffer = true;
           Response.AddHeader("content-disposition",
               "attachment;filename=SearchLog.xls");
           Response.Charset = "";
           Response.ContentType = "application/vnd.ms-excel";

           StringWriter sw = new StringWriter();

           if (Session["dtlog"] != null)
           {
               // string strSearchResult = Session["htmlResult"].ToString();
               DataTable dtSeachLog = Session["dtlog"] as DataTable;


               string strSearchResult = "No Record Found!";

               if (dtSeachLog != null && dtSeachLog.Rows.Count > 0)
               {
                   strSearchResult = "<div class='table - responsive'> <table border='1' class='table table-bordered table - hover'><thead><tr>";
                   strSearchResult = strSearchResult + "<th class='header'>User Name</th> <th class='header'>Trade Mark</th><th class='header'>Date</th><th class='header'>Us Class Description</th>";
                   strSearchResult = strSearchResult + "</tr></thead><tbody>";
                   foreach (DataRow dr in dtSeachLog.Rows)
                   {

                       strSearchResult = strSearchResult + "<tr><td>" + dr["FullName"].ToString() + " </ a ></td>";

                       strSearchResult = strSearchResult + "<td align='center'> " + dr["SearchText"].ToString().Replace("''","'") + "</td>";
                       strSearchResult = strSearchResult + "<td>" +Convert.ToDateTime(dr["SearchDate"]).ToShortDateString() + "</td>";
                       strSearchResult = strSearchResult + "<td align='center'>" + dr["UsClassDescription"].ToString() + "</td>";
                       strSearchResult = strSearchResult + "</tr>";
                   }
                   strSearchResult = strSearchResult + "</tbody></table></div>";
               }
                   sw.WriteLine(strSearchResult);
               //HtmlTextWriter hw = new HtmlTextWriter(sw);

               Response.Output.Write(sw.ToString());
               Response.Flush();
               Response.End();
           }
       }