NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true); //拿到所有表格
Table table = allTables[0] as Table; //拿到第一个表格
bool flag = true;//这是第一行列头标记
for (int i = 0; i < type_caigouList.Count(); i++)
{
//实体反射值
var properties = type_caigouList[i].GetType().GetProperties();
//列头插入
if (flag)
{
Row FirstRow = (Row)table.Rows[0].Clone(true);
//反射获取特性为第一行内容
for (int j=0;j< FirstRow.Cells.Count; j++)
{
//清除原本列中内容
FirstRow.Cells[j].RemoveAllChildren();
var propertie = properties[j];
if (propertie != null && propertie.IsDefined(typeof(PrintNameAttribute), true))//PrintNameAttribute 的特性
{
PrintNameAttribute attribute = (PrintNameAttribute)propertie.GetCustomAttribute(typeof(PrintNameAttribute), true);
if (!attribute.IsEmpty())
{
Paragraph content = new Paragraph(doc);
content.AppendChild(new Run(doc, attribute.Name));
//插入内容
FirstRow.Cells[j].AppendChild(content);
}
}
}
flag = false;
//末尾插入
table.AppendChild(FirstRow);
table.Rows.Insert(i + 2, FirstRow);
}
else
{
Row SecondRow = (Row)table.Rows[i].Clone(true);
for (int j = 0; j < SecondRow.Cells.Count; j++)
{
SecondRow.Cells[j].RemoveAllChildren();
var propertie = properties[j];
if (propertie != null && propertie.IsDefined(typeof(PrintNameAttribute), true))//PrintNameAttribute 的特性
{
PrintNameAttribute attribute = (PrintNameAttribute)propertie.GetCustomAttribute(typeof(PrintNameAttribute), true);
if (!attribute.IsEmpty())
{
Paragraph content = new Paragraph(doc);
content.AppendChild(new Run(doc, Convert.ToString(propertie.GetValue(type_caigouList[i], null)) ));
SecondRow.Cells[j].AppendChild(content);
}
}
}
//末尾插入
//table.AppendChild(SecondRow);
table.Rows.Insert(i+2, SecondRow);
}
}
table.RemoveChild(table.Rows[0]);
table.RemoveChild(table.Rows[0]);
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交