Member 12962919 Ответов: 0

Как изменить формат столбца excel на основе условия при экспорте данных gridview?


Я хотел, чтобы первые ячейки столбца листа excel были текстовыми, а другие столбцы-числовыми.

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

Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", "" + Result + ""));
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            string style = string.Empty;
            //To Export all pages
            GridView1.AllowPaging = false;


            GridView1.HeaderRow.BackColor = Color.White;
            foreach (TableCell cell in GridView1.HeaderRow.Cells)
            {
                cell.BackColor = GridView1.HeaderStyle.BackColor;
            }
            foreach (GridViewRow row in GridView1.Rows)
            {
                row.BackColor = Color.White;
                foreach (TableCell cell in row.Cells)
                {

                    string value = cell.Text;
                    string text = value[0].ToString();

                    if (text == "0")
                    {
                        cell.Text = cell.Text;
                    }
                    if (row.RowIndex % 2 == 0)
                    {
                        cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                    }
                    else
                    {
                        cell.BackColor = GridView1.RowStyle.BackColor;
                    }

                    cell.CssClass = "textmode";
                    //cell.Style.Add("style", "mso-number-format:\\@");

                }
            }

            GridView1.RenderControl(hw);
           
            //style to format numbers to string
            style = @"<style> .textmode {  mso-number-format:\@;} </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }

Karthik_Mahalingam

использовать ClosedXML[^]

Member 12962919

вы можете объяснить

Karthik_Mahalingam

используя closedxml вы можете достичь почти всех задач которые могут быть выполнены с помощью interop

Richard Deeming

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

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

Если вы хотите контролировать файл, вам нужно сгенерировать и вернуть реальный файл Excel. Вы делаете это, используя такую библиотеку, как ClosedXML, как сказал Картик.

Member 12962919

но если бы я использовал ClosedXML, то было бы необходимо, чтобы excel был установлен в клиентской системе, такой как interop.

Karthik_Mahalingam

достаточно любого средства просмотра электронных таблиц.

0 Ответов