提问人:Mat52 提问时间:10/5/2023 最后编辑:Mat52 更新时间:10/5/2023 访问量:36
iText7 表数组
iText7 Array of Tables
问:
代码片段将编译,但在运行时会引发 NullReferenceException。它说“对象未设置为对象的实例”。该代码是在 VS2019 上使用 .NET Core 3.1 创建的。 我找不到任何证据证明此代码是否可以运行。 非常感谢您的帮助。
class Program
{
static PdfDocument pdfTable;
static Document document;
static string destination;
static void Main()
{
destination = Path.Combine(@"C:\Users\Administrator\Documents", "SRC_Selection.pdf");
pdfTable = new PdfDocument(new PdfWriter(destination));
document = new Document(pdfTable);
// some usual MySql-stuff here
using (MySqlDataReader reader = cmd.ExecuteReader())
{
List<Table> tables = new List<Table>();
for(i = 0; i < 10; i++) tables.Add(new Table(1, true));
Cell[] cell = new Cell[reader.FieldCount];
int i = 0;
while (reader.Read())
{
For (int j = 0; j < reader.FieldCount-1; j++)
{
cell[j] = new Cell(1, 1)
.SetFontSize(10)
.SetTextAlignment(TextAlignment.LEFT)
.Add(new Paragraph(reader.GetString(j)));
tables[i].AddCell(cell[j]); // exception thrown here!
}
document.Add(tables[i]).Add(newline);
i++;
}
}
}
}
答:
0赞
Amit Mohanty
10/5/2023
#1
您得到的 NullReferenceException 可能是由于您声明了一个 Table 对象数组 (),但您尚未初始化该数组的每个元素。检查以下代码。Table[] table = new Table[10];
for (int j = 0; j < reader.FieldCount; j++)
{
table[i] = new Table(reader.FieldCount - 1); // Initialize the table with the appropriate number of columns
cell[j] = new Cell(1, 1)
.SetFontSize(10)
.SetTextAlignment(TextAlignment.LEFT)
.Add(new Paragraph(reader.GetString(j)));
table[i].AddCell(cell[j]);
}
评论
0赞
Mat52
10/5/2023
谢谢阿米特,我现在可以看到了。您的解决方案等效于具有列表元素的解决方案。我错过了初始化。
评论
reader
document