将数据表格转换为PDF格式

12

我能否得到一个在Asp.net Web应用程序中将datatable转换为pdf的代码?我希望有导出datatablePDF的功能。我找到了这篇文章,但它使用gridview来导出。


那么GridView有什么问题呢?你不需要在页面中显示GridView,它只是用于为PDF数据创建HTML表格格式。 - Naresh Pansuriya
我在页面上没有显示网格视图。 - Rajaram Shelar
1
我也在说你的数据不会在网格视图中显示,它只是从生成的HTML视图中获取以生成PDF。你可以使用iTextSharp,但需要付出很多努力才能做到这一点。 - Naresh Pansuriya
有没有不使用GridView的方法来实现这个? - Rajaram Shelar
是的,您可以使用iTextSharp库按照下面发布的答案进行操作。实际上,上面建议的URL也使用了iTextSharp库,但它包装了一些方法,因此您可以直接通过HTML生成PDF。 - Naresh Pansuriya
1
使用任何第三方库[如其他人提到的ItextSharp等]。 - Kamran Shahid
2个回答

28

使用iTextSharp,您可以完成此操作。它可以从互联网下载,并且是免费的。 请查看以下代码,

   public void ExportToPdf(DataTable dt,string strFilePath)
   {      
    Document document = new Document();
    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(strFilePath, FileMode.Create));
    document.Open();
    iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA, 5);

    PdfPTable table = new PdfPTable(dt.Columns.Count);
    PdfPRow row = null;
    float[] widths = new float[dt.Columns.Count];
    for (int i = 0; i < dt.Columns.Count; i++)
        widths[i] = 4f;

    table.SetWidths(widths);

    table.WidthPercentage = 100;
    int iCol = 0;
    string colname = "";
    PdfPCell cell = new PdfPCell(new Phrase("Products"));

    cell.Colspan = dt.Columns.Count;

    foreach (DataColumn c in dt.Columns)
    {
        table.AddCell(new Phrase(c.ColumnName, font5));
    }

    foreach (DataRow r in dt.Rows)
    {
        if (dt.Rows.Count > 0)
        {
            for (int h = 0; h < dt.Columns.Count; h++)
            {
                table.AddCell(new Phrase(r[h].ToString(), font5));
            }
        }          
    }
    document.Add(table);
    document.Close();
}

数据表出现错误。是否存在与数据表类型有冲突的问题? - Muthu Ganapathy Nathan

5
您无法将 DataTable 转换为 PDF 文档,但是您可以像正常内容一样将数据插入其中。这必须通过数据控件完成,例如 GridViewListView,就像在普通的网页中一样。这就是为什么您链接的 文章 这样做的原因。 GridView 可能是最接近和最容易使其在 PDF 文档中外观与 DataTable 相同的方法。因为它将只存储为 PDF 文档中的普通表格。
请注意,GridView 是在内存中创建的 - 您不需要在 HTML 页面中创建或拥有它。尝试并实验代码以更好地理解此过程。
因此,我建议遵循 文章

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接