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