该表输出21列,我希望它出现在表单上,当它导出为PDF时,我只想选择6个特定列进行输出。
但在我的情况下,导出的PDF不会完全导出这些列,因为它只显示2列,数据行填充下一列标题。 这个datagridview是用SQL生成的,我正在使用ItextSharp。
这是datagridview:
PDF输出:
这是代码:
for (int i = 0; i < colNum; i++)
{
Phrase ph = null;
if (memberGrid.Columns[i].Name == "Name" || memberGrid.Columns[i].Name == "Gender" || memberGrid.Columns[i].Name == "Address" || memberGrid.Columns[i].Name == "Email Address" || memberGrid.Columns[i].Name == "Mobile No" || memberGrid.Columns[i].Name == "Home No.")
{
ph = new Phrase(memtable.Columns[i].ColumnName, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
mainTable.AddCell(ph);
}
}
for (int x = 0; x < memberGrid.Rows.Count; x++)
{
for (int k = 0; k < memberGrid.Columns.Count; k++)
{
if (memberGrid.Columns[k].Name == "Name" || memberGrid.Columns[k].Name == "Gender" || memberGrid.Columns[k].Name == "Address" || memberGrid.Columns[k].Name == "Email Address" || memberGrid.Columns[k].Name == "Mobile No" || memberGrid.Columns[k].Name == "Home No.")
{
if (memberGrid[k, x].Value != null)
{
string s = memberGrid[k, x].Value.ToString().Trim();
Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
mainTable.AddCell(ph);
}
}
}
}
我的桌子怎样才能正常显示?
答案 0 :(得分:1)
使用AddCell
并致电colNum
时,会按照您添加的顺序将单元格添加到表格中。例如,如果您创建一个包含3列的表并添加值1,2,3,4,5,6,则1,2,3将添加到第一行,4,5,6将添加到第二行。
您应该更正代码中的一些内容:
memberGrid.Columns.Count
替换为memtable.Columns[i].ColumnName
memberGrid.Columns[i].HeaderText
替换为if (memberGrid[k, x].Value != null)
null
值,则此语句PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Phrase("Header spanning 3 columns"));
cell.Colspan = 3;
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
table.AddCell(cell);
table.AddCell("Col 1 Row 1");
table.AddCell("Col 2 Row 1");
table.AddCell("Col 3 Row 1");
table.AddCell("Col 1 Row 2");
table.AddCell("Col 2 Row 2");
table.AddCell("Col 3 Row 2");
doc.Add(table);
可能会导致类似问题。 这些是代码中明显的问题,1和2导致输出问题。
示例:强>
以下示例取自iTextSharp - Introducing Tables:
{{1}}