【问题标题】:dataformatstring for converting scientific to number用于将科学转换为数字的数据格式字符串
【发布时间】:2014-01-24 09:25:26
【问题描述】:

我正在尝试绑定一个字符串数据类型的数据字段(SQL Server 中的 varchar) 我正在导出到 Excel,这会导致最后有额外的空间。

有人可以建议我解决这个问题吗?

我尝试将字符串格式化为

a.DataFormatString = "{0} " 

显示为数字但最后增加了多余的空格,如何修剪空格?

ex: 它应该显示为 '123456789000',但导出单元格中的输出是 '123456789000 ' {extra space at the end}

【问题讨论】:

  • (e.Column as GridBoundColumn).DataFormatString = " {0} ";-- 这个东西是前后加空格。
  • 使用edit 将代码添加到问题中,而不是在 cmets 中发布。

标签: c# boundfield


【解决方案1】:

这是一个 Excel 格式问题。要绕过它,您需要在 HTML 表上指定 Excel 列格式。这是通过将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"] = @"\@";
                }
            }
        }
    }
}

这是在 Excel 中打开的示例 HTML 输出:

<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>


参考资料:

【讨论】:

  • 不,我想把 E 转换成数字。你的代码会给我 E 格式
  • 如果我执行 {0},我可以在 excel 中看到指数。
  • 这是一个 Excel 格式问题。您如何将数据导出到 Excel?
  • codeproject.com/Tips/344604/… - 这样我导出到 excel。但我对特定列有疑问
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多