【发布时间】:2015-11-11 17:40:15
【问题描述】:
我正在尝试使用以下方法从 Excel 文件中获取数据:
OpenFileDialog OpenCSVDialog = new OpenFileDialog();
OpenCSVDialog.Filter = "Excel |*.xlsx";
OpenCSVDialog.ShowDialog();
ExcelFileName = System.IO.Path.GetFileName(OpenCSVDialog.FileName);
string path = System.IO.Path.GetDirectoryName(OpenCSVDialog.FileName);
fullpath = Path.Combine(path, ExcelFileName);
dt_data = new DataSet("CSV File");
var connString = string.Format(
@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""",
Path.GetDirectoryName(fullpath)
);
using (var conn = new OleDbConnection(connString))
{
conn.Open();
var query = "SELECT * FROM [" + Path.GetFileName(fullpath) + "]";
using (var adapter = new OleDbDataAdapter(query, conn))
{
adapter.Fill(dt_data);
}
}
但在浏览时看到此行出现错误:adapter.Fill(dt_data);:
我在相关路径中有 Excel 文件。
【问题讨论】:
-
请显示异常发生的行,而不是捕获异常的位置。但最有可能的是,您需要转义文件名,例如写
Data Source='{0}' -
编辑了问题。请检查
-
刚刚注意到您在
FROM子句中使用了文件名。FROM用于从特定的工作表中进行选择,而不是从文件中进行选择。它应该类似于FROM [Sheet1$]。
标签: c# excel connection-string jet