gpt4 book ai didi

c# - 将具有随机行和列(由对象定义)的表导出到 excel

转载 作者:行者123 更新时间:2023-11-30 21:02:36 25 4
gpt4 key购买 nike

我有一个任务,我确信可以用一种简单的方式轻松概括。

我有不同的表要动态导出到 excel,我正在做的是从 Object 参数在 HTML 中创建表列,并使用列表上的 foreach 来创建行。

例如,如果我有一个客户列表 ( List<Customer>)我根据对象属性的数量和名称创建 tr:

public class Customer
{
public int DeliveryAddressId { get; set; }
public DateTime CreatedDate { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
....
}

var output = "<table>";
output += "<thead>";
output += "<tr>";
output += "<th>DeliveryAddressId </th>";
.....

和用于填充行的 foreach:

foreach (var customer in List<Customer>)
{
output += "<tr>";
output += "<td>" + customer.DeliveryAddressId + "</td>";
.....

但是我有不同参数的不同对象,所以问题是:

如何创建一个接受 List<Object> 的通用方法作为输入并使用对象参数名称作为列名称创建此类表,然后相应地循环行?

最佳答案

如果您创建一个接受 T 列表的通用方法

public string DumpToTable<T>(List<T> list) {
}

您可以像这样枚举 T 上的所有公共(public)属性:

var props = typeof(T).GetProperties(BindingFlags.Public);

根据您的用例,您可能希望制作 .GetProperties(BindingFlags.Public | BindingFlags.DeclaredOnly); 以过滤掉继承的成员。

对于每个 PropertyInfo 元素,您可以在生成 header 时访问它们的 .Name

之后,遍历列表,您必须调用它们的相关 .GetValue 方法:

foreach(T item in list) {
string line = "";
foreach(PropertyInfo prop in props) {
line += string.Format("<td>{0}</td>", prop.GetValue(item));
}
output += string.Format("<tr>{0}</tr>", line);
}

关于c# - 将具有随机行和列(由对象定义)的表导出到 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com