我正在尝试绑定一个字符串数据类型(SQL Server 中的 varchar)的数据字段,并且我正在导出到 Excel 中,这会导致最后出现额外的空间。
有人可以建议我解决这个问题吗?
我试图将字符串格式化为
a.DataFormatString = "{0} "
它显示为数字但最后添加了额外的空格,如何修剪空格?
例如:它应该显示为“ 123456789000 ”,但导出单元格中的输出是“ 123456789000 ”{末尾有多余的空格}
我正在尝试绑定一个字符串数据类型(SQL Server 中的 varchar)的数据字段,并且我正在导出到 Excel 中,这会导致最后出现额外的空间。
有人可以建议我解决这个问题吗?
我试图将字符串格式化为
a.DataFormatString = "{0} "
它显示为数字但最后添加了额外的空格,如何修剪空格?
例如:它应该显示为“ 123456789000 ”,但导出单元格中的输出是“ 123456789000 ”{末尾有多余的空格}
这是一个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>