2016-09-21 4 views
2

Я недавно начал использовать itextsharp и использовал его для создания отчета в формате PDF с помощью веб-службы в asp.net. Мой код в веб-службе показан ниже. Моя проблема заключается в том, что она не отображает первые 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

Код ОП содержит следующую строку:

table.WidthPercentage = 200; 

Это приводит к таблице, чтобы быть в два раза (200%) в ширине страницы минус поля. Таким образом, он частично скрыт.

При установке ширины таблицы, используя WidthPercentage свойство, один, как правило, не следует устанавливать его выше 100.

Как О.П. тем подтвердил, соответствующее изменение вызывает код для правильной работы.

Смежные вопросы