VB.NET a Excel (problém s verzemi)   otázka

C#, Threading, .NET

Prosím pomozte... píšu databázovou aplikaci, které umí data z DatagridView překlopit do Excelu. K tomu jsem načetl referenci "Microsoft Excel 12 Object Library" (je to z Office 2007). V kódu pak používám

Imports Excel = Microsoft.Office.Interop.Excel

Když ale spouštím (programuju) aplikaci v prostředí VB.NET doma, kde mám Office 2010, tak to hlásí chybu a chce to odpovídající Object Library...takže původní referenci zruším a použiju referenci z Office 2010.

Dá se to nějak ošetřit? Prosím pokud možno s ukázkou kódu jak by se to dalo vyřešit.

Děkuji

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

Dobrý den, řešil jsem podobný problém. Mně pomohlo, když jsem při nastavování referencí na knihovny Office nevybral referenci na COM rozhraní, ale místo toho jsem vybral knihovny excelu v záložce .Net

To má za výsledek to, že příslušná knihovna se přibalí do adresáře aplikace. Poté jsem už problém s verzi neměl.

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

Vyzkouším a uvidím večer. Zatím jsem řešil tak, že jsem tu knihovnu v systému našel a dal ji jako lokální k aplikaci a nastavil na ni cestu.. Zatím to funguje, ale nevím co bude třeba při kompilaci aplikace apod.

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

Toto je klasický problém s COM rozhraním, kde různé jeho verze jsou mezi sebou nekompatibilní. Existují dvě možnosti jak to řešit:

1) Zajistit, že všude bude stejná verze Office (zrušit referenci na původní a přidat na novou je debilita, to by byly v podstatě dvě verze programu kvůli různým knihovnám).

2) Late Binding. Nepřidávejte žádnou referenci na rozhraní Excelu, ale použijte metodu CreateObject. Sice tím přijdete o IntelliSense, ale bude vždy vytvořena instance toho rozhraní, které je nainstalováno.

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

Prosím dalo by se to konkretizovat ukázkou kódu...? nejlépe i s popisem. Mám datagridview, v něm je počet řádků a sloupců a potřebuju to exportovat do excelu.

Děkuji

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

VYŘEŠENO... děkuji

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

Nechápu proč každý musí pro export dat do Excelu používat za každou cenu jeho COM rozhraní. Neexistuje snad milionkrát jednodušší, spolehlivější a univerzálnější export do CSV a následný import do čehokoliv?

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

To jistě ano, ale často to bývá přímo požadavek zákazníka, který dodá xlt šablonu (někdy ani to ne) a chce pracovat jen s excelem a ničím jiným. Většinou je požadavek na to, aby na jedno zmáčknutí tlačítka byl v excelu report, kontingenční tabulka a pěkný graf. Kdyby zákazníkům stačilo CSV byl by svět mnohem jednodušší.

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

Pokud máte ambice na další zakázky .NET vs Excel, stálo by za úvahu se porozhlédnout se po hotovém řešení např. SpreadSheetGear

http://www.spreadsheetgear.com/

nebo

http://www.gemboxsoftware.com/

A mnoho dalších.

Typnu to na 3 zakázky a máte to zaplacený. A nemusíte řešit dobudoucna telefony od klienta, že přešel na vyšší verzi Office a Váš soft mu nefunguje.

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