首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我下载pdf格式的gridview时,会显示错误

为什么我下载pdf格式的gridview时,会显示错误
EN

Stack Overflow用户
提问于 2014-06-02 12:34:20
回答 2查看 53关注 0票数 1

我实际上想下载包含pid的pdf文件,以及从1月到12月的月份。

月份包含逗号后有9个数字的浮点数,因此它使网格视图超出了应有的范围。当我下载pdf文件时,它显示错误'System.Web.UI.HtmlTextWriter‘

这里到底发生了什么?

这是我的代码

代码语言:javascript
复制
 connection.Open();

 SqlCommand dm = new SqlCommand("select id,sum (case when [Month] = 1 then demand else 0.0 end) January, sum(case when [Month] = 2 then demand  else 0.0 end) February,sum(case when [Month] = 3 then demand  else 0.0 end) March ,sum(case when [Month] = 4 then demand  else 0.0 end) April ,sum(case when [Month] = 5 then demand  else 0.0 end) May ,sum(case when [Month] = 6 then demand  else 0.0 end) June ,sum(case when [Month] = 7 then demand  else 0.0 end) July ,sum(case when [Month] = 8 then demand  else 0.0 end) August ,sum(case when [Month] = 9 then demand  else 0.0 end) September ,sum(case when [Month] = 10 then demand  else 0.0 end) October ,sum(case when [Month] = 11 then demand  else 0.0 end) November ,sum(case when [Month] = 12 then demand  else 0.0 end) December from reorder group by id", connection);
    SqlDataReader fdm = dm.ExecuteReader();

    if (fdm.HasRows)
    {
        fdm.Read();
        GridView3.DataSource = fdm;

    }
    connection.Close();

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=Demand.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter wsfdm = new StringWriter();
    HtmlTextWriter fdmws = new HtmlTextWriter(wsfdm);
    GridView3.AllowPaging = false;
    GridView3.RenderControl(fdmws);
    GridView3.HeaderRow.Style.Add("width", "20%");
    GridView3.HeaderRow.Style.Add("font-size", "8x");
    GridView3.Style.Add("text-decoration", "none");
    GridView3.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
    GridView3.Style.Add("font-size", "8px");

    StringReader fgdm = new StringReader(fdmws.ToString());
    Document documentpdf = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(documentpdf);
    PdfWriter.GetInstance(documentpdf, Response.OutputStream);
    documentpdf.Open();
    htmlparser.Parse(fgdm);
    documentpdf.Close();
    Response.Write(documentpdf);
    Response.End();
}
EN

回答 2

Stack Overflow用户

发布于 2014-06-02 12:50:32

您必须在StringReader类中使用StringWriter对象,而不是HtmlTextWriter

尝尝这个

代码语言:javascript
复制
    connection.Open();
    SqlCommand dm = new SqlCommand("select id,sum (case when [Month] = 1 then demand else 0.0 end) January, sum(case when [Month] = 2 then demand  else 0.0 end) February,sum(case when [Month] = 3 then demand  else 0.0 end) March ,sum(case when [Month] = 4 then demand  else 0.0 end) April ,sum(case when [Month] = 5 then demand  else 0.0 end) May ,sum(case when [Month] = 6 then demand  else 0.0 end) June ,sum(case when [Month] = 7 then demand  else 0.0 end) July ,sum(case when [Month] = 8 then demand  else 0.0 end) August ,sum(case when [Month] = 9 then demand  else 0.0 end) September ,sum(case when [Month] = 10 then demand  else 0.0 end) October ,sum(case when [Month] = 11 then demand  else 0.0 end) November ,sum(case when [Month] = 12 then demand  else 0.0 end) December from reorder group by id", connection);
    SqlDataReader fdm = dm.ExecuteReader();

    if (fdm.HasRows)
    {
        fdm.Read();
        GridView3.DataSource = fdm;

    }
    connection.Close();

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=Demand.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter wsfdm = new StringWriter();
    HtmlTextWriter fdmws = new HtmlTextWriter(wsfdm);
    GridView3.AllowPaging = false;
    GridView3.RenderControl(fdmws);
    GridView3.HeaderRow.Style.Add("width", "20%");
    GridView3.HeaderRow.Style.Add("font-size", "8x");
    GridView3.Style.Add("text-decoration", "none");
    GridView3.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
    GridView3.Style.Add("font-size", "8px");

    StringReader fgdm = new StringReader(wsfdm.ToString());
    Document documentpdf = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(documentpdf);
    PdfWriter.GetInstance(documentpdf, Response.OutputStream);
    documentpdf.Open();
    htmlparser.Parse(fgdm);
    documentpdf.Close();
    Response.Write(documentpdf);
    Response.End();
}

来源:

看一下这里的export-gridview-to-pdf

票数 0
EN

Stack Overflow用户

发布于 2016-03-30 19:13:00

在连接关闭后粘贴此代码:

代码语言:javascript
复制
using (StringWriter sw = new StringWriter())
{
    using (HtmlTextWriter hw = new HtmlTextWriter(sw))
    {
        //To Export all pages
        GridView1.AllowPaging = false;           

        GridView3.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=Demand.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Write(pdfDoc);
        Response.End();
    }
}

别忘了包括iTextSharp动态链接库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23987389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档