附加信息:Microsoft Office Access数据库引擎找不到对象'C:\ Users \ username \ Documents \ sampleData.xls'。确保对象存在,并且正确拼写其名称和路径名。Excel到DataGridView
错误是在
theDataAdapter.Fill(spreadSheetData);
强调这里的样本数据I使用(以.csv试过,.xls的,.XLSX)
Name Age Status Children
Johnny 34 Married 3
Joey 21 Single 1
Michael 16 Dating 0
Smith 42 Divorced 4
下面是相关的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
namespace uploadExcelFile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnImport_Click(object sender, EventArgs e)
{
var frmDialog = new System.Windows.Forms.OpenFileDialog();
if (frmDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string strFileName = frmDialog.FileName;
System.IO.FileInfo spreadSheetFile = new System.IO.FileInfo(strFileName);
scheduleGridView.DataSource = spreadSheetFile.ToString();
System.Diagnostics.Debug.WriteLine(frmDialog.FileName);
System.Diagnostics.Debug.WriteLine(frmDialog.SafeFileName);
String name = frmDialog.SafeFileName;
String constr = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES""", frmDialog.FileName);
OleDbConnection myConnection = new OleDbConnection(constr);
OleDbCommand onlineConnection = new OleDbCommand("SELECT * FROM [" + frmDialog.FileName + "]", myConnection);
myConnection.Open();
OleDbDataAdapter theDataAdapter = new OleDbDataAdapter(onlineConnection);
DataTable spreadSheetData = myConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
theDataAdapter.Fill(spreadSheetData);
scheduleGridView.DataSource = spreadSheetData;
}
}
}
}
scheduleGridView是DataGridViews名称,& btnImport是导入Bu的名称tton。
我已经安装了2007 Office System Driver:Data Connectivity Components;这给了我AccessDatabaseEngine.exe,但从那里我一直卡在这里,不理解如何解决这个问题。不用说,文件路径的完整性是正确的。有一个在路径名中没有奇怪的字符或者(空格,下划线等)
迷你更新::(另一个死胡同好像)
虽然最初的错误说“无法找到对象'C:\用户\用户名\ Documents \ sampleData.xls'“
在调试器中,异常读取为 当我查看详细信息”C:\ Users \ username \ Documents \ sampleData.xls “
所以我认为错误是它没有把路径作为一个迭代,但这篇文章C# verbatim string literal not working. Very Strange backslash always double 非常清楚地表明,这不是我的问题。
你有没有试过相对路径,即只有文件名没有目录? –
只是试了一下,得到了同样的错误。相对而言,你的意思只是文件名。扩展名,是否正确? **其他信息:Microsoft Office Access数据库引擎找不到对象'sampleData.xls'。 ** – JoeyG2677
只是想知道您是否仔细检查了文件扩展名是xls,而不是xls.xls? –