2016-09-21 13 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'はいいですか?これは結局、テーブルがページからマージンを差し引いた幅の2倍になることを意味します... – mkl

+0

あなたの情報をお寄せいただきありがとうございます。 –

+0

OK、私はそれを答えにします。 – mkl

答えて

1

OPのコードは、この行が含まれています

table.WidthPercentage = 200; 

これは、テーブルが二度(200%)などの広いページのマイナスマージンのようになります。したがって、部分的に隠されています。

WidthPercentageプロパティを使用してテーブルの幅を設定する場合、1は通常OPはその間確認されたように、適切な変更は、コードが正しく動作する原因となる100

の上にそれを設定してはいけません。

関連する問題