sepehrtavangar Ответов: 1

Как подключить excel с помощью VB.NET


привет. У меня есть файл excel, который содержит 3 листа, которые на каждом листе в столбце А будут записаны другими программами.
Я просто хочу создать форму в Vb.net который содержит 3 текстовых поля и кнопку, нажав на которую программа считывает последнюю заполненную ячейку в столбце А с каждого листа и записывает ее в текстовое поле, принадлежащее конкретному листу

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

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim oExcelApp As New Excel.Application
        Dim oExcelBook As Excel.Workbook
        Dim oExcelSheet As Excel.Worksheet
        Dim sheetNumber As Integer = 1 '1-based array
        Dim oData As Object = Nothing
        Dim fileNameAndPath As String
        fileNameAndPath = textbox1.Text
        Try
            oExcelBook = oExcelApp.Workbooks.Open(fileNameAndPath)
            oExcelSheet = CType(oExcelBook.Worksheets("tag1"), Excel.Worksheet)
            'Read data
            Dim excelRange As String = column(1) & rowIndex.ToString()
            oData = oExcelSheet.Range(excelRange).Value
        Catch exp As COMException
            MessageBox.Show(exp.Message)
        Catch exp As Exception
            MessageBox.Show(exp.Message)
        End Try
        Return oData
    End Sub
End Class

F-ES Sitecore

Что не так с кодом, который у вас есть до сих пор?

sepehrtavangar

этот код вообще не работает

1 Ответов

Рейтинг:
9

Maciej Los

Цитата:
этот код вообще не работает


Ну, это частично сработало бы, но мне нужно несколько незначительных изменений...

1. Процедура не возвращает значение.
Он возвращает управление вызывающему коду.
Видеть:
Дополнительные Процедуры (Visual Basic) | Microsoft Docs[^]
Процедуры в Visual Basic | Microsoft Docs[^]

2. Вы объявили и инициализировали oData переменная, но вы не вернули его значение ни одному элементу управления в форме.

Пожалуйста, прочтите комментарии в приведенном ниже коде:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'create and initialize Excel instance
    Dim oExcelApp As New Excel.Application
    'define variable - type of Workbook
    Dim oExcelBook As Excel.Workbook
    'define variable - type of Worksheet
    Dim oExcelSheet As Excel.Worksheet
    Dim sheetNumber As Integer = 1 '1-based array
    Dim sData As String = ""
    Dim fileNameAndPath As String = textbox1.Text
    Try
        'open Workbook
        oExcelBook = oExcelApp.Workbooks.Open(fileNameAndPath)
        'get Workshhet
        oExcelSheet = CType(oExcelBook.Worksheets("tag1"), Excel.Worksheet)
        'get cell name
        Dim excelRange As String = "A1"
        'read data from A1 cell to string variable
        sData = oExcelSheet.Range(excelRange).Value.ToString()
        'put data to TextBox
        Me.TextBox2.Text = sData

        'NOTE:
        'you should close workbook and Excel application here!

    Catch exp As COMException
        MessageBox.Show(exp.Message)
    Catch exp As Exception
        MessageBox.Show(exp.Message)
    End Try
End Sub


sepehrtavangar

Привет большое спасибо за вашу замечательную помощь моя проблема почти решена но есть небольшая проблема что здесь мы читаем значение ячейки A1 в листе excel но мне нужно значение последней заполненной ячейки в столбце A для exapmle это может быть A17 в другой раз A33

Maciej Los

Итак, вы должны использовать Dim oExcelRange As Excel.Range = oExcelSheet.Range("A" & oExcelSheet.Rows.Count).End(xlUp) чтобы найти последнюю не пустую ячейку. Затем: sData = oExcelRange.Value.ToString()
Удачи вам!

sepehrtavangar

Большое спасибо за вашу замечательную помощь.

Maciej Los

Всегда пожалуйста.
Если ваш вопрос был решен, пожалуйста, примите мой ответ (зеленая кнопка).

sepehrtavangar

только что закончили,

Maciej Los

Спасибо.
Ваше здоровье!
Мацей