Načtení dat z tabulky MS EXCEL do VB   zodpovězená otázka

VB.NET

Dobrý den,

hledám radu. Dá se někde najít "něco" čím bych mohl načítat excel tabulky přímo do datových polí ve VB? popř. může mí někdo poradit, jak na to (jsem ale úplný začátečník)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Před spuštěním následujícího kódu je třeba přidat referenci na excel do projektu:

Project -> Add Reference -> COM -> Microsoft Excel xx.x Object Library -> OK

Procedura:

Sub ExcelDataRead()

'Deklarace a vytvoření objektu excelu:
Dim appExcel As Excel.Application
appExcel = CType(CreateObject("excel.application"), Excel.Application)

'Otevření souboru
appExcel.Workbooks.Open(Filename:="C:\Dokumenty\soubor.xls")

'Načtení data z oblasti A1:A4 na listu "List1"  do pole
Dim pole(3) As Integer
For i As Integer = 0 To 3
  pole(i) = appExcel.Workbooks("soubor.xls").Worksheets("List1").range("A1").Offset(i).value() 
Next i

'Zavření souboru a excelu
appExcel.Workbooks.Close()
appExcel.Quit()

End Sub
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

v deklaraci :

Dim pole(3) as interger je syntax chyba (samozřejmě Integer)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V původní ukázce jsem to opravil, takže uvedený kód je již správně.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pro jistotu jsem ten kód ještě vyzkoušel a přišel jsem na to, že tam ješte chybí naimportovat jmený prostor Microsoft.Office.Interop.

Takže níže už ověřený a funkční kód:


Imports Microsoft.Office.Interop
Module Module1

  Sub ExcelDataRead()
    'Deklarace a vytvoření objektu excelu:
    Dim appExcel As Excel.Application = CType(CreateObject("excel.application"), Excel.Application)

    'Otevření souboru
    appExcel.Workbooks.Open(Filename:="C:\Dokumenty\soubor.xls")

    'Načtení data z oblasti A1:A4 na listu "List1"  do pole
    Dim pole(3) As Integer
    For i As Integer = 0 To 3
      pole(i) = appExcel.Workbooks("soubor.xls").Worksheets("List1").range("A1").Offset(i).value()
    Next i

    'Zavření souboru a excelu
    appExcel.Workbooks.Close()
    appExcel.Quit()

    'Ověření funkčnosti (zobrazí obsah buněk sešitu)
    MsgBox(pole(0) & vbCrLf & pole(1) & vbCrLf & pole(2) & vbCrLf & pole(3))
  End Sub

End Module

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji.

Je možné to načíst i do dvojrozměrného pole?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Určitě. Tou přidanou referencí (v první odpovědi) si vlastně do Vaší aplikace zabudujete funkčnost excelu. A když si pak otevřete excelovský soubor, můžete s ním dělat co se Vám zlíbí (jako byste byl v prostředí excelu a pracoval v něm s VBA). Proto máte i pod kontrolou veškeré buňky svého listu (a to nejen pro čtení, ale klidně i pro zápis). Pokud byste tedy třeba chtěl načíst oblast buněk A1:D4 do matice, stačí v uvedeném příkladu změnit ten vnitřek třeba takto (těch způsobů je samozřejmě více):

'Deklarace a vytvoření objektu excelu:
Dim appExcel As Excel.Application = CType(CreateObject("excel.application"), Excel.Application)

'Otevření souboru
appExcel.Workbooks.Open(Filename:="C:\soubor.xls")

'Načtení data z oblasti A1:D4 na listu "List1"  do pole
Dim pole(3, 3) As integer

   For rad As Integer = 0 To 3
     For sloup As Integer = 0 To 3
        pole(rad, sloup) = appExcel.Workbooks("soubor.xls").Worksheets("List1").cells(rad + 1, sloup + 1).value()
     Next sloup
   Next rad

'Zavření souboru a excelu
appExcel.Workbooks.Close()
appExcel.Quit()

