Keerthi Kumar(Andar) Ответов: 5

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


У меня есть одно сеточное представление под названием grdbeneficious в этом столбце идентификатор получателя содержит очень длинное число
Я пытаюсь экспортировать эту сетку в excel. после экспорта в excel идентификатор получателя выглядит следующим образом
9.04103E+13

может ли кто-нибудь помочь мне отформатировать число в текст в excel с помощью кода c#. в настоящее время я использую приведенный ниже код.

string attachment = "attachment; filename=Emp.xls";
           Response.ClearContent();
           Response.AddHeader("content-disposition", attachment);
           Response.ContentType = "application/ms-excel";
           Response.ContentType.ToString();
           StringWriter sw = new StringWriter();
           HtmlTextWriter htw = new HtmlTextWriter(sw);
           for (int i = 0; i < grdErrorRecords.Rows.Count; i++)
           {
               GridViewRow row = grdErrorRecords.Rows[i];
               //Apply text style to each Row
               row.Attributes.Add("class", "textmode");
           }
           grdErrorRecords.RenderControl(htw);
           //format the excel cells to text format
           string style = @"<style> .textmode { mso-number-format:\@; } </style>";
           Response.Write(style);
           Response.ContentType = "application/text";
           Response.Write(sw.ToString());
           Response.End()

Как отформатировать лист excel в текст с помощью кода c#?

заранее спасибо
(Кирти Кумар)

5 Ответов

Рейтинг:
29

nrgjack

я manteined унаследованный код, как ваш, и это может привести вас к головной боли с совместимостью браузера...

я предлагаю вам с помощью epplus (бесплатно) скачать его с помощью nuget.

https://www.nuget.org/packages/EPPlus/[^]

https://epplus.codeplex.com/wikipage?title=FAQ[^]

вы можете форматировать ячейки так, как хотите, используя такой код, как

worksheet.Cells["A1:B3,D1:E57"].Style.NumberFormat.Format = "#,##0"; //Sets the numberformat for a range containing two addresses.
worksheet.Cells["A:B"].Style.Font.Bold = true; //Sets font-bold to true for column A & B
worksheet.Cells["1:1,A:A,C3"].Style.Font.Bold = true; //Sets font-bold to true for row 1,column A and cell C3
worksheet.Cells["A:XFD"].Style.Font.Name = "Arial"; //Sets font to Arial for all cells in a worksheet.

//Sets the background color for the selected range (default is A1).
//A range is selected using the by using the worksheet.Select method
worksheet.Cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells.Style.Fill.BackgroundColor.SetColor(Color.LightGreen);


Рейтинг:
2

JoCodes

Добавьте стиль к каждому элементу вместо строки

Попробуй как

item.Cells[i].Attributes.Add("style", "textmode");


Или

row.Cells[i].Attributes.Add("style", "textmode");


Keerthi Kumar(Andar)

Нет...это не работает..
for (int i = 0; i < grdErrorRecords.Rows.Граф ; i++)
{
GridViewRow row = grdErrorRecords.Строки[i];
//Применить стиль текста к каждой строке
// ряд.Атрибуты.Добавить("стиль", "текстовый режим");
for (int j = 0; j <6; j++)
{
ряд.Клетки[j].Атрибуты.Добавить("стиль", "текстовый режим");
}
}

Рейтинг:
2

Vishal_netTech

Формат по ячейкам работал на меня:
Мне нужен был текстовый формат только для одной колонки, вот что я сделал:

для (int x = 0; x < gv.строк.Count; x++)
{


//Применить стиль текста к каждой ячейке
gv.строки[x].ячейки[3].Атрибуты.Добавить("класс", "текстовый режим");



}


sweety 22

это работа для меня
GridView gridView = новый GridView();
gridView.DataSource = Session["ExcelMetadata"]; // dtMetadata;
управления GridView.Привязку();

Ответ.ClearContent();
Ответ.Буфер = true;
string strDateFormat = строка.Пустой;
strDateFormat = строка.Формат ("{0:гггг-МММ-ДД-чч-мм-СС}", DateTime.Now);
Ответ.AddHeader("content-disposition", "attachment; filename=UserDetails_" + strDateFormat + ".xls");
Ответ.ContentType = "приложение/ms-excel";
Ответ.Кодировка = "";

StringWriter sw = новый StringWriter();
HtmlTextWriter htw = новый HtmlTextWriter(sw);

for (int i = 0; i < gridView.Rows.Граф; i++)
{
GridViewRow row = gridView.Rows[i];
//ПРИМЕНИТЬ ТЕКСТОВЫЙ СТИЛЬ КО 2-МУ СТОЛБЦУ СТРОКИ ACH
управления GridView.Строки[я].Клетки[1].Атрибуты.Добавить("класс", "текстовый режим");
}
стиль строки = @" .текстовую { МСО-число-формат:\@; } ";

Ответ.Написать(стиль);
управления GridView.RenderControl(HTW по);
Ответ.Выход.Писать(ув.Метод toString());
Ответ.Промывать();
Ответ.Конец();

Рейтинг:
2

Member 12630889

Добавьте Апостроф перед полем ввода

GridViewRow row = "'" + grdErrorRecords.Rows[i];//This will make all input fields in text format.


pavan2407

что такое я в строках

Рейтинг:
2

Member 12927626

foreach (GridViewRow row in gridView.Rows)
    {
        for (int i = 0; i < row.Cells.Count; i++)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                row.Cells[i].Attributes.Add("class", "text");
            }
        }
    }


CHill60

Разве это не должно быть "textmode", а не "text" ... в соответствии с решениями других членов, которые работают?

Member 10268973

Да,текстовый режим