Zdravím, řeším požadavek kdy uživatel chce jedním kliknutím exportovat do excelu data, která má právě zobrazená v dataGridViewu. Pokouším se to vyřešit, ale pořád na to něják nemůžu kápnout. Nejdřív si vytvořím nový excel který někam uložím a potom do něj pošlu data. Zatím jsem přišel na to jak vložit jednu hodnotu. Řeším to takto:
Sub exportDoExcelu()
Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\JDedek\Honza\Projekty\VB#\nové přidělování úkolů (grafika)\import\Export.xls;Extended Properties=""Excel 8.0;HDR=No;"""
Dim spojeni As OleDb.OleDbConnection = New OleDb.OleDbConnection(connectionString)
Dim command As OleDb.OleDbCommand = New OleDb.OleDbCommand
command.CommandText = "INSERT INTO [List1$] (F1) VALUES ('ahoj')"
command.Connection = spojeni
spojeni.Open()
command.ExecuteNonQuery()
spojeni.Close()
End Sub
A zde je právě několik problémů. Tento kód funguje, ale problém vyvstane když potřebuju vložit více sloupců (což samozřejmě potřebuji). Myslel jsem že to zapíšu takto: "INSERT INTO [List1$] (F1,F2,F3) VALUES ('hodnota1','hodnota2',hodnota3)" To mi ale napíše, že příkaz insert into obsahuje neznámý název pole:F2 Pokud bych pojmenoval sloupce (např. ID,jmeno,mesto) a v dotazu je volal těmito jmény tak to funguje, jenže to je pro mě nepoužitelné, protože při exportu vytvářím nový sešit. Pokud bych toto vyřešil, není problém abych prošel cyklem dataTable kterou mám načtenou ve své aplikaci a po řádcích poslal data do excelu. (napadlo mě, jestli nejde excelu poslat celou dataTable najednou když už ji jednou mám načtenou, ale o tom jsem nikde nic nenašel). A pak bych měl ještě jednu otázku (ale to by byl pro mě spíše takový bonus). Teď se aplikace uživatele před exportem zeptá kam chce uložit excel, tuto cestu si uložím, vytvořím na daném místě sešit a pak ho zde naplním. Všiml jsem si ale, že některé profi aplikace umožnující export dat do excelu pouze otevřou nový sešit a vloží do něj data a na uživateli je jestli si ho někam uloží a nebo ho zavře bez uložení (a tím o vyexportovaná data příjde). V tomto případě mi není jasné jak se na asešit odkazovat (neznám adresu) abych do něj vložil data. Díky za jakoukoliv radu a přeji pěkný den
|