Cómo imprimir un conjunto de datos GridView (todos de la misma) utilizando iTextSharp en asp.net? Necesito sólo no toque el código completocómo imprimir una vista de cuadrícula utilizando iTextSharp
5
A
Respuesta
4
Pruebe con esto:
protected void ExportToPDF(GridView gvReport, bool LandScape)
{
int noOfColumns = 0, noOfRows = 0;
DataTable tbl = null;
if (gvReport.AutoGenerateColumns)
{
tbl = gvReport.DataSource as DataTable; // Gets the DataSource of the GridView Control.
noOfColumns = tbl.Columns.Count;
noOfRows = tbl.Rows.Count;
}
else
{
noOfColumns = gvReport.Columns.Count;
noOfRows = gvReport.Rows.Count;
}
float HeaderTextSize = 8;
float ReportNameSize = 10;
float ReportTextSize = 8;
float ApplicationNameSize = 7;
// Creates a PDF document
Document document = null;
if (LandScape == true)
{
// Sets the document to A4 size and rotates it so that the orientation of the page is Landscape.
document = new Document(PageSize.A4.Rotate(), 0, 0, 15, 5);
}
else
{
document = new Document(PageSize.A4, 0, 0, 15, 5);
}
// Creates a PdfPTable with column count of the table equal to no of columns of the gridview or gridview datasource.
iTextSharp.text.pdf.PdfPTable mainTable = new iTextSharp.text.pdf.PdfPTable(noOfColumns);
// Sets the first 4 rows of the table as the header rows which will be repeated in all the pages.
mainTable.HeaderRows = 4;
// Creates a PdfPTable with 2 columns to hold the header in the exported PDF.
iTextSharp.text.pdf.PdfPTable headerTable = new iTextSharp.text.pdf.PdfPTable(2);
// Creates a phrase to hold the application name at the left hand side of the header.
Phrase phApplicationName = new Phrase("Sample Application", FontFactory.GetFont("Arial", ApplicationNameSize, iTextSharp.text.Font.NORMAL));
// Creates a PdfPCell which accepts a phrase as a parameter.
PdfPCell clApplicationName = new PdfPCell(phApplicationName);
// Sets the border of the cell to zero.
clApplicationName.Border = PdfPCell.NO_BORDER;
// Sets the Horizontal Alignment of the PdfPCell to left.
clApplicationName.HorizontalAlignment = Element.ALIGN_LEFT;
// Creates a phrase to show the current date at the right hand side of the header.
Phrase phDate = new Phrase(DateTime.Now.Date.ToString("dd/MM/yyyy"), FontFactory.GetFont("Arial", ApplicationNameSize, iTextSharp.text.Font.NORMAL));
// Creates a PdfPCell which accepts the date phrase as a parameter.
PdfPCell clDate = new PdfPCell(phDate);
// Sets the Horizontal Alignment of the PdfPCell to right.
clDate.HorizontalAlignment = Element.ALIGN_RIGHT;
// Sets the border of the cell to zero.
clDate.Border = PdfPCell.NO_BORDER;
// Adds the cell which holds the application name to the headerTable.
headerTable.AddCell(clApplicationName);
// Adds the cell which holds the date to the headerTable.
headerTable.AddCell(clDate);
// Sets the border of the headerTable to zero.
headerTable.DefaultCell.Border = PdfPCell.NO_BORDER;
// Creates a PdfPCell that accepts the headerTable as a parameter and then adds that cell to the main PdfPTable.
PdfPCell cellHeader = new PdfPCell(headerTable);
cellHeader.Border = PdfPCell.NO_BORDER;
// Sets the column span of the header cell to noOfColumns.
cellHeader.Colspan = noOfColumns;
// Adds the above header cell to the table.
mainTable.AddCell(cellHeader);
// Creates a phrase which holds the file name.
Phrase phHeader = new Phrase("Sample Export", FontFactory.GetFont("Arial", ReportNameSize, iTextSharp.text.Font.BOLD));
PdfPCell clHeader = new PdfPCell(phHeader);
clHeader.Colspan = noOfColumns;
clHeader.Border = PdfPCell.NO_BORDER;
clHeader.HorizontalAlignment = Element.ALIGN_CENTER;
mainTable.AddCell(clHeader);
// Creates a phrase for a new line.
Phrase phSpace = new Phrase("\n");
PdfPCell clSpace = new PdfPCell(phSpace);
clSpace.Border = PdfPCell.NO_BORDER;
clSpace.Colspan = noOfColumns;
mainTable.AddCell(clSpace);
// Sets the gridview column names as table headers.
for (int i = 0; i < noOfColumns; i++)
{
Phrase ph = null;
if (gvReport.AutoGenerateColumns)
{
ph = new Phrase(tbl.Columns[i].ColumnName, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
}
else
{
ph = new Phrase(gvReport.Columns[i].HeaderText, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
}
mainTable.AddCell(ph);
}
// Reads the gridview rows and adds them to the mainTable
for (int rowNo = 0; rowNo < noOfRows; rowNo++)
{
for (int columnNo = 0; columnNo < noOfColumns; columnNo++)
{
if (gvReport.AutoGenerateColumns)
{
string s = gvReport.Rows[rowNo].Cells[columnNo].Text.Trim();
Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
mainTable.AddCell(ph);
}
else
{
if (gvReport.Columns[columnNo] is TemplateField)
{
DataBoundLiteralControl lc = gvReport.Rows[rowNo].Cells[columnNo].Controls[0] as DataBoundLiteralControl;
string s = lc.Text.Trim();
Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
mainTable.AddCell(ph);
}
else
{
string s = gvReport.Rows[rowNo].Cells[columnNo].Text.Trim();
Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
mainTable.AddCell(ph);
}
}
}
// Tells the mainTable to complete the row even if any cell is left incomplete.
mainTable.CompleteRow();
}
// Gets the instance of the document created and writes it to the output stream of the Response object.
PdfWriter.GetInstance(document, Response.OutputStream);
// Creates a footer for the PDF document.
HeaderFooter pdfFooter = new HeaderFooter(new Phrase(), true);
pdfFooter.Alignment = Element.ALIGN_CENTER;
pdfFooter.Border = iTextSharp.text.Rectangle.NO_BORDER;
// Sets the document footer to pdfFooter.
document.Footer = pdfFooter;
// Opens the document.
document.Open();
// Adds the mainTable to the document.
document.Add(mainTable);
// Closes the document.
document.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename= SampleExport.pdf");
Response.End();
}
tomó de here
2
Esto es lo que estoy usando hoy en día. Rasgado de http://blog.codovations.com/2011/01/generating-pdf-from-datatable-using.html
using System;
using System.Web;
using System.Data;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace yetanothercoder
{
/// <summary>
/// Summary description for CreatePdf
/// </summary>
public class PDFExporter
{
private readonly DataTable dataTable;
private readonly string fileName;
private readonly bool timeStamp;
public PDFExporter(DataTable dataTable, string fileName, bool timeStamp)
{
this.dataTable = dataTable;
this.fileName = timeStamp ? String.Format("{0}-{1}", fileName, GetTimeStamp(DateTime.Now)) : fileName;
this.timeStamp = timeStamp;
}
public void ExportPDF()
{
HttpResponse Response = HttpContext.Current.Response;
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".pdf");
// step 1: creation of a document-object
Document document = new Document(PageSize.A4, 10, 10, 90, 10);
// step 2: we create a writer that listens to the document
PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
//set some header stuff
document.AddTitle(fileName);
document.AddSubject(String.Format("Table of {0}", fileName));
document.AddCreator("www.yetanothercoder.com");
document.AddAuthor("naveenj");
// step 3: we open the document
document.Open();
// step 4: we add content to the document
CreatePages(document);
// step 5: we close the document
document.Close();
}
private void CreatePages(Document document)
{
document.NewPage();
document.Add(FormatPageHeaderPhrase(dataTable.TableName));
PdfPTable pdfTable = new PdfPTable(dataTable.Columns.Count);
pdfTable.DefaultCell.Padding = 3;
pdfTable.WidthPercentage = 100; // percentage
pdfTable.DefaultCell.BorderWidth = 2;
pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
foreach (DataColumn column in dataTable.Columns)
{
pdfTable.AddCell(FormatHeaderPhrase(column.ColumnName));
}
pdfTable.HeaderRows = 1; // this is the end of the table header
pdfTable.DefaultCell.BorderWidth = 1;
foreach (DataRow row in dataTable.Rows)
{
foreach (object cell in row.ItemArray)
{
//assume toString produces valid output
pdfTable.AddCell(FormatPhrase(cell.ToString()));
}
}
document.Add(pdfTable);
}
private static Phrase FormatPageHeaderPhrase(string value)
{
return new Phrase(value, FontFactory.GetFont(FontFactory.TIMES, 10, Font.BOLD, new BaseColor(255, 0, 0)));
}
private static Phrase FormatHeaderPhrase(string value)
{
return new Phrase(value, FontFactory.GetFont(FontFactory.TIMES, 8, Font.UNDERLINE, new BaseColor(0, 0, 255)));
}
private Phrase FormatPhrase(string value)
{
return new Phrase(value, FontFactory.GetFont(FontFactory.TIMES, 8));
}
private string GetTimeStamp(DateTime value)
{
return value.ToString("yyyyMMddHHmmssffff");
}
}
}
+0
Gracias por su esfuerzo. esta es una muy buena manera. – amrswalha
+0
@amrswalha - ¡Bienvenido! No se olvide de votar la pregunta y la respuesta que le resultaron útiles :) –
Cuestiones relacionadas
- 1. iTextSharp para imprimir un gridview
- 2. Cómo contar las filas en una vista de cuadrícula en asp.net utilizando jQuery
- 3. cómo borrar la vista de cuadrícula?
- 4. ¿Cómo permitir la clasificación de una vista de cuadrícula?
- 5. Imprimir PDF desde ASP.Net sin previa vista
- 6. Cómo vincular una vista de cuadrícula a un ExpandoObject
- 7. Imprimir ServerReport sin vista previa
- 8. Arrastrando elementos en la vista de cuadrícula
- 9. ¿La mejor manera de imprimir una vista de cuadrícula de datos con todas las filas y todas las columnas?
- 10. Imprimir NSString Argumento utilizando NSLog
- 11. Vista de cuadrícula de Android Desplácese horizontalmente
- 12. Vista de cuadrícula de ASP.NET frente a Vista de lista
- 13. ¿Cómo establecer el foco en una fila en particular en una cuadrícula de datos/vista de cuadrícula?
- 14. utilizando JavaScript para imprimir imágenes
- 15. ancho de la vista de cuadrícula boundfield
- 16. Cambiar texto de una columna de selección autogenerada de una vista de cuadrícula en asp.net - ¿Cómo?
- 17. Cómo marcar una casilla de verificación en una vista de cuadrícula usando DataBinder.Eval
- 18. cómo usar iTextSharp?
- 19. Adición dinámica de elementos de cuadrícula en la vista de cuadrícula
- 20. ¿Cómo agrego una columna con botones en una vista de cuadrícula en asp.net?
- 21. Django: Imprimir url de vista sin hardcoding la url
- 22. extracción de texto Itextsharp
- 23. Cómo saltear una columna mientras se exporta la vista de cuadrícula en excel?
- 24. convierte un archivo HTML al archivo PDF utilizando iTextSharp
- 25. ¿Cómo obtengo los datos de fila seleccionados de una vista de cuadrícula de datos usando SelectedRows?
- 26. ¿Cómo establecer un ancho de columna de una vista de cuadrícula en Android?
- 27. Hipervínculo en la vista de cuadrícula de datos
- 28. ¿Cómo obtengo el elemento seleccionado de una vista de cuadrícula con ImageAdapter? (Android)
- 29. ¿cómo puedo imprimir vista previa en win32 C++?
- 30. Agregar menú contextual en una vista de cuadrícula de datos en una aplicación winform
Debe copiar el código relativo en su respuesta en caso de que 'dotnetspider' decida quedarse sin sentido, lo que le deja con un vínculo inactivo. –
@ Chris-Tienes razón. Hizo eso. – coder
Buen hallazgo en la muestra de DataView - Probablemente voy a saquear parte del código para mis propios proyectos. –