Поиск и добавление записей в 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

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


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

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

7   голосов , оценка 3 из 5