Newsgroup: it.comp.dotnet
Titolo: aprire un file .doc con ASp.net

Ciao a tutti
 
sto cercando un modo come estrarre il testo di un file .doc o .docx sul 
server per immetterlo del db.
In pratica l'utente carica il file e poi vorrei poter chiamare in 
automatico la pagina 
asp.net
 (in c#) passandogli nell'url il nome del 
file e farle estrarre il testo da mettere nel db.
 
Con 
asp.net
 sono alle prime armi. Per il caricamento e tutto il resto 
non ci sono problemi.
 
suggerimenti da dove partire o link utili ?

Ciao neroMalpelo,

prima una domanda: perchè? a cosa ti serve il testo nel db?
è giusto per capire quale è lo scenario.
 
.m
 
-- 
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
 
blog @ 
http://milestone.topics.it
 
whynot [ at ] topics [ dot ] it
 
 

 è giusto per capire quale è lo scenario.
 
per poter fare una ricerca di termini nell'oggetto e nel contenuto dei file.
Piuttosto che "scatenare" una processo di apertura, estrazione e parsing 
del contenuto dei file uno per uno (gia ora sono circa un migliaio) 
vorrei fare in modo che la ricerca del contenuto avvenga con l'ausilio 
di un db.
 
spero di averti dato elementi sufficienti.
 
ciao
 

 file.
 
se i documenti non fossero mai "tantissimi" (la documentazione MS dice 
"max 1 milione") e le query *concorrenti* fossero < 4, puoi salvarli sul 
file system ed usare il Windows Search Engine (per intenderci, è il 
"motore" che sta alla base delle ricerche che effettui dal menu 
"Start"). Su MSDN trovi anche qualche esempio già funzionante (a suo 
tempo io usai quelli come punto di partenza).
 
-- 
.A
GUISA - 
http://www.guisa.org
 
UGIdotNET - 
http://www.ugidotnet.org
 
Read my blog at: 
http://blogs.ugidotnet.org/pape
 

 ciao
 


Grazie Mauro per la risposta.
 
Il cliente ha lasciato un certo margine di liberta' nel progettare la 
soluzione.
Alcuni punti sono pero' gia' fissi per scelte pregresse.
 
Usano ASP classic per upload e form di ricerca.
MySQL 5.0
 
Ora, dopo aver fatto il caricamento io posso mandare in esecuzione una 
pagina 
asp.net
 per fare il lavoro di apertura file doc, estrazione testo 
e immissione in db, quindi solo codice.
 
Fine.
 
Posso chiedere di istallare word sul server (server interno con win200x)
o altri componenti free se serve.



la pagina salva il file sul disco locale, in un folder indicizzato dal 
Windows Search Engine. Il Windows Search Engine indicizza i documenti. 
Tu interroghi il Windows Search Engine, e lui ti dice quali documenti 
(word, excel, PDF, ...) soddisfano la ricerca.
 
Fine. :-)


 o altri componenti free se serve.
 
per realizzare la soluzione che ti proponiamo sia io che Andrea non 
devi installare proprio nulla, ti basta che il documento sia 
ficisacamente sul server. Dopodichè dalle tue pagine classic asp puoi 
fare le ricerche che vuoi interrogando l'index server del sistema 
operativo.



 
Interessante.
Il windows s.e. e' istallato di default in win2003 o win2008 server ?
Se si, secondo te lo posso interrogare da una pagina in classic asp ?
Quando caricano i file non li caricano a casaccio ma un file specifico 
con N allegati (excel, pdf o word). La ricerca per termini avviene sul 
file principale e l'utente vede il risultato della ricerca dei soli 
files principali con gli eventuali allegati da scaricare: ecco perche' 
vorrei estrarre il testo dai files di word (i file principali sono 
sempre .doc) e non pensando di poterlo fare con classic asp pensavo ad 
asp net.
 
grazie per la risposta.


il comportamento è lo stesso che avrei sulla tua workstation XP/Vista/7: 
se ti soddisfa quel tipo di ricerca (che cerca sia nei metadati, sia nel 
testo) allora sei a posto



Grazie Mauro
e' una blasfemia se ti chiedo un link con per un uso da classic asp ?
(lo so, mi radierete dal ng ....)
:-)


