Jayanta Modak Ответов: 2

Как экспортировать данные из datagridview в excel


привет
пожалуйста помочь
Как экспортировать данные из datagridview в excel
когда я нажимаю кнопку button1, то открываю excel, но пустой экспорт данных из datagridview

когда я нажимаю кнопку button2, то появляется ошибка

пожалуйста помочь

http://www.mediafire.com/file/vcm9sg3o8qzpp5t/Capture.PNG

http://www.mediafire.com/file/6r5xgztxzqhbz1z/Button+2 + ошибка. png

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

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim app_xls As Object
        Dim lig_cpt, col_cpt As Integer
        app_xls = CreateObject("excel.application")
        app_xls.workbooks.add()

        app_xls.visible = True
        'kkkkkkk
        Try
            For col_cpt = 0 To DataGridView1.ColumnCount - 4
                app_xls.activesheet.cell(1, col_cpt, +1).value = DataGridView1.Columns(col_cpt).HeaderText
            Next
            For lig_cpt = 0 To DataGridView1.Rows.Count - 1
                For col_cpt = 0 To DataGridView1.ColumnCount - 4

                    If IsNumeric(DataGridView1.Item(col_cpt, lig_cpt).Value) Then
                        app_xls.activesheet.cells(lig_cpt + 2, col_cpt + 1).value = CDbl(DataGridView1.Item(col_cpt, lig_cpt).Value)
                    Else
                        app_xls.activesheet.cells(lig_cpt + 2, col_cpt + 1).value = DataGridView1.Item(col_cpt, lig_cpt).Value
                    End If

                Next
                
            Next
        Catch ex As Exception

        End Try
    End Sub

======================================================

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim i As Integer
        Dim j As Integer

        'create object of excel
        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
            For i = 1 To Me.DataGridView1.RowCount
                .cells(i, 1) = Me.DataGridView1.Rows(i - 1).Cells("id").value
                For j = 1 To DataGridView1.Columns.Count - 1
                    .cells(i, j + 1) = DataGridView1.Rows(i - 1).Cells(j).Value
                Next
            Next
        End With

        ExcelApp.Visible = True
        '
        ExcelSheet = Nothing
        ExcelBook = Nothing
        ExcelApp = Nothing
    End Sub

[no name]

Вы получили ошибку, но не можете потрудиться скопировать/вставить текст ошибки? Прочтите сообщение об ошибке, а затем логически примените то, что оно говорит вам, к вашему коду, где возникает ошибка.

Jayanta Modak

http://www.mediafire.com/file/6r5xgztxzqhbz1z/Button+2 + ошибка. png

текст ошибки-столбец с именем id не может быть найден. Имя параметра: columnName

[no name]

Хорошо, так что довольно понятны. Какой у вас вопрос? Разве вы не можете логически применить это сообщение об ошибке к своему коду?

Jayanta Modak

если я удалю эту строку, то ошибки нет, экспорт данных в excel, но теперь две проблемы
текст заголовка и идентификатор не приходят в excel

Jayanta Modak

Я новичок в этом деле vb.net Итак, я не знаю правильного процесса. пожалуйста, помогите мне, сэр. пожалуйста

Jayanta Modak

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

Dim ExcelApp Как Объект, ExcelBook Как Объект
Dim ExcelSheet Как Объект
Dim i как целое число
Dim j как целое число

"создать объект excel
ExcelApp = CreateObject ("Excel.Приложение")
ExcelBook = ExcelApp.Книги.Добавь
ExcelSheet = ExcelBook.Рабочие листы(1)

С ExcelSheet

Для i = 1 To Me. DataGridView1.RowCount
. cells(i, 1) = Me.DataGridView1.Rows (i - 1).Ячейки (0). Значение
Для j = 1 - DataGridView1. Columns.Количество-1
.клетки(Я, J + 1) = DataGridView1.Строк(я - 1).Ячейки (j). значение
Следующий
Следующий

Конец С

ExcelApp.Видимое = Истинное
'
ExcelSheet = Ничего
ExcelBook = Ничего
ExcelApp = Ничего

эта кодировка

2 Ответов

Рейтинг:
2

Ralf Meier

Взгляните на этот код :

app_xls.activesheet.cell(1, col_cpt, +1).value = DataGridView1.Columns(col_cpt).HeaderText

За col_cpt вы ввели дополнительную запятую, которая здесь совершенно неверна - я полагаю, вы не хотели ее туда помещать.
Посмотрите, что делает ваш код, если вы его удалите ...


Рейтинг:
1

NightWizzard

Чтобы установить значение любой ячейки используйте этот синтаксис:

app_xls.activesheet.Range(Range).Value = Value

где Range содержит строку с координатами нужной ячейки-например:
app_xls.activesheet.Range("A1").Value = Value

чтобы поместить значение в ячейку в столбце А первой строки.


Jayanta Modak

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

Dim ExcelApp Как Объект, ExcelBook Как Объект
Dim ExcelSheet Как Объект
Dim i как целое число
Dim j как целое число

"создать объект excel
ExcelApp = CreateObject ("Excel.Приложение")
ExcelBook = ExcelApp.Книги.Добавь
ExcelSheet = ExcelBook.Рабочие листы(1)

С ExcelSheet

Для i = 1 To Me. DataGridView1.RowCount
. cells(i, 1) = Me.DataGridView1.Rows (i - 1).Ячейки (0). Значение
Для j = 1 - DataGridView1. Columns.Количество-1
.клетки(Я, J + 1) = DataGridView1.Строк(я - 1).Ячейки (j). значение
Следующий
Следующий

Конец С

ExcelApp.Видимое = Истинное
'
ExcelSheet = Ничего
ExcelBook = Ничего
ExcelApp = Ничего

эта кодировка

NightWizzard

Если вы попытаетесь заменить заголовки столбцов A, B, C,....(и так далее): вы не сможете. Поместите ваши заголовки в первую строку (A1, B1...) и поместите ваши данные в следующие строки.

Jayanta Modak

Я НЕ ПЫТАЮСЬ НИЧЕГО ЗАМЕНИТЬ, Я ПРОСТО ХОЧУ ВСТАВИТЬ ЗАГОЛОВОК СТОЛБЦА INSERT В ФАЙЛ EXCEL. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ

NightWizzard

Вы должны поместить имена заголовков так же, как вы помещаете данные в ячейки. Присмотритесь внимательнее к своим вложенным циклам и попытайтесь представить, какие ячейки затрагиваются на каждом шаге-вот в чем ошибка! Если вы используете мой пример с объектом Range, вы можете распознать, что не так с вашим кодом.