Поиск и добавление записей в Excel - Visual Basic .NET
Формулировка задачи:
Всем доброго времени суток)
стоит такая задача:
На форме есть кнопка и текстовое поле. В текстовое поле вводиться значение.
Есть документ Excel c листом1 формата:
столбец А Столбец B
консервы 6
бананы 8
молоко 2
Необходимо при нажатии на кнопку произвести поиск этого значения по столбцу А листа 1.
Если такого значения нет, то вписать его в конец списка и в столбец B проставить 1, а если еть то в столбец b прибавить 1
например, в текстовое поле введено : кефир
программа не нашла его в списке и в конец списка добавляет:
столбец А Столбец B
кефир 1
или же в текстовое поле введено бананы, программа приплюсовывет 1 напротив бананов, то есть их будет 9
Заранее спасибо за понимание и помощь!
Решение задачи: «Поиск и добавление записей в Excel»
textual
Листинг программы
- Public Class Form1
- Dim DT As DataTable
- Dim APP, WB, WS As Object
- Dim FPath As String = Application.StartupPath & "\Book1.xls"
- Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
- getDT(FPath, "Sheet1")
- DGV1.DataSource = DT
- End Sub
- Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
- For i = 0 To DT.Rows.Count - 1
- If DT.Rows(i)(0) = CB1.Text Then
- DT.Rows(i)(1) = TB1.Text
- DGV1.DataSource = DT
- Exit Sub
- End If
- Next
- DT.Rows.Add(CB1.Text, TB1.Text)
- DGV1.DataSource = DT
- CB1.Items.Clear()
- CB1.Items.AddRange((From Row In DT.Rows Select Row(0)).ToArray)
- End Sub
- Private Sub CB1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CB1.SelectedIndexChanged
- For Each row As DataRow In DT.Rows
- If row(0) = CB1.Text Then
- TB1.Text = row(1)
- End If
- Next
- End Sub
- Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
- saveDT(FPath, "Sheet1")
- End Sub
- Private Sub DGV1_SelectionChanged(sender As Object, e As EventArgs) Handles DGV1.SelectionChanged
- CB1.SelectedItem = DGV1.CurrentRow.Cells(0).Value
- TB1.Text = DGV1.CurrentRow.Cells(1).Value
- End Sub
- Sub getDT(FilePath As String, WorksheetName As String)
- DT = New DataTable
- APP = CreateObject("Excel.Application")
- WB = APP.Workbooks.Open(FilePath)
- WS = WB.Worksheets(WorksheetName)
- APP.Visible = False
- APP.ScreenUpdating = False
- APP.DisplayAlerts = False
- Dim LastRowIndex = WS.Cells(WS.Rows.Count, 1).End(-4162).Row
- With DT
- .Columns.Add("Name")
- .Columns.Add("Quantity")
- For i = 1 To LastRowIndex
- .Rows.Add(WS.Range("A" & i).Value, WS.Range("B" & i).Value)
- Next
- End With
- APP.Quit() : releaseObject(APP)
- CB1.Items.AddRange((From Row In DT.Rows Select Row(0)).ToArray)
- CB1.SelectedIndex = 0
- End Sub
- Sub saveDT(FilePath As String, WorksheetName As String)
- APP = CreateObject("Excel.Application")
- WB = APP.Workbooks.Open(FilePath)
- WS = WB.Worksheets(WorksheetName)
- APP.Visible = False
- APP.ScreenUpdating = False
- APP.DisplayAlerts = False
- For i = 0 To DT.Rows.Count - 1
- WS.Range("A" & i + 1).Value = DT.Rows(i)(0)
- WS.Range("B" & i + 1).Value = DT.Rows(i)(1)
- Next
- WB.close(True) : APP.Quit() : releaseObject(APP)
- MsgBox("готово")
- End Sub
- Public Sub releaseObject(ByVal obj As Object)
- Try
- System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
- obj = Nothing
- Catch ex As Exception
- obj = Nothing
- Finally
- GC.Collect()
- End Try
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д