Считывание данных из столбцов 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д