protected void pdf(DataTable dt, string str)
{
Document doc = new Document(iTextSharp.text.PageSize.A4, 10, 22, 34, 34);
PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(Request.PhysicalApplicationPath+"sdad.pdf", FileMode.Create));
doc.Open();
doc.Add(new Paragraph("Table"));
GridView dataGridview = new GridView();
dataGridview.ShowHeaderWhenEmpty = true;
dataGridview.AllowPaging = false;
dataGridview.DataSource = dt;
dataGridview.DataBind();
PdfPTable table = new PdfPTable(dataGridview.Columns.Count);
for (int j = 0; j < dataGridview.Columns.Count; j++)
{
table.AddCell(new Phrase(dataGridview.Columns[j].HeaderText));
}
table.HeaderRows = 1;
for (int j = 0; j < dataGridview.Rows.Count;j++)
{
for (int k = 0; k < dataGridview.Columns.Count; k++)
{
if (dataGridview.Rows[j].Cells[k].Text != null)
{
table.AddCell(new Phrase(dataGridview.Rows[j].Cells[k].Text.ToString()));
}
}
}
doc.Add(table);
doc.Close();
}
这是使用Isharp文本创建PDF的代码。但是我收到错误PdfPTable构造函数中的列数必须大于零。请任何人都可以帮助解决此错误。提前谢谢。
答案 0 :(得分:2)
就我而言,我的HTML显然是“无效”的:
<table class="table-bordered" style="width: 100%; margin-top: 10px">
</table>
即。没有行的表。
答案 1 :(得分:0)
我遇到了这个问题,我找到了解决方案,你可以添加
xml中的 AutoGenerateColumns="False"
ItemsSource="{Binding}
(在DataGrid标记中)。
那么你必须指定dataGrid.Columns。
<DataGrid Name="grdTransaksi" HorizontalAlignment="Left"Margin="10,94,0,0" VerticalAlignment="Top" AutoGenerateColumns="False" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Tanggal" Binding="{Binding tanggal}" />
<DataGridTextColumn Header="Kode Akun" Binding="{Binding KodeAkun}" />
</DataGrid.Columns>
</DataGrid>