Lazarus Masoga Ответов: 5

Импорт данных из excel в представление datagrid в vb.net



Я вставляю данные из документа excel в элемент управления datagridview в vb.net следующий код работает нормально, только если лист в excel называется Sheet1.
Dim conn As OleDbConnection
Dim dtr As OleDbDataReader
Dim dta As OleDbDataAdapter
Dim cmd As OleDbCommand
Dim dts As DataSet
Dim excel As String
Dim OpenFileDialog As New OpenFileDialog

OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
OpenFileDialog.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"

If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then

Dim fi As New FileInfo(OpenFileDialog.FileName)
Dim FileName As String = OpenFileDialog.FileName

excel = fi.FullName
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
dta = New OleDbDataAdapter("Select * From [Sheet1$]", conn)
dts = New DataSet
dta.Fill(dts, "[Sheet1$]")
DataGridView1.DataSource = dts
DataGridView1.DataMember = "[Sheet1$]"
conn.Close()


Проблема теперь в том, что лист может иметь другое имя, и я хочу получить первый лист в документе excel, несмотря на то, какое это имя. Любая помощь в этом отношении будет высоко оценена.

Спасибо

5 Ответов

Рейтинг:
35

Rakesh Meel

Использовать это....

Imports System.Data.SqlClient
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim DtSet As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\vb.net-informations.xls';Extended Properties=Excel 8.0;")
        MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection)
        MyCommand.TableMappings.Add("Table", "Net-informations.com")
        DtSet = New System.Data.DataSet
        MyCommand.Fill(DtSet)
        DataGridView1.DataSource = DtSet.Tables(0)
        MyConnection.Close()

    End Sub
End Class



или
побывать здесь...
как-импортировать-данные-из-excel-в-datagridview-by-visual-basic? forum=vbgeneral[^]


Рейтинг:
21

Ali_Abdelrhim

' This function open the excel file in excel application and get all the work sheet names and return it as array
   Private Function getExcelSheetsName(ByVal Excelfilename As String) As ArrayList
       Dim objExcel As Excel.Application
       Dim objWorkBook As Excel.Workbook
       Dim objWorkSheets As Excel.Worksheet
       Dim SheetList As New ArrayList
       objExcel = CreateObject("Excel.Application")
       objWorkBook = objExcel.Workbooks.Open(Excelfilename)
       For Each objWorkSheets In objWorkBook.Worksheets
           SheetList.Add(objWorkSheets.Name)
           ' ListBox1.Items.Add(objWorkSheets.Name)
       Next
       End_Excel_App()
       Return SheetList
   End Function


Тогда назовите это так:

'get all excel worksheet names
           Dim arrList As ArrayList = getExcelSheetsName(excel)
           'get the first sheet name and add the sign $ to it
           Dim sheetName As String = "[" + arrList(0) + "$]"


Alok9006585411

Как получить имя полей листов Excel из приведенных выше кодов

Рейтинг:
13

Ali_Abdelrhim

Это строка, которая получает имя поля листов:

Dim sheetName As String = "[" + arrList(0) + "$]"


число (0) - для первого листа, (1) - для второго и ... так один

Спасибо.


Рейтинг:
1

Member 12915322

уважаемый господин

мой quotion мой лист Excel фрист сохранить затем импортировать лист Excel
пожалуйста код пришлите мне


Рейтинг:
0

Maciej Los

Вместо набора данных используйте объект DataTable[^]. Он позволяет вам определять только Источник данных[^] свойство для DataGridView, независимо от того, параметр DataMember[^] ;)

MSDN писал:
Вам не нужно устанавливать это свойство (DataMember) при привязке к источнику данных, содержащему один список или таблицу.


Peter_jnr

Когда я решу использовать datatable, как вы можете установить другой datatable для чтения из источника данных, который теперь будет содержимым datagrid, и сохранить его для доступа (база данных, созданная во время выполнения с собственным именем пользователя)?
Я знаю, что мой вопрос не совсем ясен, но, пожалуйста, постарайтесь понять. Я пытаюсь записать содержимое datagrid для доступа в виде новой базы данных, созданной пользователем во время выполнения..
Заранее спасибо...

Maciej Los

Извиняюсь... Я считаю, что мой ответ на этот вопрос является полным. Я бы посоветовал вам задать еще один вопрос.

Member 11090340

tyutyuytu

Member 13230605

Я пробовал, но у меня такая проблема :
Ошибка [42000] [MySQL][драйвер ODBC 5.3 (a)] [mysqld-5.6.16]у вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса для использования рядом с '[Sheet1$] ' в строке 1