我有这样的代码
string[] data = new string[] { "1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14",
"1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14",
"1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14",
"1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14",
"1", "2", "3", "4", "5", "6", "7", "8",
"1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14",
"9", "10", "11", "12", "13", "14",};
using (PdfWriter writer = new PdfWriter(destinationFile))
{
// Creating a PdfDocument object
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
// Creating a Document object
using (Document doc = new Document(pdfDoc))
{
// Creating a table
float[] pointColumnWidths1 = { 150f, 150f, 150f, 150f };
Table table = new Table(pointColumnWidths1);
Cell cell;
float[] pointColumnWidths2 = { 150f };
Table nestedTable = new Table(pointColumnWidths2);
for (int y = 0; y < data.Length; y++)
{
cell = new Cell();
cell.Add(data[y]);
nestedTable.AddCell(cell);
}
table.AddCell(nestedTable);
doc.Add(table);
doc.Close();
}
}
}
这是输出
我正在做的是使用itext而不是itextsharp填充四个表列。
好的,嵌套表到目前为止已经可以使用了。但是如果将data
数组填充为最多100个字符串数组。我收到错误
System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection.
我认为错误是因为填充的嵌套表对于父表太大了吗?
因此,如果嵌套表太大,我该如何调整它。一些数据将写入下一列。我无法真正解决自己的问题,所以我在这里问一个问题。
很抱歉,问题不完整。
这是错误
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
at System.Collections.Generic.List`1.set_Item(Int32 index, T value)
at iText.Layout.Renderer.TableRenderer.UpdateFirstRowBorders(Int32 colN)
at iText.Layout.Renderer.TableRenderer.CollapseAllBorders()
at iText.Layout.Renderer.TableRenderer.Layout(LayoutContext layoutContext)
at iText.Layout.Renderer.RootRenderer.AddChild(IRenderer renderer)
at iText.Layout.RootElement`1.Add(IBlockElement element)
at iText.Layout.Document.Add(IBlockElement element)
at PdfItextSample.Program.CreatePdf(String destinationFile, List`1 lst)
它指向行
doc.Add(table);
非常感谢您
答案 0 :(得分:0)
我假设您使用的是iText7较旧的版本(可能是7.0.x?),因为您使用了
string[] data = ...;
...
cell.Add(data[y]);
Cell.Add(string)
已于大约2年前从iText7 API中删除。
为了使您的代码可在当前的iText7上运行,我将Add
调用替换为
cell.Add(new Paragraph(data[y]));
简单替换之后,您的代码就可以与当前的iText 7.1.7 SNAPSHOT和7.1.6版本一起运行了。
实际上,已经完成了很多工作,尤其是在表创建代码中。因此,您似乎遇到了与此固定表相关的错误。
要继续,您应该更新。