Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于将科学数据转换为数字的dataformatstring_C#_Boundfield - Fatal编程技术网

C# 用于将科学数据转换为数字的dataformatstring

C# 用于将科学数据转换为数字的dataformatstring,c#,boundfield,C#,Boundfield,我正在尝试绑定一个字符串数据类型的数据字段(SQL Server中的varchar) 我正在将其导出到Excel中,这将在最后增加一个额外的空间 有人能建议我解决这个问题吗 我试图将字符串格式化为 a.DataFormatString = "{0} " 显示为数字,但在末尾添加额外空白,如何修整空白空间? 例如:它应该显示为“123456789000”,但导出单元格中的输出是“123456789000”{末尾的额外空间}这是Excel格式问题。要解决这个问题,需要在HTML

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

有人能建议我解决这个问题吗

我试图将字符串格式化为

a.DataFormatString = "{0} " 

显示为数字,但在末尾添加额外空白,如何修整空白空间?


例如:它应该显示为“123456789000”,但导出单元格中的输出是“123456789000”{末尾的额外空间}

这是Excel格式问题。要解决这个问题,需要在HTML表中指定Excel列格式。这是通过将
style=“mso number format:\@;”
添加到
标记来完成的。默认情况下,
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"] = @"\@";
                }
            }
        }
    }
}
使用系统;
使用System.Web.UI.WebControl;
公共类MyDataGrid:DataGrid
{
受保护的重写无效OnItemDataBound(DataGridItemEventArgs e)
{
碱基结合(e);
if(e.Item.ItemType!=ListItemType.Item&&e.Item.ItemType!=ListItemType.AlternatingItem)返回;
var dt=数据源作为数据表;
如果(dt!=null)
{       
对于(int i=0;i

以下是在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>

字段1字段2
1321365465465123
1321365465465123


参考资料:

(e.Column作为GridBoundColumn)。DataFormatString=“{0}”——这是在前后添加空格。在问题中添加代码,而不是在注释中发布。可能重复“否”,我想将E转换为数字。.您的代码将为我提供E格式如果我这样做{0},我可以在excel中看到指数数字。这是excel格式问题。如何将数据导出到Excel?-通过这种方式,我将导出到excel。但我对具体栏目有意见