Mi Shan Ответов: 1

Как сохранить только выбранные строки в VB.NET 2016 год


Я создал datagridveiw для отображения базы данных access. Мне нужно создать функцию экспорта из datagrideview в MS Excel. Я попытался сохранить все данные для экспорта из datagrideview в MS Excel, и это сработало.


Что мне действительно нужно, так это то, что мне нужно, чтобы пользователь выбирал записи (строки), а выбранные строки должны храниться в MS Excel. Как я могу изменить нижеприведенную кодировку, чтобы сохранить только выбранные строки?


чтобы выбрать строки я создал столбец строк в datagridview с помощью следующей команды
Dim checkBoxColumn As New DataGridViewCheckBoxColumn()
        checkBoxColumn.HeaderText = ""
        checkBoxColumn.Width = 30
        checkBoxColumn.Name = "checkBoxColumn"
        DataGridView1.Columns.Insert(0, checkBoxColumn)


Что я уже пробовал:

<pre>Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Try
        Button3.Text = "Please Wait..."
        Button3.Enabled = False

        SaveFileDialog1.Filter = "Excel Document (*.xlsx)|*.xlsx"
        If SaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Dim xlApp As Microsoft.Office.Interop.Excel.Application
            Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
            Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
            Dim misValue As Object = System.Reflection.Missing.Value
            Dim i As Integer
            Dim j As Integer

            xlApp = New Microsoft.Office.Interop.Excel.Application
            xlWorkBook = xlApp.Workbooks.Add(misValue)
            xlWorkSheet = xlWorkBook.Sheets("sheet1")

            For i = 0 To DataGridView1.RowCount - 2
                For j = 0 To DataGridView1.ColumnCount - 1
                    For k As Integer = 1 To DataGridView1.Columns.Count
                        xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText
                        xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString()
                    Next
                Next
            Next

            xlWorkSheet.SaveAs(SaveFileDialog1.FileName)
            xlWorkBook.Close()
            xlApp.Quit()

            releaseObject(xlApp)
            releaseObject(xlWorkBook)
            releaseObject(xlWorkSheet)

            MsgBox("Successfully saved" & vbCrLf & "File are saved at : " & SaveFileDialog1.FileName, MsgBoxStyle.Information, "Information")

            Button3.Text = "Export To MS Excel"
            Button3.Enabled = True
        End If
    Catch ex As Exception
        MessageBox.Show("Failed to save !!!", "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Return
    End Try

1 Ответов

Рейтинг:
0

phil.o

For i = 0 To DataGridView1.RowCount - 2
Это повторяется по всем строкам, кроме последней.

Измените это на
For i = 0 To DataGridView1.SelectedRows.Count - 1
и он будет повторяться только по выбранным строкам.

Затем вам нужно будет настроить код внутри ваших трех циклов для работы с фактической выбранной строкой:
For k As Integer = 1 To DataGridView1.Columns.Count
   DataGridViewRow row = DataGridView1.SelectedRows.Item(i)
   '' TODO change implementation to take actual row into consideration


Mi Shan

Я создал флажок на datagridview с помощью следующей команды

Dim checkBoxColumn как новый DataGridViewCheckBoxColumn()
checkBoxColumn.HeaderText = ""
checkBoxColumn.Ширина = 30
checkBoxColumn.Name = "checkBoxColumn"
DataGridView1.Columns.Insert(0, checkBoxColumn)

как я могу выбрать только проверенные строки из Datagridview? любая идея, мысль пожалуйста

phil.o

- Создайте пустой список строк
- Итерация по строкам
- Добавить текущую строку в список, если она отмечена
- Верните список
- Действовать по строкам ранее полученного списка