+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Inserire tabella in file word.

  1. #1
    guil non è in linea Scolaretto
    Post
    140

    Inserire tabella in file word.

    Amici di Masterdrive ho il seguente problema e spero che qualcuno di voi possa aiutarmi, creo tramite il seguente codice un nuovo file word con una tabella che contiene 4 colonne di dati provenienti da un gridview:

    codice:
    Dim percorso As String = "c:\"
    Dim AppWord As New Microsoft.Office.Interop.Word.Application
       AppWord.Visible = False
        Dim nomeFileOutput As String = "TABELLA.doc"
            Dim wordDoc As Microsoft.Office.Interop.Word.Document
            wordDoc = AppWord.Documents.Add
    Dim R As Microsoft.Office.Interop.Word.Range = wordDoc.Range
         Dim T As Microsoft.Office.Interop.Word.Table = wordDoc.Tables.Add(R, 1, 4)
            T.Rows(1).Range.Bold = 1
            T.Cell(1, 1).Range.Text = "COLONNA1"
            T.Cell(1, 2).Range.Text = "COLONNA2"
            T.Cell(1, 3).Range.Text = "COLONNA3"
            T.Cell(1, 4).Range.Text = "COLONNA4"
          T.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitWindow)
            T.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
            T.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
        For i As Integer = 1 To 4
                T.Rows.Add()
                T.Rows(i + 1).Range.Bold = 0
                T.Cell(i + 1, 1).Range.Text = GridView1.Rows(i).Cells(0).Text & i
                T.Cell(i + 1, 2).Range.Text = GridView1.Rows(i).Cells(1).Text & i
                T.Cell(i + 1, 3).Range.Text = GridView1.Rows(i).Cells(2).Text & i
                T.Cell(i + 1, 4).Range.Text = GridView1.Rows(i).Cells(3).Text & i
            Next
         wordDoc.SaveAs(percorso & nomeFileOutput)
            wordDoc.Close()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wordDoc)
        AppWord.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(AppWord)
    Il problema è che vorrei creare questa tabella in un file word esistente e ovviamente in un punto stabilito. Dovrei forse inserire un bookmark esattamente nel punto in cui vorrei che la tabella fosse posizionata?? Se si qualcuno potrebbe farmi un esempio??
    Grazie a tutti un saluto.

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,520
    Blogs
    5
    E cosa c'entra con ASP .NET ?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    guil non è in linea Scolaretto
    Post
    140
    E' un'applicazione asp.net....meglio spostarla su vb.net?

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,520
    Blogs
    5
    No ... allora va bene ...
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    guil non è in linea Scolaretto
    Post
    140
    Mi succede una cosa stranissima....in un determinato punto di un file word esistente vado ad aggiungere un bookmark che chiamerò "tabella". Adesso inserisco un gridview e un sqldatasource ottenendo 4 colonne e una serie di righe. Lo scopo è ovviamente popolare la tabella in word prendendo i dati da un gridview. fatto ciò passo al codice che è il seguente:

    codice:
    Dim percorso As String = "c:\"
            Dim nomeFileOutput As String = "fileoutput.doc"
            Dim oWordApp As New Word.Application
            Dim fileName As Object = "c:\fileesistente.doc"
            Dim [readOnly] As Object = False
            Dim isVisible As Object = False
            Dim missing As Object = System.Reflection.Missing.Value
    
            Dim oWordDoc As Word.Document = oWordApp.Documents.Open(fileName, missing, [readOnly], missing, missing, missing, _
             missing, missing, missing, missing, missing, isVisible, _
             missing, missing, missing)
    
            oWordDoc.Activate()
            Dim oBookMark As Object = "TABELLA"
            Dim R As Microsoft.Office.Interop.Word.Range = oWordDoc.Bookmarks.Item(oBookMark).Range
            'Creazione Tabella con Riga intestazione
            Dim T As Microsoft.Office.Interop.Word.Table = oWordDoc.Tables.Add(R, 1, 4)
            'GRASSETTO INTESTAZIONE TABELLA'
            T.Rows(1).Range.Bold = 2
            'FONT NAME E GRANDEZZA CARATTERI RIGHE INTESTAZIONE DELLA TABELLA'
            T.Cell(1, 1).Range.Font.Size = 11
            T.Cell(1, 2).Range.Font.Size = 11
            T.Cell(1, 3).Range.Font.Size = 11
            T.Cell(1, 4).Range.Font.Size = 11
            T.Cell(1, 1).Range.Font.Name = "Times New Roman"
            T.Cell(1, 2).Range.Font.Name = "Times New Roman"
            T.Cell(1, 3).Range.Font.Name = "Times New Roman"
            T.Cell(1, 4).Range.Font.Name = "Times New Roman"
    
            'allineo il testo al centro nelle celle'
            T.Cell(1, 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
            T.Cell(1, 2).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
            T.Cell(1, 3).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
            T.Cell(1, 4).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
    
            'IMPOSTO LA LARGHEZZA DELLE RIGHE INTESTAZIONE DELLA TABELLA'
            T.Columns.Item(1).Width = 50
            T.Columns.Item(2).Width = 50
            T.Columns.Item(3).Width = 50
            T.Columns.Item(4).Width = 200
    
            'creo le colonne'
            T.Cell(1, 1).Range.Text = "Dal"
            T.Cell(1, 2).Range.Text = "Al"
            T.Cell(1, 3).Range.Text = "Tipo"
            T.Cell(1, 4).Range.Text = "Giorni"
    
            'Imposto la tabella in modo da essere auto-ingrandita orizzontalmente'
            T.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitWindow)
            T.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
            T.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
            For i As Integer = 1 To 4
                T.Rows.Add()
                T.Rows(i + 1).Range.Bold = 0
                'FONT NAME E GRANDEZZA CARATTERI RIGHE DELLA TABELLA'
                T.Rows(i + 1).Range.Font.Size = 10
                T.Rows(i + 1).Range.Font.Name = "Times New Roman"
    
                'popolo le colonne con i dati prelevati dal gridview'
                T.Cell(i + 1, 1).Range.Text = GridView2.Rows(i).Cells(0).Text
                T.Cell(i + 1, 2).Range.Text = GridView2.Rows(i).Cells(1).Text
                T.Cell(i + 1, 3).Range.Text = GridView2.Rows(i).Cells(2).Text
                T.Cell(i + 1, 4).Range.Text = GridView2.Rows(i).Cells(3).Text
            Next
            'Salvataggio / Chiusura Oggetti
            oWordDoc.SaveAs(percorso & nomeFileOutput)
            oWordDoc.Close()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordDoc)
            'Chiusura Applicazione Word
            oWordApp.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordApp)
    Mi viene restituito il seguente errore: "Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme.
    Nome parametro: index"!!! Ma come è possibile???? Se parto dalla cella 0 del gridview perchè mi dice ciò??? Sono 4 colonne!!!! Non riesco a capire questa cosa....qualcuno può aiutarmi gentilmente?? Grazie a tutti.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi