Считывание данных из столбцов 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