ฉันสามารถรับรายการคอลัมน์จากไฟล์ Excel เช่นนี้ได้อย่างง่ายดาย:
columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, tableName, null });
ฉันต้องการทำเช่นเดียวกันกับไฟล์ CSV แต่ฉันไม่แน่ใจว่าต้องใช้พารามิเตอร์ใด สตริงการเชื่อมต่อของฉันกับไฟล์ CSV คือ:
"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties='text; FMT=Delimited(,); ReadOnly={1}; HDR={2}'".FormatString(directory, readOnly, (firstLineIsColumnHeaders ? "yes" : "no"))
ซึ่งกลายเป็นว่า (ในกรณีนี้) มีลักษณะดังนี้:
Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Windows\Temp\sadf83.tmp; Extended Properties='text; FMT=Delimited(,); ReadOnly=true; HDR=yes'
แต่เมื่อฉันพยายาม GetOleDbSchemaTable
คำสั่งส่งคืนได้ตามปกติ แต่ให้ค่า DataTable
ว่างเปล่าแก่ฉัน เช่นเดียวกันเมื่อฉันพยายาม GetSchema("Columns")
DataTable
จริงๆ แล้วการเลือกข้อมูลจากไฟล์ CSV นั้นใช้งานได้ดี เพียงแต่วิธี OleDb ในการรับสคีมา/คอลัมน์นั้นใช้ไม่ได้ผล - person Josh M.   schedule 06.04.2013