dataformatstring для преобразования научных данных в числа

Я пытаюсь связать поле данных, которое является строковым типом данных (varchar в SQL Server), и я экспортирую в Excel, что приводит к дополнительному пробелу в конце.

Может ли кто-нибудь предложить мне решить проблему?

Я попытался отформатировать строку как

a.DataFormatString = "{0} " 

Он отображается как число, но добавляет дополнительный пробел в конце, как обрезать пробел?

пример: должно отображаться как «123456789000», но вывод в ячейке экспорта — «123456789000» {дополнительный пробел в конце}


person Priya    schedule 22.01.2014    source источник
comment
(e.Column as GridBoundColumn).DataFormatString = {0}; -- эта штука добавляет пространство спереди и сзади.   -  person Priya    schedule 22.01.2014
comment
Добавьте код в вопрос с помощью редактировать вместо публикации в комментариях.   -  person JNYRanger    schedule 22.01.2014
comment
Возможный дубликат stackoverflow.com/ вопросы/5032409/   -  person Wagner DosAnjos    schedule 23.01.2014


Ответы (1)


Это проблема форматирования Excel. Чтобы обойти это, вам нужно указать формат столбца Excel в таблице HTML. Это делается путем добавления style="mso-number-format:\@;" к тегу <td>. По умолчанию System.Web.UI.WebControls.DataGrid не отображает пользовательские стили, поэтому вам нужен новый класс управления, производный от DataGrid, следующим образом:

using System;
using System.Web.UI.WebControls;

public class MyDataGrid : DataGrid
{
    protected override void OnItemDataBound(DataGridItemEventArgs e)
    {
        base.OnItemDataBound(e);

        if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return;

        var dt = DataSource as DataTable;

        if (dt != null)
        {       
            for (int i=0; i < dt.Columns.Count; i++)
            {
                if (dt.Columns[i].DataType == typeof(string))
                {
                    e.Item.Cells[i].Style["mso-number-format"] = @"\@";
                }
            }
        }
    }
}

Вот пример HTML-вывода, открытого в Excel:

<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">
  <tr>
    <td>Field1</td><td>Field2</td>
  </tr><tr>
    <td style="mso-number-format:\@;">1321365465465</td><td>123</td>
  </tr><tr>
    <td style="mso-number-format:\@;">1321365465465</td><td>123</td>
  </tr>
</table>

введите здесь описание изображения


Использованная литература:

person Wagner DosAnjos    schedule 22.01.2014
comment
Нет, я хочу преобразовать E в число. Ваш код даст мне формат E - person Priya; 22.01.2014
comment
Если я сделаю {0}, я увижу экспоненциальное число в Excel. - person Priya; 23.01.2014
comment
Это проблема форматирования Excel. Как вы экспортируете данные в Excel? - person Wagner DosAnjos; 23.01.2014
comment
codeproject.com/Tips/344604/ - таким образом я экспортирую в Excel. Но у меня проблема с конкретным столбцом - person Priya; 23.01.2014