Как мне заполнить следующую пустую ячейку данными текстового поля в Excel, используя vb. net? - PullRequest
0 голосов
/ 23 марта 2020

Мне не хватает опытного программиста, и я действительно борюсь с какой-то курсовой работой, которая должна быть в конце Пасхи. Я попытался использовать do while l oop и индекс, чтобы попытаться проверить каждую доступную ячейку в столбце «A» Excel - но когда я запускаю свой код, программа перезаписывает все данные, ранее сохраненные в электронной таблице, и записывает эти значения для ячейки "A2 - F2". Если бы кто-то мог объяснить мне точно, что я делаю неправильно и как преодолеть это в действительно простых терминах, это было бы по-настоящему удивительно.

Вот копия моего кода на данный момент:

Imports System.IO
Imports System.Windows.Forms


    Private Sub btnClientSave_Click(sender As Object, e As EventArgs) Handles btnCSave.Click
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        Dim index As Integer


        Dim filename As String = Application.StartupPath & "\spreadsheet"

        oExcel = CreateObject("excel.application")
        oBook = oExcel.workbooks.add

        oSheet = oBook.worksheets(1)

        oSheet.range("A1").value = "Forename"
        oSheet.range("B1").value = "Surname"
        oSheet.range("C1").value = "DOB"
        oSheet.range("D1").value = "Phone number"
        oSheet.range("E1").value = "Email"
        oSheet.range("F1").value = "Address"
        oSheet.range("A1:B1:C1:D1:E1:F1").font.bold = True

        index = 1
        Do While oSheet.range("A" & index).value <> ""
            index = index + 1
        Loop

        If oSheet.range("A" & index).value = "" Then
            oSheet.range("A" & index).value = txtCForename.Text
            oSheet.range("B" & index).value = txtCSurname.Text
            oSheet.range("C" & index).value = txtCDOB.Text
            oSheet.range("D" & index).value = txtCNumber.Text
            oSheet.range("E" & index).value = txtCEmail.Text
            oSheet.range("F" & index).value = txtCAddress.Text
        End If
        oBook.saveas(filename)
        oExcel.quit




    End Sub

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Проверьте, существует ли книга уже перед ее созданием

If File.Exists(filename) Then
    oBook = oExcel.workbooks.open(filename)
Else
    oBook = oExcel.workbooks.add
End If

и альтернативой Do .. Пока L oop будет

index = oSheet.usedrange.rows.count + 1
0 голосов
/ 23 марта 2020

В вашем коде строка:

oBook = oExcel.workbooks.add

создает новую пустую рабочую книгу. oSheet также пусто. Предыдущих данных нет. в листе; поэтому код всегда заполняется из строки # 2

...