C# 使用ODBC文本驱动程序读取第一行

C# 使用ODBC文本驱动程序读取第一行,c#,odbc,C#,Odbc,我有一个使用ODBC读取分隔文件的应用程序。连接字符串如下所示: cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" + sPath1; 其中一家提供文件的公司没有使用标题行,我丢失了第一行数据。将HDR=No放入连接字符串似乎没有帮助。目标目录中有一个schema.ini cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};HDR=No;DBQ=" + sPath1; 读

我有一个使用ODBC读取分隔文件的应用程序。连接字符串如下所示:

cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" + sPath1;
其中一家提供文件的公司没有使用标题行,我丢失了第一行数据。将
HDR=No
放入连接字符串似乎没有帮助。目标目录中有一个
schema.ini

cs = @"Driver={Microsoft Text Driver (*.txt; *.csv)};HDR=No;DBQ=" + sPath1;

读第一行最好的方法是什么?我没有尝试Excel驱动程序,因为我担心它会以不同的方式解释数据。

解决方案是确保有行读取

ColNameHeader=False
在schema.ini中。文档可在此处找到:


要跟进正确答案,还可以编写一个函数,在运行时以
文件流的形式创建/写入架构文件。写入文件时包括
ColNameHeader=False
(或将其作为参数传递)。文件名必须是
schema.ini

private void writeSchema(string decimalPointOverride=“”,string header=“True”)
{
尝试
{
FileStream fsOutput=newfilestream(myDirectory+“\\schema.ini”,FileMode.Create,FileAccess.Write);
StreamWriter srOutput=新的StreamWriter(fsOutput);
串s1、s2、s3、s4、s5、s6;
s1=“[“+”OutputFileName.CSV“+”]”;
s2=“ColNameHeader=”+标题;
s3=“Format=“+this.strFormat;
s4=“MaxScanRows=25”;
s5=“CharacterSet=“+此代码;
//如果存在小数点,则设置小数点,否则设置空字符串“”
s6=(decimalPointOverride==”)?:“DecimalSymbol=“+decimalPointOverride+”\r\n”;
srOutput.WriteLine(s1.ToString()+“\r\n”+s2.ToString()+“\r\n”+s3.ToString()+“\r\n”+s4.ToString()+“\r\n”+s5.ToString()+“\r\n”+s6.ToString());
srOutput.Close();
fsOutput.Close();
}
捕获(例外情况除外)
{
Console.WriteLine(例如消息“writeSchema”);
}
}