从excel“csv格式”中获取数据类似于linq跳过
我需要根据行号从CSV文件中检索特定部分
例如:从第5
行到第12
行
我正在使用OleDbConnection
并试图使用此查询:
select * from [sheet1.csv$A5:A12]
但它不起作用。
C#代码:
var filename = @"C:\Users\A\Desktop\passwords.csv"; var connString = string.Format( @"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""", Path.GetDirectoryName(filename) ); using (var conn = new OleDbConnection(connString)) { conn.Open(); var query = "SELECT * FROM [" + Path.GetFileName(filename) + "$A5:A12]"; using (var adapter = new OleDbDataAdapter(query, conn)) { var ds = new DataSet("CSV File"); adapter.Fill(ds); } }
错误
The Microsoft Jet database engine could not find the object 'passwords.csv$A5:A12'. Make sure the object exists and that you spell its name and the path name correctly.
这显示了一个使用StreamReader(它只是一个文本文件记住)和Jet驱动程序的例子:
http://www.codeproject.com/Articles/27802/Using-OleDb-to-Import-Text-Files-tab-CSV-custom
因此,丢失"$A5:A12]
位,并使用一个DataReader,然后调用Read方法5次移动到第五行。
我不是一个C#程序员,只是一个好的Google员工。
而不是使用OleDbConnection
我只是使用文件类
var lines = File.ReadLines(filename); var rows = lines.Skip(4).Take(8);