gpt4 book ai didi

c# - 将 Excel 文件导入 DataGridView

转载 作者:行者123 更新时间:2023-11-30 19:43:52 27 4
gpt4 key购买 nike

OpenFileDialog ofImport = new OpenFileDialog();
ofImport.Title = "Select file";
ofImport.InitialDirectory = @"c:\";
ofImport.FileName = txtFileName.Text;
ofImport.Filter = "Excel Sheet(*.xlsx)|*.xlsx|All Files(*.*)|*.*";
ofImport.FilterIndex = 1;
ofImport.RestoreDirectory = true;

if (ofImport.ShowDialog() == DialogResult.OK)
{

string path = System.IO.Path.GetFullPath(ofImport.FileName);
string query = "SELECT * FROM Customer.xlsx";
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ofImport.FileName+";Extended Properties=" + "\"Excel 12.0 Xml;HDR=YES;IMEX=1\"";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);

//DataSet dataSet = new DataSet();
adapter.Fill(dsSource);
dataGridView1.DataSource = dsSource;

}
else
{
ofImport.Dispose();
}

我想使用 dataset 将 Excel 数据检索到 DataGridViewdsSource 是使用的数据集。

我得到的错误在 adapter.Fill(dsSource); 行:

The Microsoft Access database engine could not find the object 'xlsx'. Make sure the object exists and that you spell its name and the path name correctly. If 'xlsx' is not a local object, check your network connection or contact the server administrator.

我可以选择文件,但它没有填充数据集。

怎么办?

最佳答案

在您从文件中选择的以下行中:

string query = "SELECT * FROM " + ofImport.FileName;

但是,您需要从工作表中进行选择,所以这应该是这样的:

string query = "SELECT * FROM [Sheet1$]"; // Note the '$' sign!!

您需要找出 Excel 文件的工作表名称,以便从中进行选择(工作表名称显示在工作表的选项卡中 - 只需在其后附加一个 $ 符号)。 文件名 仅在连接字符串中使用,以便数据库引擎知道要打开哪个文件。

考虑以下与 .NET 中常见的 SQL 数据库访问的类比:

file name = database name
sheet name = table name

编辑
为了使事情更清楚:在下图中,工作表名称被红色圈出。在您的代码中,在 select 语句中写入工作表名称,后跟美元符号。

enter image description here

关于c# - 将 Excel 文件导入 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com