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