导入excel文件错误
问题描述:
我在YouTube上找到了一个视频,演示了如何将excel文件导入到datagridview。我收到错误:无法找到可安装的ISAM。导入excel文件错误
这是我的代码,我做错了什么?
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Exended Properties=""Excel 8.0;HDR=No;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";
OleDbCommand command = new OleDbCommand
(
"SELECT PartNumber,ShortDescription,RetailPrice,JobberPrice,BasePrice,YourDiscount,YourPrice,LongDescription FROM [Pricing$]",conn
);
DataSet ds = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
答
你有你的连接字符串中一个错字:
Exended Properties=
应该是:
Extended Properties=
此外,我建议你你的代码略有改善其中包括妥善处置一次性资源:
using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT PartNumber,ShortDescription,RetailPrice,JobberPrice,BasePrice,YourDiscount,YourPrice,LongDescription FROM [Pricing$]";
using (var adapter = new OleDbDataAdapter(cmd))
{
adapter.Fill(ds);
}
}
答
从我的经验。只有Excel 97-2003的作品。
代码在VB!
Private Sub DodajExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DodajExcel.Click
OpenFileDialog2.Filter = "Excel Files (*.xls)|*.xls|All Files (*.*)|*.*"
If OpenFileDialog2.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim XLSPathx As String = OpenFileDialog2.FileName
End If
Dim connectionStringTemplate As String = _
"Provider=Microsoft.ACE.OLEDB.12.0;" + _
"Data Source={0};" + _
"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""
Dim XLSPath As String = OpenFileDialog2.FileName
Dim connectionString As String = String.Format(connectionStringTemplate, XLSPath)
Dim sqlSelect As String = "SELECT * FROM [Arkusz1$];"
' Load the Excel worksheet into a DataTable
Dim workbook As DataSet = New DataSet()
Dim excelAdapter As System.Data.Common.DataAdapter = New System.Data.OleDb.OleDbDataAdapter(sqlSelect, connectionString)
Try
excelAdapter.Fill(workbook)
Dim worksheet As DataTable = workbook.Tables(0)
DataGridView1.DataSource = worksheet
Catch
End Try
末次
你是上帝,谢谢。 – 2010-12-16 08:28:29