Samozřejmě, pokud si chcete udělat kontrolu toho, co jste načetl, musíte odpovídajícím způsobem upravit i ten poslední msgbox.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

Je nějaký způsob jak "vynést" toto pole mimo tento Sub resp. Module ? Např. udělat kontrolu pole button_clikem nebo umožnit další práci s polem ve funkci. Teprve začínám s VB studiem 2005 a ještě mi není bohužel jasné jak lze vracet pole např. přes fukci atd.

Předem děkuji za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je celkem jednoduché a těch možností je skutečně hodně.

Tak ta nejjednodušší je nadeklarovat Vaše pole jako globální proměnnou pro celou Vaši aplikaci, pak k ní můžete přistupovat kdykoliv a odkudkoliv. Nebo lze použít i běžnou funci s návratovou hodnotou "pole". Stejně tak byste mohl použít běžnou proceduru a parametr (předávaný za názvem této procedury) definovat jako ByRef (odkazem), a pak takovýto parametr můžete použít pro obousměrné předávání hodnot do i z procedury (proceduře vlastně posíláte jenom "adresu", kde Vaše proměnná leží, takže pokud ji procedura změní, nemění tu zaslanou "adresu", neboli odkaz, ale mění to, co na té adrese leží - proto si tuto změněnou hodnotu můžete přečíst i z místa volání procedury).

Jenom pro ilustraci, první dva způsoby jsem Vám narycho nasypal do malé ukázky - snad se v tom zorientujete:

Imports Microsoft.Office.Interop
Public Class Form1
    ' proměnná pole() je deklarována v oblasti globálních deklarací (mimo funkci či metodu), je viditelná v rámci celého FORMu1:
    Private poleGlobal(3, 3) As Integer

    ' Proměnná pro odkazování na tabulku Excelu
    Private mujExcel As Excel.Application


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Deklarace a vytvoření objektu excelu:
        Dim appExcel As Excel.Application = CType(CreateObject("excel.application"), Excel.Application)

        'Otevření souboru
        appExcel.Workbooks.Open("C:\soubor.xls")


        'Načtení data z oblasti A1:D4 na listu "List1"  do pole
        'Dim poleGlobal(3, 3) As Integer

        For rad As Integer = 0 To 3
            For sloup As Integer = 0 To 3
                poleGlobal(rad, sloup) = appExcel.ActiveWorkbook.ActiveSheet.cells(rad + 1, sloup + 1).value()
            Next sloup
        Next rad

        'Zavření souboru a excelu
        appExcel.Workbooks.Close()
        appExcel.Quit()

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim soucet As Integer = 0
        For i As Integer = 0 To 3
            soucet += poleGlobal(i, 0)
        Next
        MsgBox("Součet prvního sloupce je " & soucet.ToString)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        ' aby využití funkce "dávalo smysl", zjistíme nejprve, jak velkou část tabulky máme načíst
        Dim rozmer As Integer = InputBox("Zadej velikost čtvercové matice :")

        ' nadeklarujeme si pracovní pole, abychom předvedli, že pole je možno "načíst" z funkce
        Dim mojepole(rozmer - 1, rozmer - 1) As Integer

        ' otevřeme xls soubor
        otevriExcel("c:\soubor.xls")

        ' zjistime jeho obsah pomocí volání funkce
        mojepole = zjistidata(rozmer)

        ' provedeme "analýzu dat"
        Dim soucet As Integer = 0

        For i As Integer = 0 To rozmer - 1
            For j As Integer = 0 To rozmer - 1
                soucet += mojepole(i, j)
            Next
        Next

        MsgBox("Součet všech prvků matice o rozměrech " & rozmer & " x " & rozmer & " je roven : " & soucet.ToString)


        ' zavřeme excel
        zavriExcel()


    End Sub

    ' pouze pro názornost vše rozházené do samostatných procedur
    Private Sub otevriExcel(ByVal jmeno As String)
        ' vytvoříme objekt Excelu
        mujExcel = CType(CreateObject("excel.application"), Excel.Application)
        'Otevření souboru
        mujExcel.Workbooks.Open(jmeno)
    End Sub


    Private Function zjistidata(ByVal rozm As Integer) As Integer(,)
        Dim pracovniPole(rozm - 1, rozm - 1) As Integer
        For rad As Integer = 0 To rozm - 1
            For sloup As Integer = 0 To rozm - 1
                pracovniPole(rad, sloup) = mujExcel.ActiveWorkbook.ActiveSheet.cells(rad + 1, sloup + 1).value()
            Next sloup
        Next rad
        Return pracovniPole
    End Function


    Private Sub zavriExcel()
        mujExcel.Workbooks.Close()
        mujExcel.Quit()

    End Sub
