现做Excel导入功能,客户的Excel文件是没有表头的,导入时系统将客户的第一行数据自动作为抬头了。所以常常导致客户的第一行数据不能导入。
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sTmpFile + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""))
{
conn.Open();
da = new OleDbDataAdapter("SELECT * FROM [" + this.textName.Text.Trim() + "$]", conn); da.Fill(dsImport); this.dgList.DataSource = dsImport.Tables[0];
this.dgList.DataBind();
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sTmpFile + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""))
{
conn.Open();
da = new OleDbDataAdapter("SELECT * FROM [" + this.textName.Text.Trim() + "$]", conn); da.Fill(dsImport); this.dgList.DataSource = dsImport.Tables[0];
this.dgList.DataBind();
•如果希望第一行作为数据显示,而非列名,可以在连接串的 Extended Properties 属性指定:HDR=NO
默认值为:HDR=NO 格式如下:
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties=""Excel 8.0;HDR=NO"";" +
"data source=" + xlsPath;
注意: Excel 8.0;HDR=NO 需要使用双引号(这里的反斜扛,是C#中的转义)
ref: ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/745c5f95-2f02-4674-b378-6d51a7ec2490.htm 中 《连接Excel》节(说明:在我自己的MSDN中,它的例子使用了两个双引号是错的,测试没有通过,原文这样说的:
注意,Extended Properties 所需的双引号必须还要加双引号。
)
在这种情况下,所有的列名都是以F开头,然后跟索引,从F1开始,F2,F3。