Заполнение столбцов DataGrid с данными Excel в VB - PullRequest
1 голос
/ 26 марта 2012

Хорошо, я наконец-то заставил этот код работать после нескольких часов труда:

        Dim path As String = OpenFileDialog1.FileName
        Dim myDataset As New DataSet()
        Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""")
        Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
        myData.Fill(myDataset)
        DataGridView1.DataSource = myDataset.Tables(0).DefaultView

Теперь, когда я понял, что собираюсь попытаться разместить данные в определенном месте.В моем приложении у меня есть сетка данных с 4 столбцами.То, что я хотел бы сделать, это поместить столбец A файла Excel под 1-й столбец таблицы данных, а столбец C файла Excel во второй столбец таблицы данных.

Заменить:

    DataGridView1.DataSource = myDataset.Tables(0).DefaultView

с:

    DataGridView1.columns(0) = myDataset.Tables(0).columns(0)
    DataGridView1.columns(1) = myDataset.Tables(0).columns(2)

Очевидно, что это не работает, и что-то подсказывает мне, что мне может понадобиться цикл for для импорта данных, но я никогда раньше не импортировал информацию из файла Excel и не делал егохуже того, я никогда не работал с datagridview, поэтому я понятия не имею, как это сделать.

Я бы хотел сделать что-то подобное, если бы мог:

        For x = 1 To xldoc.rows.length - 1
            DataGridView1.Item(0, x).Value = CType(xlDoc.Cells(0, x + 1), Excel.Range).Text
        Next

Ответы [ 2 ]

2 голосов
/ 05 апреля 2012

Это оказалось намного проще для импорта данных.Я публикую это на тот случай, если кто-нибудь еще столкнется с этой темой.

    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        xLApp = New Excel.Application
        xLBook = xLApp.Workbooks.Open(OpenFileDialog1.FileName)
        xLSheet = xLBook.Worksheets("Sheet1")
        For x = 1 To xLSheet.UsedRange.Rows.Count - 1
            DataGridView1.Rows.Add()
            DataGridView1.Item(0, x - 1).Value = xLSheet.Cells(1 + x, 1).value
            DataGridView1.Item(1, x - 1).Value = xLSheet.Cells(1 + x, xLSheet.UsedRange.Columns.Count).value
        Next
    End If

Даже не беспокойтесь:

    Dim myDataset As New DataSet()
    Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""")
    Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
0 голосов
/ 26 марта 2012

Думайте об этом примерно следующим образом:

  • Рабочая книга Excel = База данных

  • Рабочий лист Excel = Таблица

  • Каждый столбец Excel = Столбец таблицы

  • Каждая строка Excel = Строка таблицы

  • Ячейка Excel = определенное значение столбца в определенной строке

Если в Excel есть заголовки столбцов, это имена ваших полей. Теперь измените ваш SQL-запрос, чтобы выбрать нужные столбцы и связать их как обычно.

...