dal lontano 1999 :-)
http://www.aspitalia.com/articoli/index_server.aspx
 


 
http://www.aspitalia.com/articoli/index_server.aspx
 
 
giusto per non confondere l'OP: Index Server è l'engine di 
indicizzazione offerto sin dai tempi dell'Option Pack di Windows NT 4, 
ma AFAIK a partire da Windows Server 2008 è dichiarato obsoleto da MS in 
favore del Windows Search engine (anche se, se ricordo bene, è cmq 
possibile installarlo). I due engine hanno una API differente, quindi 
l'OP dovrebbe verificare quale dei due abbia la possibilità di utilizzare


 
http://www.aspitalia.com/articoli/index_server.aspx
Grazie Mauro, gentilissimo come sempre :-)
Comincio a fare dei test.
Siccome quanto prima mi mettero' a studiare seriamente 
asp.net
, se 
volessi invece estrarre il testo di un file di word con una pagina 
asp.net
 in c#, sarebbe fattibile ?
Esite questa possibilita' in 
asp.net
, un link che spiega come farlo, un 
esempio dal quale partire ?
ciao e davvero grazie !

 sarebbe fattibile ?
 
stessi problemi, per un docx usando OpenXml è abbastanza facile, per un 
doc è un macello stupidamente inutile.


 doc è un macello stupidamente inutile.
 
ho fatto dei test per .doc in classic asp e mi accorgo che rallenta 
molto per questo pensavo a 
asp.net
 
Per i nuovi documenti potrei fare in modo che salvino in .docx e 
indicizzo i contenuti con 
asp.net
 ma rimangono comunque 2000 documenti 
circa in .doc degli anni passati da archiviare e indicizzare in un db in 
.net.

 degli anni passati da archiviare e indicizzare in un db in .net.
 
test con che cosa?



 
test in asp classic e IIS7 in locale (win7).
La pagina sembrava fare l'accesso al file (o almeno non dava errore) ma 
il brower girava per minuti...e si trattava di un solo file.
Devo capire come poter accedere al contenuto , fatto questo lo archivio 
nel db e amen.
Possibile che se con asp classic non si possa fare (con tutti i suoi 
limiti lo capisco) e nemmeno con 
asp.net
 si riesca ad accedere a un file 
.doc ?
 
ciao mauro e grazie per la pazienza

 lo capisco) e nemmeno con 
asp.net
 si riesca ad accedere a un file .doc ?
 
No che non si può. O meglio si potrebbe utilizzando office via 
automation ma non è supportato, porta con se una quantità industriale 
di magagne e ti obbliga ad interagire con COM con un notevole impatto 
sulle prestazioni perchè i due modelli di threading sono diversi.


 scegliere.
 
 
Andrea scriveva che se gli accessi in sumultanea sono <4 e in questo 
caso possono essere una cinquantina.
Inoltre, ogni file porta con se altri file "allegati" (che pero'non 
vanno indicizzati) e se li salvo in una cartella e li faccio trovare da 
Windows Search Engine non mi collega il file principale ai suoi allegati.
Faccio un esempio.
Tizio carica un file (per i nuovi posso dirgli di salvarli in .doc, 
.docx o rtf) con del testo dentro e delle informazioni sulla tipologia 
di documento (es: circolare, istruzioni tecniche, manuali) e uno o piu' 
destinatari tra una lista specifica di soggetti a lui noti.
Poi carica eventuali allegati (excel, pdf, word ecc.).
Gli altri, devono poter cercare per data di emissione del documento (non 
di caricamento), per parola chiave, per tipologia (foglio di servizio, 
manuale ecc ecc), persona che lo ha emesso, destinatari ecc ecc
Ecco perche' non penso che il "semplice" Windows Search Engine possa 
bastare visto che senza un db mi perderei le info di cui sopra (tipo di 
doc, data di emissione del doc, allegati e destinatari ammessi alla 
consultazione)
 
forse ora sono stato piu' esaustivo.
 
ancora grazie per la pazienza
:-)


 forse ora sono stato piu' esaustivo.
 



Ok, penso che tu abbia ragione. E' che non essendo ferrato in materia 
sono limitato a una visione "classic" degli strumenti.
Faccio dei test e vi faccio sapere.
 
ciao