在asp.net中将gridview导出为pdf格式 [英] export gridview to pdf format in asp.net

查看:81
本文介绍了在asp.net中将gridview导出为pdf格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨专家,



我试图将Gridview数据导出为pdf格式我收到此错误无法转换类型'iTextSharp.text的对象。 html.simpleparser.CellWrapper'输入'iTextSharp.text.Paragraph'如何解决这个问题。



这是我正在使用的代码。



Hi Experts,

I am trying to export the Gridview data into pdf format I am getting this error "Unable to cast object of type 'iTextSharp.text.html.simpleparser.CellWrapper' to type 'iTextSharp.text.Paragraph'" how to solve this issue.

Here is the code I am using.

Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition",
                                        "attachment;filename=EmpDetails.pdf");
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                StringWriter sw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                griddetails.AllowPaging = false;
                griddetails.DataBind();
                griddetails.RenderControl(hw);
                griddetails.HeaderRow.Style.Add("width", "15%");
                griddetails.HeaderRow.Style.Add("font-size", "10px");
                griddetails.Style.Add("text-decoration", "none");
                griddetails.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
                griddetails.Style.Add("font-size", "8px");
                StringReader sr = new StringReader(sw.ToString());
                iTextSharp.text.Document pdfDoc =
              new iTextSharp.text.Document(PageSize.A4, 7f, 7f, 7f, 0f);
                iTextSharp.text.html.simpleparser.HTMLWorker htmlparser = new
              iTextSharp.text.html.simpleparser.HTMLWorker(pdfDoc);
                PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
                pdfDoc.Open();
                htmlparser.Parse(sr);// Here I am getting the error
                pdfDoc.Close();
                Response.Write(pdfDoc);
                Response.End();



请分享您的想法。


Kindly Share your thoughts.

推荐答案

有两个方法1)将结果导入水晶报告并导出为PDF方法2)使用任何第三方控件导出。没有直接的方法
There are two ways 1) get the result in to crystal report and export to PDF method 2) Use any third party control to export. there is no direct way


你必须在代码中进行一些更改..使用以下代码

u have to make some changes in code..use following code
Response.ContentType = "application/pdf";
     Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
     Response.Cache.SetCacheability(HttpCacheability.NoCache);
     StringWriter sw = new StringWriter();
     HtmlTextWriter hw = new HtmlTextWriter(sw);

     gvdetails.AllowPaging = false;
     gvdetails.DataBind();
     gvdetails.RenderBeginTag(hw);
     gvdetails.HeaderRow.RenderControl(hw);
     foreach (GridViewRow row in gvdetails.Rows)
     {
         row.RenderControl(hw);
     }
     gvdetails.FooterRow.RenderControl(hw);
     gvdetails.RenderEndTag(hw);
     gvdetails.Caption = "Your caption";
     gvdetails.HeaderRow.Style.Add("width", "15%");
     gvdetails.HeaderRow.Style.Add("font-size", "10px");
     gvdetails.Style.Add("text-decoration", "none");
     gvdetails.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
     gvdetails.Style.Add("font-size", "8px");
     StringReader sr = new StringReader(sw.ToString());
     Document pdfDoc = new Document(PageSize.A2, 7f, 7f, 7f, 0f);
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
     pdfDoc.Open();
     htmlparser.Parse(sr);
     pdfDoc.Close();
     Response.Write(pdfDoc);
     Response.End();



i参考以下链接中的答案5.

http://stackoverflow.com/questions/6343630/gridview-must-be -plaed-a-form-tag-with-runat-server-even-after-the-gri [ ^ ]



或在你的代码页中添加以下代码块并使用你的代码,因为它是


i have refer answer 5 from following link.
http://stackoverflow.com/questions/6343630/gridview-must-be-placed-inside-a-form-tag-with-runat-server-even-after-the-gri[^]

or in ur code page add following code block and use ur code as it is

public override void VerifyRenderingInServerForm(Control control)
   {
       /* Verifies that the control is rendered */
   }


试试这样:



protected void imgExcel_Click(object sender,ImageClickEventArgs e)

{

gvEmp.AllowPaging = false;

gvEmp.DataBind();

Response.ClearContent();

Response.AddHeader(Content-disposition,string.Format(attachment; filename = { 0},Emp));

Response.Charset =;

Response.ContentType =application / pdf;

StringWriter sw = new StringWriter();

HtmlTextWriter htw = new HtmlTextWriter(sw);

gvEmp.RenderControl(htw);

回复.Write(sw.ToString());

Response.End();

}



public override void VerifyRenderingInServerForm(Control control)

{

// base.VerifyRenderingInServerForm(control);

}
Try like this :

protected void imgExcel_Click(object sender, ImageClickEventArgs e)
{
gvEmp.AllowPaging = false;
gvEmp.DataBind();
Response.ClearContent();
Response.AddHeader("Content-disposition", string.Format("attachment;filename={0}", "Emp"));
Response.Charset = "";
Response.ContentType = "application/pdf";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvEmp.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{
// base.VerifyRenderingInServerForm(control);
}


这篇关于在asp.net中将gridview导出为pdf格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