2016-09-21 116 views
2

我最近开始使用itextsharp,并一直使用它来使用asp.net中的web服务创建PDF报告。我在Web服务中的代码如下所示。我的问题是,它不显示前3列数据。iTextSharp不显示所有列

我认为问题出在dt.Rows

 string[] strFile = Directory.GetFiles(strUploadPath); 

     Array.ForEach(Directory.GetFiles(strUploadPath), File.Delete); 

     Document document = new Document(); 
     PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(strUploadPath + "/" + strFilename, FileMode.Create)); 
     document.Open(); 
     Font font5 = FontFactory.GetFont(FontFactory.HELVETICA, 5); 
     PdfPTable table = new PdfPTable(dt.Columns.Count); 
     float[] widths = new float[] { 4f, 4f, 4f, 4f, 4f, 4f }; 
     table.SetWidths(widths); 
     table.WidthPercentage = 200; 
     PdfPCell cell = new PdfPCell(new Phrase()); 
     int j = 1; 
     foreach (DataColumn c in dt.Columns) 
     { 
      if (j <= (dt.Columns.Count)) 
      { 

       //table.AddCell(new Phrase(c.ToString(),font5)); 
       //table.AddCell(new Phrase(j.ToString(),font5)); 
       table.AddCell(new Phrase(c.ColumnName, font5)); 
      } 
      j++; 
     } 

     int k = 1; 
     foreach (DataRow r in dt.Rows) 
     { 
      if (dt.Rows.Count > 0) 
      { 
       table.AddCell(new Phrase(k.ToString(), font5)); 
       table.AddCell(new Phrase(r[1].ToString(), font5)); 
       table.AddCell(new Phrase(r[2].ToString(), font5)); 
       table.AddCell(new Phrase(r[3].ToString(), font5)); 
       table.AddCell(new Phrase(r[4].ToString(), font5)); 
       table.AddCell(new Phrase(r[5].ToString(), font5)); 
       // table.AddCell(new Phrase(r[6].ToString(), font5)); 
       //    table.AddCell(new Phrase(r[7].ToString(), font5)); 

      } 
      k++; 
     } 
     document.Add(table); 
     document.CloseDocument(); 
     document.Close(); 
     return strFilename; 
    } 
    else 
    { 
     return null; 
    } 
+0

你确定'table.WidthPercentage = 200'是个好主意吗?这毕竟意味着表格应该是页面减去边距的两倍... – mkl

+0

感谢您的信息工作 –

+0

好的,我会做出答案。 – mkl

回答

1

的OP的代码包含此行:

table.WidthPercentage = 200; 

这导致表的两倍(200%),为宽的页边距减去。因此,它是部分隐藏的。

当使用WidthPercentage属性设置表宽度,一个通常不应该设置在其上方100

作为OP同时确认,相应的变化导致代码以正常工作。