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

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

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

Всем доброго здоровичка!!! Такая задача: Через OFD открываю xlsx файл. Там много листов. В листах 2 колонки, но могут быть 3. Вторая и третья колонки содержат дату (10.сент, 15.окт и т.д.) Необходимо в текстбокс записать текст из первой колонки, если во-второй совпадает дата с текущей. Вопросы: 1) как пробежать по всем листам. У меня смотрит только первый. 2) как посмотреть третью колонку, если во-второй нет этой даты. 3) имя листа почти совпадает с именем ТБ (лист "6" надо записать в ТБ "t6", лист "8" в ТБ "t8", листы "11" "112" "113" в ТБ "t11") Имя листа начинается с 6 и т.д. 4) Как Excel убрать из процессов. Он всегда там остаётся, файл становится активным и его нельзя потом открыть и редактировать. Пробовал несколько вариантов, всё равно там висит и не закрывается (закрываю через диспетчер задач).
Листинг программы
  1. If ff.ShowDialog = System.Windows.Forms.DialogResult.OK Then
  2. Dim kk As String = ff.FileName
  3. Dim appExcel As Object
  4. Dim I As Integer = 0
  5. appExcel = CreateObject("Excel.Application")
  6. appExcel.Workbooks.Open(kk)
  7. appExcel.Visible = False
  8. Dim rng As Excel.Range = appExcel.ActiveSheet.Range(startRegion).CurrentRegion
  9. Dim str As String = String.Empty
  10. ' For Each pp In appExcel.Workbooks
  11. For j = 1 To appExcel.sheets.Count
  12. appExcel.Worksheets.Item(j).Activate()
  13. With appExcel.ActiveSheet
  14. For I = 1 To rng.Rows.Count
  15. str = rng(I, 2).text
  16. If str = d.Text Then t6.Text = rng(I, 1).text
  17. Next
  18. End With
  19. Next
  20. ' Next
  21. End If
  22. Try
  23. releaseObject(appExcel.Sheets)
  24. releaseObject(appExcel.Workbooks)
  25. releaseObject(appExcel)
  26. appExcel.ActiveWorkbook.Close()
  27. appExcel.Quit()
  28. appExcel = Nothing
  29. Catch ex As Exception
  30. End Try
d.Text - лейбл, в котором отображается текущая дата в формате (10.окт)
Листинг программы
  1. Private Sub releaseObject(ByVal obj As Object)
  2. Try
  3. System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
  4. obj = Nothing
  5. Catch ex As Exception
  6. obj = Nothing
  7. Finally
  8. GC.Collect()
  9. End Try
  10. End Sub
Спасибо заранее!!!

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

textual
Листинг программы
  1.         If ff.ShowDialog = System.Windows.Forms.DialogResult.OK Then
  2.             Dim appExcel As Object, TB As TextBox, cCol As Integer, findDate = d.Text
  3.             appExcel = CreateObject("Excel.Application")
  4.             With appExcel.Workbooks.Open(ff.FileName)
  5.                 For Each sh In .sheets
  6.                     TB = Controls("t" + sh.name)
  7.                     If TB Is Nothing Then
  8.                         MsgBox("Не найдено поле для листа " + sh.name)
  9.                         Continue For
  10.                     End If
  11.                     TB.Clear()
  12.                     With sh.Range(startRegion).CurrentRegion
  13.                         cCol = .columns.count
  14.                         If cCol < 2 Then
  15.                             MsgBox("На листе " + sh.name + " меньше двух колонок")
  16.                             Continue For
  17.                         End If
  18.                         For i = 1 To .rows.count
  19.                             If .cells(i, 2).text = findDate OrElse (cCol >= 3 AndAlso .cells(i, 3).text = findDate) Then
  20.                                 TB.Text = .cells(i, 1).text
  21.                                 Exit For
  22.                             End If
  23.                         Next
  24.                     End With
  25.  
  26.                 Next
  27.             End With
  28.             appExcel.Quit()
  29.             appExcel = Nothing
  30.         End If

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


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

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

12   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы