Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Editare file Word o RTF

    Salve a tutti!
    Con la mia applicazione apro un file di word esistente che uso come modello e lo compilo coi miei dati poi ne salvo una copia dove l'utente ha deciso (con saveFileDialog)!

    Ora però mi sorge un dubbio!
    Per editare questi file io devo usare le librerie di word (io uso le varsione 12 delle liberie che credo sia quella di word 2007) questo significa che se sul pc in cui installo il programma non c'è Word installato la cosa non funziona?

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Più che un dubbio è una certezza!
    Ancor peggio se non usi l'Early Binding (da quello che dici è così), perchè all'utente finale funzionerà SOLO se ha la stessa versione di Office (o di Word) installata.

    Ti conviene riesaminare la questione ed eventualmente considerare l'uso del solo formato RTF con WordPad, che è presente in tutte le versioni di Windows, anche se il suo percorso può cambiare da una versione all'altra.

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    e si infatti ci stavo pensando! E' molto diverso dall'usare word? Tanta fatica per niente xD

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' sicuramente diverso. Ma non si può dire quanto se non ci dici esattamente le funzioni di Word che vorresti utilizzare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Allora...in realtà come ho scritto su io non ho usato nessuna funzione. Vi spiego meglio.

    Ho creato un file di word "standard" tutto bello formattato con gli elenchi puntati, le tabelle, i font, ecc ecc ecc

    Semplicemente dove vanno inseriti i dati del DB ho lasciato vuoto e ho messo un segnalibro (bookmark) chiamato col nome del capo database d'interesse.
    (ES: dove va il nome cliente ho inserito un segnalibro chiamato nomeCliente001, dove 001 è un "id" che uso in modo da poter ripetere lo stesso campo nel file Doc [se no mi sovrascriverebbe il segnalibro ogni volta che devo riusare lo stesso campo])

    poi nel mio software faccio così:

    • Apro un saveFileDialog per selezionare dove salvare il file e come chiamarlo
    • copio il file "standard" in quella posizione con quel nome
    • lo apro
    • ciclo su tutti i segnalibri estraendo il nome del campo del db (elimino il famoso indice dal nome del segnalibro. Es: nomeCliente001 diventa nomeCliente (che è il campo sul DB).
    • durante il ciclo aggiungo il valore del campo db in corrispondenza del bookmark omonimo
    • salvo
    • chiudo


    In sostanza non faccio altro che popolare nella posizione in cui si trova il segnalibro! Non uso altre funzioni. Il file è già "precotto" con word!

    Avevo scordato di dire che i file word in questione son LETTERE. Quindi non ci sono cicli su recordset. Il record è sempre solo uno (In una query che racchiude + tabelle e che viene filtrata)!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sa che non puoi usare Wordpad in questo modo perché l' Automation non è prevista da tale prodotto.

    Ho l'impressione che dovrai utilizzare Word e che questo dovrà essere installato.

    A meno che non provveda a "formare" il documento "interamente" da programma (non è una passeggiata).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    accidenti...questo è un bel guaio...
    Il software è finito...volevo consegnarlo prima di natale...mancavano solo i report...

    Ho abbandonato Crystal Reports perchè ho necessità di usare tabelle (anche vuote che poi vanno compilate a mano) e non credo si possano disegnare con crystal se non con linee varie (ma è un macello).

    E poi perchè son lettere d'assunzione e contratti standard (e c'è sempre qualcosina da modificare) per quello avevo pensato a word...

    NOn posso proprio usare word...Nel caso l'utente non l'avesse il software diventa praticamente inutile...



    Son veramente in crisi ora....

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    La butto li...(una fesseria)

    Creandomi il documento con WordPad prima e aprendolo con VB.Net non posso ottenerne la formattazione? Una sorta di reverse engineering!

    Così mi fare un app a parte da usare per sviluppare il codice di compilazione degli rtf che credo!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Veronica80
    La butto li...(una fesseria)

    Creandomi il documento con WordPad prima e aprendolo con VB.Net non posso ottenerne la formattazione? Una sorta di reverse engineering!
    Non mi pare una buona idea ... non è facile, non è affidabile, molto probabilmente non funzione e non te lo consiglio.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Ok allora devo arrendermi a word per ora (più avanti magari cambierò il modulo e scriverò il mio RTF ma ora non ho tempo).

    Solo una cosa: Mi dite come fare a renderlo "universale" con tutte le versioni?

    Io ho aggiunto il riferimento alla libreria word 12 (che credo sia 2007) e anche se ho il 2003 mi funziona ugualmente!

    questo è il codice (l'ho molto snellito togliendo varie connessioni, var ecc così vedete l'interazione con word:

    codice:
    'creo i file word
            Dim oWord As Word.Application = CreateObject("Word.Application")
            Dim oDoc As Word.Document[/B][/COLOR]
                 Dim nomeModelloWord As String = "assPartTime.doc"
           Try
                'Copio il modello nella directory scelta
                    IO.File.Copy(appPath & "\formulario\" & nomeModelloWord, urlFile, True)
                    'apro word
                    oWord.Visible = True
                    oDoc = oWord.Documents.Open(urlFile)
                    oWord.Activate()
                    For Each segnalibro As Word.Bookmark In oDoc.Bookmarks
                        Dim nomeCampoDB As String = Strings.Left(segnalibro.Name, segnalibro.Name.Length - 3)
                        Dim testo As String = rigaQry(nomeCampoDB).ToString
                        segnalibro.Range.InsertAfter(testo)
                    Next
                    oDoc.Save()
                    oDoc.Close()
                    'Chiusura Applicazione Word
                    oWord.Quit()
                    MsgBox("Lettera d'assunzione creata!", MsgBoxStyle.Information, "Creazione Lettera Assunzione")
                End If
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, "Errore in " & ex.Source)
                oDoc.Close()
                'Chiusura Applicazione Word
                oWord.Quit()
                'elimino il file se esiste
                If IO.File.Exists(urlFile) = True Then
                    IO.File.Delete(urlFile)
                End If
            End Try

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.