Fogli di word/excell all'interno di webform...possibile?

sabato 08 maggio 2010 - 17.00

xenical73 Profilo | Newbie

Avevo realizzato un foglio di word [come modello] (contenete una tabella excell) per la creazione di fatture (strutturata in modo che soddisfeasse le mie esigenze).

Ora che sto realizzando la webform, mi chiedevo se fosse possibile (attraverso un button nella pagina Menù della webform) accedere a questo file di word in modo da generare la fattura direttamente senza doverlo andare a recuperare nella cartella dov'è salvato.

Grazie

Gluck74 Profilo | Guru

Ciao,

da pagina aspx, tu puoi aprire un file word e vederlo direttamente sul client.
Facendo questo sappi che comunque verrà creata una copia sul client, che poi verrà salvata a discrezione sell'utente del sito.

Per fare questo ti mando qualche riga di codice che ti dia spunto, da mettere nell'evento click di un pulsante:

string FileName = <nome del file> + ".doc"; string path = <percorso del file> + FileName; Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.ms-word"; Response.TransmitFile(path); Response.End();


xenical73 Profilo | Newbie

Innanzi tutto Grazie

provo a vedere cosa riesco a combinare

Per quanto riguarda la copia al momento il problema non si pone in quanto sono io l'unico utilizzatore e utilizzerei la webform in locale..quindi nn creo ci siano problemi (almeno per l'utilizzo attuale..se poi ci saranno sviluppi vedrò cosa fare).

Ora psero di nn fare casino nell'utilizzo del codice (vista la mia scarsa esperienza in materia)


Come temevo la mia incapacità nello scrivere codice (le pagine sono scritte in VB) mi impedisce di sfruttare il tuo suggerimento

Gluck74 Profilo | Guru

Per quanto riguarda la "copia" del file, non ci sono assolutamente problemi.
Volevo solo ricordarti che il file che si aprirebbe a video, è una copia LOCALE e NON quello salvato sul server. Nel senso che eventuali modifiche rimangono solo sul file "visualizzato al momento", mentre quello sul server non viene minimamente toccato.

Per quanto riguarda il codice, non dovrebbe essere un problema convertire quello che ti ho scritto da C# in VB.
Esempio:
string FileName = <nome del file> + ".doc"; string path = <percorso del file> + FileName;
Diventa
Dim FileName as string = <nome del file> & ".doc" Dim path as string = <percorso del file> & FileName

xenical73 Profilo | Newbie

Avevo immaginato che ci fosse dei problimi di conversione da C# a VB

Io ho scritto così

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

però credo che ci siano ancora errori inquanto nel debug mi genera una serie di errori.

Errore 1 Nome 'Modello_foglio_intervento' non dichiarato. C:\...\Menu.aspx.vb 9 34
Errore 2 Nome 'C' non dichiarato. C:\...\Menu.aspx.vb 10 34
Errore 3 Errore di sintassi. C:\...\Menu.aspx.vb 10 36
Errore 4 Carattere non valido. C:\...\Menu.aspx.vb 12 29
Errore 5 Carattere non valido. C:\...\Menu.aspx.vb 13 35
Errore 6 Carattere non valido. C:\...\Menu.aspx.vb 14 61
Errore 7 Carattere non valido. C:\...\Menu.aspx.vb 15 40
Errore 8 Carattere non valido. C:\...\Menu.aspx.vb 16 27


PS: lo so che ti starai chiedendo: ma se nn sai programmare che pretendi

Gluck74 Profilo | Guru

ricorda che:
1 - le stringhe vanno SEMPRE comprese tra virglolette - Dim ciccio as string = "blablabla"
2 - in VB non si usa MAI il carattere punto-e-virgola alla fine di una riga di istruzione
3 - Usa sempre l'intelli-sense se non conosci bene la sintassi dei comandi - Response.End() in C# - probabilmente Response.End in VB

xenical73 Profilo | Newbie

Sono il tuo incubo

per quanto rigurada il codice ora tutto ok (il debug nn genera errori)

Però ora quando nel menù clicco sul pulsante per aprire il file mi appare una pagina del browser con il seguente messaggio:

Impossibile visualizzare la pagina XML
Impossibile visualizzare l'input XML tramite il foglio di stile . Correggere l'errore, quindi fare clic su Aggiorna oppure riprovare in un momento successivo.


--------------------------------------------------------------------------------

Carattere non valido nel contenuto di testo. Errore durante l'elaborazione della risorsa "http://localhost:49454/User/Menu....

PK

Devo mettere i documenti in un posto particolare o me li prende in qualsiasi cartella del pc?

Gluck74 Profilo | Guru

non saprei di preciso.

tu utilizzi una connessione remota o fai debug su visualstudio? ovvero lanci il sito da visualstudio o lo apri da IE ed usi il server web?

Inoltre, il file che cerchi di aprire è un file word corretto? tu che versione hai sul client che apre il sito web?

xenical73 Profilo | Newbie

Lavoro in locale e il debug l'ho sempre fatto utilizzando il server di sviluppo di VS (con aiuto di altro utente del forum sto cercando di portare il tutto su ISS7 in parte l'ho già fatto..mi sta dando una mano per l'autenticazione dell'utente nella pagina di login)..ma al momento le prove cheho fatto son state tutte con VS.

Il file in questione è un file "modello di word" creato con office 2007 (stesso programma e pc con cui sto cercando di visualizzarlo).

Gluck74 Profilo | Guru

quindi non è un .doc
il problema potrebbe essere quello. prova a salvarlo come documento e non come modello.

quindi tu non hai IIS sul tuo computer? spero di si
mi dici per cortesia il sistema operativo e la versione di IIS?

xenical73 Profilo | Newbie

Uso win 7 ultimate con installato ISS (quindi presumo ISS7.5)

Sto cercando di migrare il tutto su iss (quasi tutto pronto tranne il login come ti dicevo in precedenza).

Provato con documenti .doc - .docx - .dotx sempre lo stesso errore. :(

Qualche idea?

Gluck74 Profilo | Guru

Io ho avuto seri problemi su win server 2008 con appunto IIS7

Prova, se hai a disposizione un'altra macchina, a far girare il sito su un IIS6.
Magari ti basta una macchina virtuale con vista e iis6 o con server 2003 e iis6, giusto per provare

xenical73 Profilo | Newbie

Grazie per il suggerimento

proverò a farlo giusto per capire se il problema è la versione di iSS

Però a lato pratico (se così fosse) il problema sarebbe irrisolvibile (almeno al momento) in quanto questa webform mi servirebbe per la gestione dell'attività lavorativa (e nn vorrei tenere apeta una macchina virtuale solo x far girare la webform e relativi DB)per 3 documenti di word..doveva essere una cosa semplificativa..per tutto sto casino faccio prima ad aprire i 3 modelli direttamente).

Gluck74 Profilo | Guru

in effetti la cosa è strana.
A me a dire la verità l'errore era differente.
penso sia il mio stesso problema però non riesco a capire precisamente la situazione che hai sul tuo server.

ricapitolando:

hai trasformato il modello in documento? (dotx)
sul server dove gira il web, che sistema operativo hai?
c'è installato anche office?
Tu sulla macchina client che office hai?
hai sempre lanciato da visual studio oppure hai anche provato direttamente da IE?

ciao

xenical73 Profilo | Newbie

Il tutto è stato creato su un portatile con SO windows 7 ultimate (e relativo ISS), office 2007, VS 2008 e SQLexpress 2008

Con office ho creato i modelli di documenti word (.dotx) che mi servivano e desideravo che cliccando su un pulsante della webform si aprissero in modo da poterli richiamare velocemte.

I test li ho fatti sia utilizzando il server di sviluppo interno di VS2008 che ISS (identico errore).

Accedo alla webform dallo stesso pc (quindi stesso SO, programmi ecc) con cui ho creato il tutto.

Ho provato anche semplificare il nome dei file (oltre ad averli salvati nei vari formati) ma nulla.

Non credevo fosse una cosa così difficile da realizzare

Gluck74 Profilo | Guru

infatti, fino a "ieri" era facilissimo. con i nuovi sistemi operativi ed il nuovo IIS, aprire e/o visualizzare un documento office è diventata un'impresa!!!!!!
Prima di tutto non puoi più usare tranquillamente le PIAs......... devi addirittura andare a correggere un bug!!!!
E poi pupplicizzano la coesistenza di office e web!!
si, se compri Sharepoint forse!!!!!!!


per quanto riguarda il tuo file, con il trasmitfile dovresti sorvolare alcuni problemi di interoperabilità, perché lo trasmetti come un qualsiasi altro file, ma non capisco perché non ti funziona.
hai provato a leggerlo come byte e reinviarlo come byte?
Il codice è tipo questo:

FileInfo fi = new FileInfo(filePath); string fileName = Path.GetFileName(filePath); Response.ContentType = "application/octet-stream"; //Response.ContentType = "Application/pdf"; Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); Response.AddHeader("Content-Length", fi.Length.ToString()); byte[] buffer = new byte[1024]; long byteCount; FileStream inStr = File.OpenRead(filePath); while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0) { if (Response.IsClientConnected) { Response.OutputStream.Write(buffer, 0, (int)(byteCount)); Response.Flush(); } else break; } //Response.WriteFile(filePath); Response.End();

xenical73 Profilo | Newbie

Non ho provato perchè nn saprei neanche da che parte iniziare

Il codice che mi hai scritto (debitamente compilato) dove dovrei inserirlo? (nel codebehind del pulsante?)

Grazie mille per la pazienza.

Gluck74 Profilo | Guru



Metti questa funzione semplicemente del click nel bottone per visualizzare la fattura

xenical73 Profilo | Newbie

Ora ci provo

anzi prima devo covertire quel codice in vb..vediamo se ci riesco


Dopo l'aiuto di un utente di altro forum ho scoperto dove stava l'errore..

il codice corretto da inserire nell'evento click è questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra



Grazie ugualmente per la pazienza

Gluck74 Profilo | Guru

figurati, è stato un piacere.

Anzi, scusa, me era sfuggita la riga mancante che in effetti è fondamentale.

Ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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