OLE di VB 6.0 ... in DOT NET??

martedì 18 settembre 2007 - 02.05

freesdraaa Profilo | Newbie

ciao,

vi ricordate che in vb 6.0 c'erano quegli oggetti che tu li ficcavi senza riguardo in un form, li legavi ad un filetto DOC, XLS, PPT o altro, e a runtime loro ti visualizzavano il contenuto dei filetto legato incastonando l'editor predefinito nel tuo form??

In DOT NET c'è qualcosa di simile?

L'esigenza mia è soltanto quella di visualizzare in una sorta di preview il contenuto di file DOC, XLS, PPT all'interno di un form VB. NET (o anche C#, non c'è problema!)

Qualcuno sa come fare, o qualche documentazione?

grazie mille

Brainkiller Profilo | Guru

>L'esigenza mia è soltanto quella di visualizzare in una sorta
>di preview il contenuto di file DOC, XLS, PPT all'interno di
>un form VB. NET (o anche C#, non c'è problema!)

La prima cosa che mi viene in mente è provare ad utilizzare un WebBrowser control e farlo puntare al file doc, xls. Secondo logica dovrebbe aprirlo all'interno come tu desideri.

Probabilmente Visual Studio 2008 con Vista porteranno novità in questo senso visto che in Vista c'è un nuovo meccanismo per la preview dei documenti.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

freesdraaa Profilo | Newbie

Grazie mille! farò qualche test con quel controllo e vediamo che succede ;-)

freesdraaa Profilo | Newbie

Ciao!

Allora... ho fatto un bel pò di analisi in merito.

Ho scoperto che l'oggetto WebBrowser (http://msdn2.microsoft.com/it-it/library/system.windows.forms.webbrowser(VS.80).aspx) intanto per cominciare sta solo dentro VB.NET 2005! io provavo ad usarlo dal 2003 ma mi ero confuso utilizzando un COM WebBrowser simile al WebBrowser del Framework 2.0 ma diverso nella sostanza...
quindi sono passato a C# 2005 e ho iniziato a lavorare con questo oggetto. Ho eseguito l'esempio postato nell'MSDN della Micosoft e ho visto che correttamente prende delle pagine html remote e te le stampa dentro il form: ottimo direi!

Quello che devo fare è visulizzare un bel file doc nel form, quindi ho provato banalmente a farlo puntare a file:///C:/prova.doc, invece che a http://192.168.0.10/index.asp ...bhe, all'indirizzo web ci va tranquillamente, a quello locale che punta al file doc invece no, mi visualizza "Action cancelled"... se invece faccio puntare Internet Explorer a "file:///C:/prova.doc" mi parte word e me lo fa vedere, questo significa che il file c'è ed è raggiungibile al path "file:///C:/prova.doc", se poi clicco un'altra volta, mi dice proprio "the page cannot be displayed".

Ma la cosa più curiosa secondo me, è che se io metto il file "prova.doc" nello spazio web in modo che sia raggiungibile all'indirizzo "http://192.168.0.10/prova.doc", e ci faccio puntare l'oggetto WebBrowser, lui funziona alla grande e mi visualizza il contenuto del file doc in un oggettino come il vecchio amato OLE, cioè mi dà l'editor word dentro il form di C#... cioè il risultato cercato!

...riassumendo, se metto il file prova.doc in uno spazio web, e ci faccio puntare WebBrowser, è ok, funziona benissimo, se invece sto "prova.doc" lo metto in locale, non va...


Il WebBrowser cmq ha un metodo DocumentStream che promette di ricevere uno Stream e di visualizzarlo nel form: apparte che non sono riuscito a infilare un "prova.doc" dentro un oggetto Stream (al massimo FileStream, ma non lo vuole, vuole per forza uno Stream) ma mi chiedevo: una volta riuscito ad infilare "prova.doc" dentro un oggetto Stream, e passato al DocumentStream, WebBrowser sarà cosi intelligente da capire che quello è un file DOC e va trattato come tale??


Mi date una mano per favore? sono già passato dal Vb. NET 2003 al 2005 e a C#!! mi sono studiato mezza MDSN e ho provato 100 cose diverse, sono alla frutta... idee ne avete please?

freesdraaa Profilo | Newbie

Ciao!

Allora... ho fatto un bel pò di analisi in merito.

Ho scoperto che l'oggetto WebBrowser (http://msdn2.microsoft.com/it-it/library/system.windows.forms.webbrowser(VS.80).aspx) intanto per cominciare sta solo dentro VB.NET 2005! io provavo ad usarlo dal 2003 ma mi ero confuso utilizzando un COM WebBrowser simile al WebBrowser del Framework 2.0 ma diverso nella sostanza...
quindi sono passato a C# 2005 e ho iniziato a lavorare con questo oggetto. Ho eseguito l'esempio postato nell'MSDN della Micosoft e ho visto che correttamente prende delle pagine html remote e te le stampa dentro il form: ottimo direi!

Quello che devo fare è visulizzare un bel file doc nel form, quindi ho provato banalmente a farlo puntare a file:///C:/prova.doc, invece che a http://192.168.0.10/index.asp ...bhe, all'indirizzo web ci va tranquillamente, a quello locale che punta al file doc invece no, mi visualizza "Action cancelled"... se invece faccio puntare Internet Explorer a "file:///C:/prova.doc" mi parte word e me lo fa vedere, questo significa che il file c'è ed è raggiungibile al path "file:///C:/prova.doc", se poi clicco un'altra volta, mi dice proprio "the page cannot be displayed".

Ma la cosa più curiosa secondo me, è che se io metto il file "prova.doc" nello spazio web in modo che sia raggiungibile all'indirizzo "http://192.168.0.10/prova.doc", e ci faccio puntare l'oggetto WebBrowser, lui funziona alla grande e mi visualizza il contenuto del file doc in un oggettino come il vecchio amato OLE, cioè mi dà l'editor word dentro il form di C#... cioè il risultato cercato!

...riassumendo, se metto il file prova.doc in uno spazio web, e ci faccio puntare WebBrowser, è ok, funziona benissimo, se invece sto "prova.doc" lo metto in locale, non va...


Il WebBrowser cmq ha un metodo DocumentStream che promette di ricevere uno Stream e di visualizzarlo nel form: apparte che non sono riuscito a infilare un "prova.doc" dentro un oggetto Stream (al massimo FileStream, ma non lo vuole, vuole per forza uno Stream) ma mi chiedevo: una volta riuscito ad infilare "prova.doc" dentro un oggetto Stream, e passato al DocumentStream, WebBrowser sarà cosi intelligente da capire che quello è un file DOC e va trattato come tale??


Mi date una mano per favore? sono già passato dal Vb. NET 2003 al 2005 e a C#!! mi sono studiato mezza MDSN e ho provato 100 cose diverse, sono alla frutta... idee ne avete please?

SSUPERPIPPO Profilo | Guru

Ho appena fatto una prova facendo così:

WebBrowser1.Navigate("C:\prova.doc")

Funziona perfettamente

Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

freesdraaa Profilo | Newbie

ehhe hai ragione! che idiota... io avevo seguito l'esempio preso da sito della Microsoft che era fatto per i siti web e quindi indirizzi http, credo che a me non funzionasse perchè in automatico concatenava all'indirizzo c:\prova.doc, la stringa http:// quindi veniva http://c:\prova.doc e quindi non andava.

grazie per il vostro prezioso aiuto, spero di non averne più bisogno ma se sarà cosi, posterò ancora qui ;-) grazie!

