Считывание данных из столбцов Excel по условию - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем доброго здоровичка!!! Такая задача: Через OFD открываю xlsx файл. Там много листов. В листах 2 колонки, но могут быть 3. Вторая и третья колонки содержат дату (10.сент, 15.окт и т.д.) Необходимо в текстбокс записать текст из первой колонки, если во-второй совпадает дата с текущей. Вопросы: 1) как пробежать по всем листам. У меня смотрит только первый. 2) как посмотреть третью колонку, если во-второй нет этой даты. 3) имя листа почти совпадает с именем ТБ (лист "6" надо записать в ТБ "t6", лист "8" в ТБ "t8", листы "11" "112" "113" в ТБ "t11") Имя листа начинается с 6 и т.д. 4) Как Excel убрать из процессов. Он всегда там остаётся, файл становится активным и его нельзя потом открыть и редактировать. Пробовал несколько вариантов, всё равно там висит и не закрывается (закрываю через диспетчер задач).
d.Text - лейбл, в котором отображается текущая дата в формате (10.окт)
Спасибо заранее!!!

Решение задачи: «Считывание данных из столбцов Excel по условию»

textual
Листинг программы
        If ff.ShowDialog = System.Windows.Forms.DialogResult.OK Then
            Dim appExcel As Object, TB As TextBox, cCol As Integer, findDate = d.Text
            appExcel = CreateObject("Excel.Application")
            With appExcel.Workbooks.Open(ff.FileName)
                For Each sh In .sheets
                    TB = Controls("t" + sh.name)
                    If TB Is Nothing Then
                        MsgBox("Не найдено поле для листа " + sh.name)
                        Continue For
                    End If
                    TB.Clear()
                    With sh.Range(startRegion).CurrentRegion
                        cCol = .columns.count
                        If cCol < 2 Then
                            MsgBox("На листе " + sh.name + " меньше двух колонок")
                            Continue For
                        End If
                        For i = 1 To .rows.count
                            If .cells(i, 2).text = findDate OrElse (cCol >= 3 AndAlso .cells(i, 3).text = findDate) Then
                                TB.Text = .cells(i, 1).text
                                Exit For
                            End If
                        Next
                    End With
 
                Next
            End With
            appExcel.Quit()
            appExcel = Nothing
        End If

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы