我有一个使用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驱动程序,因为我担心它会以不同的方式解释数据。
答案 0 :(得分:2)
解决方案是确保有读数
ColNameHeader=False
schema.ini中的。文档可以在这里找到:
http://msdn.microsoft.com/en-us/library/ms709353%28VS.85%29.aspx
答案 1 :(得分:0)
要遵循正确的答案,您还可以编写一个函数,在运行时以FileStream
的形式创建/写入模式文件。写入文件时包括ColNameHeader=False
(或将其作为参数传递)。文件名必须为schema.ini
private void writeSchema(string decimalPointOverride = "", string header="True")
{
try
{
FileStream fsOutput = new FileStream( myDirectory + "\\schema.ini", FileMode.Create, FileAccess.Write);
StreamWriter srOutput = new StreamWriter(fsOutput);
string s1, s2, s3, s4, s5, s6;
s1 = "[" + "OutputFileName.CSV" + "]";
s2 = "ColNameHeader=" + header;
s3 = "Format=" + this.strFormat;
s4 = "MaxScanRows=25";
s5 = "CharacterSet=" + this.strEncoding;
//set decimal point if exists, otherwise put empty string ""
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();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message, "writeSchema");
}
}