sadam.cof Ответов: 1

Не удается импортировать Excel в DataGridView VB.net если этот файл excel не открыт


Привет,
Пожалуйста, помогите, я попробовал ниже код для импорта файлов excel в datagridview. Это работа, если файл excel открыт мной. Если файл excel не открыт, datagridview возвращает пустую страницу, без заголовка, ячейки или строк. Поэтому, чтобы этот код работал, я должен открыть файл excel в office и запустить приложение. Где же ошибка?

Вот код :
Imports System.Data.OleDb
Public Class Form1
    Dim conn As OleDbConnection
    Dim da As OleDbDataAdapter
    Dim ds As New DataSet
    Dim cmd As OleDbCommand
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        On Error Resume Next
        OpenFileDialog1.Filter = "(*.xls)|*.xls|(*.xlsx)|*.xlsx|All files (*.*)|*.*"
        OpenFileDialog1.ShowDialog()
        conn = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & "data source='" & OpenFileDialog1.FileName & "';Extended Properties=Excel 8.0;")
        da = New OleDbDataAdapter("select * from [Sheet1$]", conn)
        conn.Open()
        ds.Clear()
        da.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
        TextBox1.Text = OpenFileDialog1.FileName.ToString
        conn.Close()
    End Sub
End Class


спасибо, любая помощь будет оценена по достоинству :)

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Что такое "открыто мной"?

sadam.cof

Привет, тадит, спасибо за ответ..
Я имею в виду, что "открыть мной" - это открыть файл excel с помощью office, и я запускаю свое приложение, а затем импортирую файл excel следующим образом http://i58.tinypic.com/121sbqe.jpg . Если я просто импортирую файл excel, не открывая файл excel в ms. office, он просто пустует datagridview в моем приложении, как это http://i61.tinypic.com/16780av.jpg . пожалуйста помочь..
извините за мой плохой английский..
большое спасибо.

1 Ответов

Рейтинг:
5

sadam.cof

Решенный,
Неверно в Connectionstring, поставщик должен старый excel 2010. provider=Microsoft.Jet.OLEDB.4.0; это должно быть так Provider=Microsoft.ACE.OLEDB.12.0
И это работает с кодом :

Imports System.Data.OleDb
Public Class Form1
    Dim conn As OleDbConnection
    Dim da As OleDbDataAdapter
    Dim ds As New DataSet
    Dim cmd As OleDbCommand
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        On Error Resume Next
        OpenFileDialog1.Filter = "(*.xls)|*.xls|(*.xlsx)|*.xlsx|All files (*.*)|*.*"
        OpenFileDialog1.ShowDialog()
        conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & "data source='" & OpenFileDialog1.FileName & "';Extended Properties=Excel 8.0;")
        da = New OleDbDataAdapter("select * from [Sheet1$]", conn)
        conn.Open()
        ds.Clear()
        da.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
        TextBox1.Text = OpenFileDialog1.FileName.ToString
        conn.Close()
    End Sub


Спасибо CodeProject! :)