c# list<object>的数据怎么导出到excel

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# list<object>的数据怎么导出到excel相关的知识,希望对你有一定的参考价值。

如图代码,最终返回list<object>,是ef框架的linq语句。我现在想导出到excel。请问该怎么实现?不要告诉我说写个for循环,多行多列给excel赋值,这让我感觉代码很差,可移植性更差,最好有个能直接转成datatable,或者直接导出的

参考技术A /// <summary>
///将list泛型数组转换成datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <param name="header"></param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(List<T> list, string header)

string[] arrHeader = header.Split(',');
DataTable dt = new DataTable();
DataRow dr;
Boolean columnHeader = true;
foreach (T t in list)

Type ut = t.GetType();
PropertyInfo[] plist = ut.GetProperties();
dr = dt.NewRow();
foreach (var arr in arrHeader)

var name = arr.Split(':')[0];
var key = arr.Split(':')[1];
var isExist = plist.Where(w => w.Name == name).FirstOrDefault();
if (isExist == null) continue;
//填充列头
if (columnHeader)

if (!dt.Columns.Contains(key))

dt.Columns.Add(key);


Object value = ut.GetProperty(isExist.Name).GetValue(t, null);
dr[key] = value == null ? "" : value.ToString();

dt.Rows.Add(dr);
if (columnHeader)

columnHeader = false;


return dt;
追问

我list里面是object的类型的

参考技术B

你把list转换成datatable,然后用Spire导入,很简单,代码就几行:

//创建一个Excel文档  
Workbook workbook = new Workbook();  
   
//获取第一个工作表  
Worksheet sheet = workbook.Worksheets[0];  
   
//将datatable导入到工作表,数据从工作表的第一行第一列开始写入  
sheet.InsertDataTable(datatable, true, 1, 1);    
      
//保存文档  
workbook.SaveToFile("ImportToExcel.xlsx",ExcelVersion.Version2013);

代码是从这篇文章拷过来的:C# Excel数据导入和导出简单方案

java List<Object[]> 如何数据去重

参考技术A 方法一: 通过Iterator 的remove方法
public void testList()

List<Integer> list=new ArrayList<Integer>();

list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
List<Integer> listTemp= new ArrayList<Integer>();
Iterator<Integer> it=list.iterator();
while(it.hasNext())
int a=it.next();
if(listTemp.contains(a))
it.remove();

else
listTemp.add(a);


for(Integer i:list)
System.out.println(i);



lhkzyz

java List 去重(两种方式)

博客分类:

java

java

方法一: 通过Iterator 的remove方法

Java代码

public void testList()

List<Integer> list=new ArrayList<Integer>();

list.add(1);

list.add(2);

list.add(4);

list.add(1);

list.add(2);

list.add(5);

list.add(1);

List<Integer> listTemp= new ArrayList<Integer>();

Iterator<Integer> it=list.iterator();

while(it.hasNext())

int a=it.next();

if(listTemp.contains(a))

it.remove();



else

listTemp.add(a);





for(Integer i:list)

System.out.println(i);




public void testList()

List<Integer> list=new ArrayList<Integer>();

list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
List<Integer> listTemp= new ArrayList<Integer>();
Iterator<Integer> it=list.iterator();
while(it.hasNext())
int a=it.next();
if(listTemp.contains(a))
it.remove();

else
listTemp.add(a);


for(Integer i:list)
System.out.println(i);



方法二:直接将结果赋值给另一个List
public void testList2()
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
List<Integer> tempList= new ArrayList<Integer>();
for(Integer i:list)
if(!tempList.contains(i))
tempList.add(i);


for(Integer i:tempList)

System.out.println(i);

参考技术B 将list转换为set就搞定了! 参考技术C list应该是有函数判断某个key是否存在,可以看下文档
list.contains(obj);
参考技术D 最土的办法两个for循环 判断就行了

以上是关于c# list<object>的数据怎么导出到excel的主要内容,如果未能解决你的问题,请参考以下文章

C# list<object>和json互转

C#:对键为 List<object> 的字典进行排序

C#如何把List of Object转换成List of T具体类型

C# 将Object类转化为List<T>类,其中T的类型不是object类型。

如何在 C# 中将 List<object> 转换为 Hashtable?

C#如何向listview中的一列添加LIST集合中的OBJECT数据