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 of Object转换成List of T具体类型
C# 将Object类转化为List<T>类,其中T的类型不是object类型。