如何将GridView数据导出到PDF

语言:ASP.net

平台:带有ASP.net的Visual Studio 2010

技术:用于ASP.net

级别:初学者

注意:

您必须下载itextsharp.dll文件并添加为对您的项目的引用。可以从以下位置下载iTextsharp.dll:

下面的链接。

http://sourceforge.net/projects/itextsharp/

介绍

1.将gridview添加到aspx文件中

2.在aspx文件中添加一个按钮,并将名称命名为“ btnExportToPDF”

3.将代码添加到aspx文件中

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
    <asp:BoundField DataField="State" HeaderText="State" />
    <asp:BoundField DataField="City" HeaderText="City" />
    </Columns>
    </asp:GridView>
<asp:Button ID="btnExportToPDF" runat="server" Text="ExportToPDF" 
        onclick="btnExportToPDF_Click" />
4.在aspx.cs文件中编写代码
protected void Page_Load(object sender, EventArgs e)
{
            DataTable dtRecords = new DataTable();
            dtRecords.Columns.Add("State", typeof(string));
            dtRecords.Columns.Add("City", typeof(string));
            DataRow dr = dtRecords.NewRow();
            dr["State"] = "Maharashtra";
            dr["City"] = "Nagpur";
            dtRecords.Rows.Add(dr);  
            GridView1.DataSource = dtRecords;
            GridView1.DataBind();
}
protected void btnExportToPDF_Click(object sender, EventArgs e)
{
           int noOfColumns = 0, noOfRows = 0;       
            DataTable tbl = null;    
            if (GridView1.AutoGenerateColumns)        
            {          
                tbl = GridView1.DataSource as DataTable;
                // Gets the DataSource of the GridView Control.        
                noOfColumns = tbl.Columns.Count;        
                noOfRows = tbl.Rows.Count;       
            }       
            else       
            {           
                noOfColumns = GridView1.Columns.Count;      
                noOfRows = GridView1.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
                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 (GridView1.AutoGenerateColumns)    
                {             
                    ph = new Phrase(tbl.Columns[i].ColumnName, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD)); 
                }           
                else        
                {            
                    ph = new Phrase(GridView1.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 (GridView1.AutoGenerateColumns)           
                    {                    
                        string s = GridView1.Rows[rowNo].Cells[columnNo].Text.Trim();    
                        Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL)); 
                        mainTable.AddCell(ph);       
                    }              
                    else        
                    {           
                        if (GridView1.Columns[columnNo] is TemplateField)     
                        {                     
                            DataBoundLiteralControl lc = GridView1.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 = GridView1.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(); 
        }   
        public bool LandScape { get; set; } 
} 
 public override void VerifyRenderingInServerForm(Control control)
{ 
}
摘要:

运行该应用程序,单击按钮,它将要求保存或打开一个文件,如果保存,它将保存到您的磁盘中

或者,如果单击“打开”,则直接打开PDF文件。

参考资料

执照

字节数

关于作者

Vivek M.卡皮勒

ITC信息技术开发人员

印度,班加罗尔

From: https://bytes.com/topic/net/insights/912717-how-export-gridview-data-pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值