|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
[c#] modifica di un doc caricato in un controllo webbrowser
Ciao a tutti, sto creando un'applicativo visual c# con visual Studio 2005 che contiene un componente webBrowser che si occupa di caricare un file word.
Avrei bisogno di modificare dal codice c# il documento word. Ho visto che esiste una proprietà Document che però contiene un oggetto di tipo HtmlDocument che vale null se nel webbrowser metto un doc. Qualcuno sa come si può fare? Ciao e grazie
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Non puoi usare più facilmente il controllo RichTextBox? che permette modifiche e salvataggi in maniera facile? tra cui tutti i metodi di selezione testo ...
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2000
Città: Provincia di Parma
Messaggi: 724
|
Il controllo WebBrowser non è pensato per gestire i file di Word.
Secondo me ti conviene seguire la strada COM Interop, generando il Managed Wrapper del modello ad oggetti di Word. Se usi Visual Studio puoi aggiungere la Object Library di Word tra le references del progetto, e l'IDE creerà il managed wrapper per te. Fatto questo, puoi permetterti una cosa del tipo: Codice:
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); Ciao
__________________
My Pc: Case Enermax Chakra - PSU Corsair HX520 - Gigabyte P35-DS3R - Core2 Duo E6550 - 6 Gb RAM Geil PC800 - 2x WD Caviar SE 320Gb (Raid1) - Xfx GeForce 8600Gt - Master Pioneer DVR111D - Samsung SM T220 - S.O. Windows 7 Ultimate x64 SP1 My blog: http://blogs.ugidotnet.org/alby |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
In mancanza di VSTO, devi necessariamente appoggiarti a COM come ti è stato suggerito. Un esempio molto banale per l'apertura di un file word, pronto per essere modificato, potrebbe essere:
Codice:
//supponendo che tu utilizzi un openFileDialog ed un command button:
private void openWordFile(object sender, EventArgs e)
{
OpenFileDialog myDialog = new openFileDialog();
myDialog.InitialDirectory = @"c:\";
myDialog.Filter = "Solo Documenti Word(*.doc)|*.doc";
myDialog.RestoreDirectory = true;
if (myDialog.ShowDialog == DialogResult.OK)
{
try
{
Word.ApplicationClass myWordApplication = new Word.ApplicationClass();
object nomeFile = myDialog.FileName;
object soloInLettura = False;
object visibile = true;
object missing = System.Reflection.Missing.Value;
myWordApplication.Visible = true;
Word.Document myDoc = myWordApplication.Documents.Open(ref nomeFile, ref soloInLettura, ref visible, ref missing, ref missing........blalbla)
myDoc.Activate();
}
catch(Exception ex)
{
//gestisci l'errore
}
}
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Grazie a tutti per le risposte, in effetti stamattina mi sono messo a fare delle preove con i COM PIA. Sono riuscito a fare qualcosa, però non riesco a visualizzare i doc all'interno dell'interfaccia dell'applicativo c#, ma solo nella finestra di word. C'è modo di aprire i doc in un componente .net e non nella gui di word?
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
salve, questa cosa interessa moltoanche a me visto che devo
realizzare un piccolo motore di ricerca. In pratica, a partire da una data directory nella quale ci sono alcuni documenti word, devo effettuare una ricerca all'interno dei ".doc" di un determinato "testo", e produrre una lista tipo google con tutti i documenti trovati! Adesso provo con i COM PIA intanto per vedere se almeno mi apre i ".doc"! Non so' come effettuare poi una ricerca all'interno del "DOC" aperto!!! Nessuno puo' darmi una mano? Oppure se qualcuno conosce qualche sito che vende dei componenti per farlo puo' segnalarmelo in pvt? grazie molte!
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Riassumendo mi sembra di aver capito che senza avere a disposizione i VSTO (Visual Studio Tools for Office) ci sono due approcci fattibili:
1) con il componente webBrowser: sono riuscito a caricare il documento all'interno dell'interfaccia sviluppata con c# ma non a modificare il documento tramite codice 2) con i primary interop assembly di COM sono riuscito a modificare il documento via codice ma non a caricare il documento all'interno dell'interfaccia c# purtroppo io dovrei riuscire a fare entrambe le cose...
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Stavo pensando adesso che forse potrei anche utilizzare un controllo ActiveX (se ne esistono per word) da inserire nella form c#, può essere una soluzione?
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
Quote:
a me, tramite i primary interop assembly di COM mi ha dato errore anche aprendo il doc in questione.....facendo tutto alla lettera come esempi riportati o vedendone altri. Tu come hai fatto? E' possibile leggere il ".DOC"? se puoi fammi sapere, grazie 1000!
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
Molto probabilmente, hai dimenticato qualche reference.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
Quote:
ce l'ho in ufficio ora..merda! Comunque qui a casa uso un modulo ".cs" creato apposta per utilizzare word ma neanche quello va bene, mi da oggetto non trovato appena crea un istanza dell'oggetto word... I riferimenti COM di word ci sono. Non puoi postarmi o in pvt, un piccolo esempio? Magari poi ci smanetto io! Grazie
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
anche se creo un nuovo progetto, referenzio l'oggetto COM di Word
e scrivo solo questa linea: private Word.ApplicationClass WordApp = new Word.ApplicationClass(); mi da "accesso negato" anche se metto nel web.config questo: <identity impersonate="true"/> il quale dovrebbe indicare di utilizzare l'utente attuale, giusto? Che cavolo...non riesco ad uscirne fuori....aiutino?
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
risolto modificando gli accessi alla DCOM di word!
Ora non so come leggere quello che c'e' scritto nel ".DOC"....si puo' fare? QUalcuno sa come? grazie!
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Cosa intendi esattamente per "leggere"? Un esempio di lettura può essere questo (ti copia il testo del doc negli appunti):
Codice:
//Avvio Word Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.ApplicationClass(); //Rendo visibile la finestra app.Visible = true; //Dichiaro l'oggetto nullo che mi servirà nelle chiamate di apertura e salvataggio a word object nullobj = System.Reflection.Missing.Value; //Dichiaro l'oggetto che mi servirà per aprire i file object file = @"C:\zebrone.doc"; Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ref file, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj); //seleziono tutto doc.ActiveWindow.Selection.WholeStory(); //copio la selezione doc.ActiveWindow.Selection.Copy(); System.Windows.Forms.IDataObject data = Clipboard.GetDataObject(); string text = data.GetData(DataFormats.Text).ToString(); //Chiude il documento doc.Close(ref nullobj, ref nullobj, ref nullobj); //chiude word app.Quit(ref nullobj, ref nullobj, ref nullobj);
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
Quote:
Ciao! Per leggere intendevo riga per riga, comunque anche questo puo' andare bene. Come hai letto sopra devo effettuare una ricerca all'interno di un certo numero di ".DOC" di una parola e, se esiste, effettuare un elenco tipo google, di tutti i documenti trovati! Ho pensato di fare cosi: Mi salvo il ".DOC", dopo che è stato inviato ed aperto, anche in formato "TXT" almeno è piu veloce. Cosi avro 2 file: Test.DOC Test.TXT Adesso devo fare in modo di effettuare la ricerca di un determinato "testo" inserito nel file ".TXT". alcuni dubbi: - Un modo rapido per effettuare questo tipo di ricerca sui file TXT? - Ogni volta che chiudo il file Word, correttamente, mi rimane nel task manager un'istanza di WORD....come la elimino? - Invece di utilizzare i ".TXT" che ne dici se utilizzo un database?(ci metto tutte le parole o solo le parole chiave?) Suggerimenti? Grazie 1000
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Quote:
Codice:
app.Quit(ref nullobj, ref nullobj, ref nullobj);
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
Quote:
tu hai controllato bene che non ti rimane in memoria? Riguardo al resto cosa mi suggerisci?
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Milano
Messaggi: 2361
|
Quote:
__________________
La parola d'ordine, tanto per cambià è sempre la stessa: VIUUULENZA!!! Trattative MAC: Powerbook 12" PC1: GA-X48-DS4, Q9300, 2x2GB Corsair 8500, 2 Ati 4870 Crossfire, Seagate 1.5TB PC2: M2NPV-VM, 64x2 4800+, 1GB DDR2, Ati 4670, Maxtor 120GB PC3: GA-7VT600 1394, Barton 2500+@3000+, 2GB DDR400, 6800, Seagate 160GB PHOTO: Canon Digital IXUS 430 |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
Quote:
Uso Visual Studio . NET 2003. Riguardo alle altre cose puoi darmi dei consigli? Grazie ancora!
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Roma
Messaggi: 1997
|
La chiusura funziona....avevo fatto una cavolata io
__________________
I7 - 9700K - Gigabyte AORUS Z390 Pro - 32GB DDR4 G.Skill F4-3000C16S - EVGA GTX 1070 FTW - M2 EVO 970 PLUS 2TB - (Win10) - Crucial MX 2TB - EVO 860 500GB - (Mojave) - cooler master Real Power M850 - Corsair Hydro H115i ProRGB - Case Obsidian 500D - Monitor Asus MX279 - Bose Companion®5 - (Intel BOXNUC7I3BNH 8GB - SSD EVO 850 pro 500GB) (HTPC i5 2700k - GTX 1060) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:10.



