End Class

P.S. dejte si na Form 2 tlačítka a nezapomeňte referenci na excelovskou knihovnu. Přeji příjemné bádání.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji mnohokrát za odpověď. Provedl jsem vše podle návodu, ale nemohu přijít na chybu, kterou dělám. Mám přidanou referenci na Microsoft exel 11. versi 1.5 a taktéž verzi 2.3 přes Browse ... program files ... MSO.DLL tam mám stále.

Stále však není VB 2005 schopen rozpoznat Import a tudíš i Excel.Application.

Stává se mi to poměrně často. V některých případech mi to bere a jindy ne i když mám na pevno připojené MSO.DLL.

Problém pak musím řešit metodou jak z ITcrew - zavřít otevřít projekt. (reference zmizí ... i když mám uložený projekt) Smazat Imports... protože to "nebere" a znova přidat referenci "exel 11 v 1.5". I přes to ,že tam mám MSO.DLL stále...

Pak teprve mi projekt rozpozná "referenci".

Rád bych tedy věděl jakou dělám školáckou chybu popř. co mám nastavené špatně . Přeci není normální aby mi reference na exel někdy mizela po uložení a uzavření a znovu otevření projektu.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vím, že se hrozně naotravuju, ale nenašel jsem to nikde v MS helpu při MS.

Jak lze nastavit např čtení od D6 do E 11. Skoušel jsem to přes Offset a také přes Range ("D6:E11"), ale nepoužívám nejspíš správné nástroje.

Vím, že to jsou začátečnické otázky ,ale při helpu to nechacházím.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není to o Helpu, stačí si přečíst zaslaný kód:

ve funkci "Zjisti data" načítám postupně jednotlivé buňky ve dvojitém cyklu, kde "rad" znamená číslo řádku a "sloup" překvapivě číslo sloupce.

Takže neprocházejte od 0 do 10, ale třeba od 524 do 812.

Vše zůstave stejné, jenom, z důvodu úspory místa v matici, výsledky neukládejte na pozici 524, 525, 526 atd., ale transponujte si to tak, aby buňky z řádku číslo 524 něly v matici řádkový index 0, buňky z řádku 525 index 1 atp.