freesdraaa Profilo | Newbie

Ops...ecco che si presenta subito la situzione di chiedere qualcosa ;-)

Sto usando l'oggetto webBrowser1 e lo faccio puntare al file c:\prova.doc; in questo modo visualizzo all'interno del form, il contenuto del documento. Vorrei che se un utente clicca col tasto destro del mouse (o anche col sinistro) sull'oggetto webBrowser1, si renda disponibile un diverso menu, non quello di word standard.
Allora ho associato un contextMenu all'oggetto webBrowser1 ma il menu custom viene attivato soltanto quando clicco col destro ma il file c:\prova.doc non è visualizzato; io vorrei far succedere "qualcosa" quando l'utente clicca sull'oggetto webBrowser1 quando però sta caricando il c:\prova.doc.
E' possibile farlo?


Ho visto che c'è webBrowser1.Document.ActiveElement che dà la proprietà Enabled; l'ho impostata a False, però a runtime mi da un errore che dice che l'oggetto non è referenziato... strano, perchè è lo steso oggetto (webBrowser1) che utilizzo con "webBrowser1.Navigate ("c:\prova.doc")" e poi ho visto che sempre sotto webBrowser1.Document. ci sono alcune voci col simbolo dell'EventHandler tipo "Click o ContextMenuShowing".
Si possono utilizzare quegli eventi e far fare al programma altre cose piuttosto che visualizzare il menu tipico di word quando si clicca col tasto destro del mouse? In tal caso dovrei capire come si sfruttano gli EventHandler in C# perchè finora li ho usati solo in Vb .NET

Brainkiller Profilo | Guru

>E' possibile farlo?

Che io sappia no. WebBrowser agisce come un container quindi se apri una pagina web e clicchi il destro esce il menù di Internet Explorer, se carichi un file Word esce il menù di Word e così via.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

SSUPERPIPPO Profilo | Guru

Concordo con De Giacomi.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

freesdraaa Profilo | Newbie

OK, allora non si può fare, mi è rimasta la curiosità di capire perchè mi da errore "oggetto non referenziato" se cerco di accedere a

webBrowser1.Document.ActiveElement

mentre inveec se faccio webBrowser1.Navigate mi funziona e non dice "oggetto non referenziato" forse non è referenziato webBrowser1.Document?

grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5