vb.net funckja wczytaj dane, po wykonaniu nie zwalania używanego procesu

0

Witam,
Mam problem z funkcją wczytywania danych z excela. Po wywołaniu funkcji wykonuje się poprawnie i zwracam zamierzoną wartość, jednak gdy podglądam procesy działające w tle widzę mnożący się po każdym uruchomieniu proces excel.exe
czy zadeklarowałem coś nie nie tak? z góry dziękii za pomoc

 Function wczytaj() ' funkcja wczytywania danych

Dim roboSite As String
        roboSite = TextBox1.Text
        If roboSite = "" Or roboSite = "0" Or roboSite = "00" Or roboSite = "000" Or roboSite = "000" Then

  


        Else
            Dim oApp As New Excel.Application
            Dim oWBa As Excel.Workbook = oApp.Workbooks.Open("d:\wynik.xlsx")
            Dim oWS As Excel.Worksheet = DirectCast(oWBa.Worksheets(1), Excel.Worksheet)
            oApp.Visible = False

            Dim IP


          IP = oWS.Range("g" & roboSite).Value

            oWBa.Close()
 

            Return IP

       

        End If
    End Function
0

Brakuje ci oApp.Close. Ale to i tak nic nie da. Excel w takiej postaci powoduje wyciek pamięci "memory leak". Pisałem juz o tym z jakieś 10 lat temu. Przewagą NET jest to, że możesz pokombinować z GarbageCollectorem. Nawet na tym forum ostatnio widziałem o tym...

0

hmm myślisz, że lepiej dobrać się do danych w excelu w inny sposó?oledb?

0

OleDB tak. Ale jeszcze lepiej, jakbyś miał w tym pliku nazwane obszary - wtedy są traktowane jako tabele...

0

ok dzięki spróbuję

0

spróbowałem czegoś takiego:
Dim provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""d:\test.xlsx"";Extended Properties=Excel 12.0;Mode=Share Deny Write;"
Using Con As New System.Data.OleDb.OleDbConnection(provider)
Con.Open()
Dim cmd As OleDbCommand = New OleDbCommand("Select * From [Sheet1$A1:A1]", Con)
End Using

mam tylko pytanie jak np wybrać 3 komórki i zapisać je do zmiennych?

1 użytkowników online, w tym zalogowanych: 0, gości: 1