(používám raději excelovskou funkci cells než range, protože mohu i řádky číslovat a nemusím adresy složitě převádět na písmena (buňka A1 je pro mne cells(1,1), atd.)

Jinak to jde i tím Vámi zmiňovaným ofsetem, kdy zvolíte výchozí (levou horní) buňku, a pak ostatními procházíte pomocí toho ofsetu - jak to najdete v nápovědě k Excelu, příp. VBA pro Excel.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zkoušel jsem

"Takže neprocházejte od 0 do 10, ale třeba od 524 do 812." Jsem bohužel asi špatně nastavil. Takže mě nechodilo. Takže problém jsem vyřešil nakonec .range("D6") a pak samozřejmě nastavení rad atd..

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to teda nevím, co Vám nechodilo, ale pokud Vám chodil ten příklad v originálním provedení, tak touto modifikací by se přece nemělo nic změnit.

Pokud chcete načíst oblast dat D6:E11, pak musíte pouze vědět, že řádek D je řádek č. 4 a řádek E je řádek číslo 5 a když to dosadíte, dostanete něco takového (už to nezkouším, pouze přepisuji v originále, tak tam snad nenasekám moc chyb):

Private Function zjistidata(ByVal rad0 As Integer, ByVal rad1 as integer, _
        ByVal slou0 as integer, ByVal slou1 as integer) As Integer(,)
' rad0 je první načítaný řádek, rad1 poslední
' slou0 je první načítaný sloupec, slou1 poslední

   ' nadeklarujeme pole s potřebnými rozměry
   Dim pracovniPole(rad1 - rad0, slou1 - slou2) As Integer

   ' projdeme všechny řádky
   For rad As Integer = rad0 To rad1
       ' projdeme všechny sloupce
       For sloup As Integer = slou0 To slou1

           ' načteme hodnotu
           pracovniPole(rad-rad0, sloup-slou0) = mujExcel.ActiveWorkbook.ActiveSheet.cells(rad, sloup).value()

        Next sloup
    Next rad

Return pracovniPole
End Function

Samozřejmě ještě musíte upravit deklaraci toho pole "mojepole", aby mělo správné rozměry a dále vlastní volání pro Vámi zadaný rozsah provedete

mojepole = zjistidata(4, 5, 6, 11)
' 4 ... rad0 ( řádek "D")
' 5 ... rad1 ( řádek "E")
' 6 ... slou0 (sloupec "6")
'11 ... slou1 (sloupec "11")

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to Vám asi neporadím, ale zkuste to, co mně funguje.

- otevřete nový winform projekt ve VB 2005

- dejte na form 2 tlačítka

- v solution ewploreru (okno, mělo by být defaultně vpravo, ale můžete ho mít i jinde) poklepejte na položku "My Project"

- v záložce, která se Vám otevřela vyberte vlevo list "References"

- Já tam mám (v horním okně) defaultně reference na:

System

System.data

System.Deployment

System.drawing

System.windows.forms

system.xml

- klepněte na tlačítko Add pod tím horním oknem

- vyberte záložku COM

- Ze seznamu najděte něco, co zní jako "Microsoft Excel 11.0 Object Library" (číslo může být různé podle toho, co máte na Compu nainstalováno, ale osobně si myslím, že by se měla vybrat jenom jedna verze reference (Mám ve stejném seznamu ještě "Microsoft Excel 5.0 Object Library"), protože jinak by se metody mohly hádat u musel byste explicitně specifikovat, metodu z které knihovny má program použít)

- dejte OK

- do mého seznamu na kartě References přibyly 3 reference:

Microsoft Excel 11.0 Object Library

Microsoft Office 11.0 Object Library

Microsoft Visual Basic for Applications Extensibility 5.3

- nyní, když jsem překopíroval obsah mého předchozího příspěvku do Form1 (a pokud jsem stále měl testovací soubor .xls na příslušném místě), tak mi to normálně funguje.

Pokud dojdete k jinému výsledku, asi budete muset o radu (ohledně nějakého chybného nastavení) požádat někoho zkušenějšího.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji funguje to už normálně.

Právě řeším jak dostat poleGlobal do DataGridView1. Mám na to založit nové téma nebo se mohu tázat zde ?

Pokoušel jsem se vykoukat informace z tématu http://www.vbnet.cz/forum-tema--432-pole...

a

http://www.vbnet.cz/forum-tema--156-modi...

Ale bohužel končím na


Imports System.Data.OleDb
Public Class Form1
    Private poleGlobal(3, 3) As Integer
    Dim dt As DataTable
    dt = New DataTable("tabulka_1")

Kde mám i přes Imoport a Dim podtržené dt jako nenadeklarované.

Předem děkuji za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Doporučuji založit nové (čerstvější) vlákno, protože toto je už hodně hluboko (a můj návrh, aby se vlákna řadila dle data posledního příspěvku, ne dle data založení, nebyl shledán zajímavým) a přiznám se, už se mi do něj blbě leze (nebýt odkazu v e-mailu, asi bych ho už ani nenašel).

Jinak ta Vaše ukázka kódu nikterak nesouvisí s importem. Pouze v místě, kde to celé provádíte, program očekává deklaraci, Vy tam máte příkaz (iniciaci), který může být pouze uvnitř nějakého programového kódu (uvnitř SUB, Function,....).

Buď tedy musíte provést iniciaci společně s deklarací

dim dt as new DataTable

nebo iniciaci dát dovnitř do vhodného modulu, např.

Public Class Form1
   Dim dt as Datatable
   ...
   ...
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      dt = new DataTable("tabulka_1")
      ...
   End Sub
   ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevíte proč mi to už u řádku

Imports Microsoft.Office.Interop

Hází chybu?

Microsoft.Office.Interop Není nalezeno a VB prostě nezná.

Není to nějakou špatnou instalací něčeho, nebo někde dělam chybu.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Máte starší verzi MS Office, ve které chyvbí interop knihovny

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám 2003 Office.

Stačilo by mi vysvětlit jen dva kroky.

Otevřít excel. pomocí tlačítka Načíst buňku A5 z listu jedna do stringu a zapsat string do jiného xls (třeba na list5 C4) + uzavřít soubory.

C:\temp\Test1.xls

C:\temp\test2.xls

Díky za případnou radu (již jsem mírně pokročilý, ale stále začátečník, tak opatrně :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dám-li do referencí "Microsoft Excel 10.0 Objekt Library", pak se mi při sestavení aplikace vygenerují a do referencí přidají knihovny:

Interop.Excel.dll

Interop.Microsoft.Office.Core.dll

Interop.Office.dll

Interop.VBIDE.dll

bez kterých výše uvedené ukázky nefungují.

V úpravě na vaše zadání je předpokládána existence souboru i listů 1 a 5

 Public Class Form1
   Private Sub Form1_Load(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles MyBase.Load
     Dim MojeExcelAplikace As Excel.Application = _
        CType(CreateObject("excel.application"), Excel.Application)
     MojeExcelAplikace.Workbooks.Open(Filename:="C:\sešit1.xls")
     ' Načtení obsahu buňky A1 na listu List1
     Dim ObsahA1 As String = _
       MojeExcelAplikace.Workbooks("sešit1.xls").Worksheets("List1").range("A1").value()
     ' Zápis do C5 na listu List5
     MojeExcelAplikace.Workbooks("sešit1.xls").Worksheets("List5").range("C5").value() = ObsahA1
     ' Uložení změn:
     MojeExcelAplikace.Workbooks("sešit1.xls").Save()
     ' Ukončení:
     MojeExcelAplikace.Workbooks.Close()
     MojeExcelAplikace.Quit()
     End
   End Sub
 End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Moc děkuji za super jednouchý ukázkový prograam.

Vše funguje přesně jak jsem potřeboval.

Ještě doplnim již výše zmiňované přidání do referencí. (Pro lidi co čtou ob řádek a pak se diví, že jim něco nefunguje :))

Před spuštěním následujícího kódu je třeba přidat referenci na excel do projektu:

Project -> Add Reference -> COM -> Microsoft Excel xx.x Object Library -> OK

Díky Bodua

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

Všichni tady řešíte, jak načíst dat z excelu, ale všude je pouze přístup k souboru, který je uložený na disku.

1/ Jak ale načíst data z tabulky, která již je otevřená , třeba jako "Sešit 1" a ještě není uložena. Nemohu tedy přiřadit soubor do kolekce "moje aplikaceů přes "OPEN". Jak přiřadit takový soubor do kolekce "moje aplikace" ?. Nějak přes ..ADD(). ?.

2/

Pokud mám dvě otevřené aplikace, tedy přes "OPEN" a již nějaké pracovní, třeba "SEŠIT 1", který je již v jiné Excel aplikaci, jak přiřadím oba sešity do jedné aplikace?ˇ- Čili druhý sešit se stane členem jedné aplikace, abych mohl jednodušeji s tím pracovat.

SA

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano vim pokud používáš vyšší verzi jazyka nez je 6 tak to musis teklarovat nejak takhle

Imports Microsoft.Office.Core

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahoj, koukám na Tvůj kód.

Můžeš napsat taktéž proceduru import třeba nějakých dvou buněk, ale za malinko změněných podmínek, t.j:

Existují dva soubory Excel a jsou již otevřeny.Obě buňky jsou již vybarveny. Chci natáhnout tedy buňku z njakého aktivního sešitu a aktivního listu, kde je již proveden výběr, aniž bych otevíral nějaký další soubor.

Ahoj Saša

[email protected]

nahlásit spamnahlásit spam 0 odpovědětodpovědět

>Existují dva soubory Excel a jsou již otevřeny

Čím jsou otevřeny? Excelem nebo aplikací VB.NET?

Jestli Excelem, ve VB již soubor asi neotevřete.

>Existují dva soubory Excel a jsou již otevřeny.Obě buňky jsou již vybarveny. Chci natáhnout tedy buňku z njakého aktivního sešitu a aktivního listu, kde je již proveden výběr, aniž bych otevíral nějaký další soubor

Přeložte to do češtiny.

Vy snad chcete číst data z oblasti paměti, ve které pracuje spuštěný Excel?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Překládám do Vaší češtiny :

Soubor je již otevřený přímo aplikací Excel.

Někdo tedy pracuje v Excelu a má tam nějaké pracovní data.

S těmi daty ale z VB umím pracovat jen tak, že si nejdříve soubor v Excelu musím uložit, ukončit aplikaci Excel a já pak z VB tento soubor otevřu pro sebe.To umím.

Co ale neumím, je abych si ze souboru, otevřeného aplikací Excel, přímo pomocí VB přečetl nějaká data. Třeba z buňky A1.

A nemusel přitom nejdříve soubor, pod aplikací Excel uložit, a pak jej přes VB otevřít. Nevím, co je na tom tak divného.I přes to, že si nějaká aplikace pro sebe rezervuje soubor, to neznamená, že jiná aplikace neumí si něco v tomto souboru přečíst.

Apropó, nevím, proč používáte takový tón, mě to rozhodně nepřidá na chuti pak s někým takhle komunikovat, to si přejete? To mám být stejně ostrý, jako Vy,abych byl na Vaší úrovni komunikace? Je to skutečně nutné?

Saša

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den. Pokud jsem to správně pochopil potřebujete číst data z otevřeného excelu.

Tento kód přečte data z excelu i v případě že je sešit otevřen jiným uživatelem. Načítají se data která jsou v současné chvíli zapsané v buňkách. (tzn. pokud uživatel něco změní, Vám se načtou již změněná data i bez toho, že by uživatel tyto změny uložil).

Sub nacistDataZexcelu(ByVal strFilePath As String, ByVal list As String)

    Dim ExcelTable As DataTable
    Dim ExcelAdapter As OleDb.OleDbDataAdapter


        ExcelTable = New DataTable
        Dim ExcelSpojeni As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""")


        'načtení obsahu listu
        ExcelAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM [" & list & "]", ExcelSpojeni)

        


        Try
            ExcelAdapter.Fill(ExcelTable)
        Catch ex As Exception
            Msgbox("Chyba při otevření spojení")
            Exit Sub
        Finally
            ExcelSpojeni.Close()
        End Try




        frmAplikace.dgv4Import.DataSource = ExcelTable


    End Sub

Proceduře předáte parametrem cestu k souboru a jméno listu ze kterého chcete data načítat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Chci se zeptat, bude to fungovat i pokud by se ta aplikace spustila i na PC kde není Excel ? Jde nějak zahrnou tu knihovnu aby se "skompilovla" i s EXE souborem ?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Je to parádní , ale jak to vypíšu třeba do label boxu? potřebuji vypsat vždy z excel tabulky pole C7 do labelu.

Dík za radu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravim nechcem zakladat novu temu tak pisem sem... Exporty z excelu mi funguju ale co ked mam v bunke obrazok ? ako ho exportnem z toho excelu do pictureboxu ?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback