将“0000”或“0030”导入DataTable

时间:2011-06-02 03:01:52

标签: c# .net

我从文本文件导入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

1 个答案:

答案 0 :(得分:7)

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

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

  

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

或者this article有一些关于控制如何推断类型的信息。