Listview in pdf

martedì 16 giugno 2015 - 13.09
Tag Elenco Tags  VB.NET

leviathan89 Profilo | Newbie

Salve, ho una listview con dei dati dentro, vorrei poter salvare quei dati all'interno di un file pdf. Come posso fare? Grazie mille

ysdemarc Profilo | Expert

O ti munisci di una libreria per salvare file in PDF come ad esempio iTextSharp.

o ti crei un report RDLC o Crystal report dove esporterai in pdf il risultato del report.

O ti crei tu una libreiria per scrivere in pdf e magari c'è la posti pure

Nel secondo caso magari inserendo le righe in un DataTable ti verrà più facile stampare...

Altro non mi viene in mente..magari qualche guru saprà darti una via più corretta..ma ultimamente sembrano tutti assenti


Vincenzo
Programmatore sbilenco

leviathan89 Profilo | Newbie

Ho trovato questo sito, ma non riesco a capire.
http://www.e-iceblue.com/Tutorials/Spire.DataExport/Spire.DataExport-Program-Guide/How-to-Export-DataTable-to-PDF.html

aiuti in merito? Grazie :)

ysdemarc Profilo | Expert

Va bene, ma devi comprare la loro libreria.

Se io fossi in te, se l'esportazione deve essere obbligatoriamente in PDF lo farei con un report con la sicurezza che le librerie funzionano bene e che, addirittura, avrà un aspetto più gradevole.
Naturalmente esportando in PDF senza passare per l'anteprima.
Vincenzo
Programmatore sbilenco

leviathan89 Profilo | Newbie

E se volessi esportarla in word?

ysdemarc Profilo | Expert

Se decidi di farlo in crystal report e report rdlc è facile, basta che gli dici il formato.

Altrimenti devi cercare qualcosa che scriva i file in formato word ma qui non posso aiutarti.

Se ti interessa excel invece puoi usare le librerie gratuite CarlosAg.ExcelXmlWriter
Vincenzo
Programmatore sbilenco

leviathan89 Profilo | Newbie

Ho trovato questo codice online, ma non è giusto.
Cercate di portare pazienza, sto imparando piano piano :D
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Dim filename As String Dim listviewData As String Dim str As String filename = "C:\\data.doc" listviewData = "" For Each str In ListView1.Items listviewData += str + " " Next File.WriteAllText(filename, listviewData) End Sub

ysdemarc Profilo | Expert

Ma che c'entra, non è che scrivere un'estensione .doc significa che il file è di tipo word.

In quel modo stai scrivendo un file testuale con un'unica riga separando le stringhe con uno space...

a questo punto scrivi direttamente un file .txt e, piuttosto che in un'unica riga, scrivi una riga per ogni elemento della listview.

E poi gli item della list view sono solo banali string o oggetti di cui hai implementato il metodo ToString()?

Alla fine potresti scrivere qualcosa del genere:

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Dim filename As String Dim str As String filename = "C:\\data.txt" If (File.Exists(filename)) Then File.Delete(filename) For Each str In ListView1.Items File.AppendAllText(filename, str, System.Text.Encoding.ASCII) Next End Sub

leviathan89 Profilo | Newbie

Te l'ho detto :D sto impazzendo, forse ho preso troppe informazioni sbagliate e ho fatto un casino. La necessità è importarla su word

ysdemarc Profilo | Expert

Allora se il pc ha office installato vedi di utilizzare le librerie Microsoft.Office.Interop.Word qualche esmpio puoi trovarlo qui: http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx

altrimenti devi cercare librerie terzi. Qui trovi qualche esempio: http://www.codeproject.com/Articles/660478/Csharp-Create-and-Manipulate-Word-Documents-Progra
Vincenzo
Programmatore sbilenco

leviathan89 Profilo | Newbie

Perfetto, ti ringrazio. Gentilissimo

leviathan89 Profilo | Newbie

Allora, sto provando per la creazione del pdf con Pdfsharp.
Sono arrivato a questo punto:

Ho creato una form con un label textbox e listview, una volta popolata la listview vorrei che mi inserisse la listview nel file pdf.

Imports PdfSharp Imports PdfSharp.Drawing Imports PdfSharp.Pdf Public Class Anteprima Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click pdf() End Sub Sub pdf() Dim document As PdfDocument = New PdfDocument document.Info.Title = "Rateizzazione Sanzioni CdS" Dim page As PdfPage = document.AddPage page.Size = PdfSharp.PageSize.A4 Dim e As XGraphics = XGraphics.FromPdfPage(page) Dim font As XFont = New XFont("Arial", 14, XFontStyle.Regular) e.DrawString(Form1.Listview1, font, XBrushes.Black, 300, 250) ' inserire dati listview e.DrawLine(XPens.Black, 60, 310, 570, 310) Dim filename As String = "TestPDF.pdf" document.Save(filename) Process.Start(Filename) End Sub End Class

Il file pdf se inserisco il textbox1 me lo crea, ma se voglio che mi inserisca i dati della listview con le colonne? insomma una copia della listview? come faccio?
Grazie
Gianluca

leviathan89 Profilo | Newbie

Mi manca solo la listivew ma non so dove mettere le mani, sinceramente online non trovo molto, forse cerco male... ma textbox, label riesco a fare il pdf ma per quanto riguarda la listview niente!

leviathan89 Profilo | Newbie

Piano piano il parto sta riusciendo.


vi spiego la listview, una volta popolata com'è:

RATA N. SCADENZA NETTO MENSILE INTERESSE MENSILE SPESE RATA MENSILE

1 10/07 200 7.50 10 217.50

2 10/08 200 7.50 207.50

3 10/09 200 7.50 207.50


ogni numero sotto la voce(rate:1,2,3 - scadencaz:10/07,10/08,10/09....e così via)


Una volta popolata, copio le colonne con il comando, ne incollo una di colonna tanto il codice è lo stesso, è la posizione che cambia:

e.DrawString(Me.Listview1.Columns(1).Text, font, XBrushes.Black, 120, 150)



e fin qui tutto bene; ora il "problema" si pone quando faccio il ciclo for da 0 al numero di elementi che voglio incollare; mi spiego, il codice funziona, ovvero:



e.DrawString(Me.Listview1.Items.Item(i).Text, font, XBrushes.Black, 50, 210)



però giustamente che fa il programma? Mi copia i numeri della prima item uno sopra l'altro, quindi in questo caso come da esempio sulla tabella sopra, mi copia nel pdf nella posizione ,

50,210 i numeri 1,2,3.

La stringa di codice ora sembra giusta, manca solo la posizione, come posso "aggiustarla"? Dovrei creare un altro ciclo che però mi dovrebbe cambiare le coordinate ogni item, come posso farlo?

Spero di essere stato chiaro, vi ringrazio per ogni vostra risposta e per il vostro interessamento.

agostin1 Profilo | Newbie

Ci sei poi riuscito?

leviathan89 Profilo | Newbie

Si, poi ci sono riuscito, hai bisogno d'aiuto?
Gianluca
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