将“0000”或“0030”导入DataTable

我从文本文件导入0000,0002,0023,0034等值。 但是,该表将它们显示为0,2,23,34。有谁知道为什么它会删除前导零?

这是我的代码:

private DataTable ImportTabFile() { string dataSourcePath = @"C:\Documents and Settings\agordon\Desktop"; string dataFileName = "ACTIVITYEX.txt"; string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataSourcePath + @";Extended Properties=""text;HDR=No;FMT=Delimited"""; OleDbConnection conn = new OleDbConnection(connString); OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = String.Format("SELECT * FROM [{0}]", dataFileName); DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(ds); return ds.Tables[0]; } 

如何在导入期间保留前导零?

这是我的架构文件的样子:

 [ACTIVITYEX.txt] Format=TabDelimited ColNameHeader=False Col13=ErrorCode Text 

JET将根据第一行推断类型。 它可能推断您的字段是INT因为0000可以转换为数字。 如上所述,前导零是无用的。

您可以使用schema.ini显式定义列类型。 如上面的注释所述,您需要根据文档指定每个列:

您必须按编号指定每列 ,并为固定长度文件指定列名,数据类型和宽度

或者, 本文提供了一些控制类型推断的信息。