List转为DataTable并可以导出为Excel
using com.jd120.Core.Utility;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ExcelTest = Microsoft.Office.Interop.Excel; namespace ouylvr.Excel.Test
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public List<Student> lstStudent = new List<Student>();
DataTable dt; public MainWindow()
{
InitializeComponent(); lstStudent.Add(new Student() { name = "Mark", address = "美国", age = 19 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 });
lstStudent.Add(new Student() { name = "Tom", address = "英国", age = 18 }); lstStudent.Sort(delegate(Student x, Student y)
{
return x.ToString().CompareTo(y.ToString());
}); lvBook.ItemsSource = lstStudent;
dt = ListToDataTable.ToDataTable(lstStudent);
dt = Tools.ConvertToDataTable(lstStudent);
} public class ListToDataTable
{
public static DataTable ToDataTable<T>(List<T> items)
{
DataTable dataTable = new DataTable(typeof(T).Name);
PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in Props)
{
dataTable.Columns.Add(prop.Name);
}
foreach (T item in items)
{
var values = new object[Props.Length];
for (int i = 0; i < Props.Length; i++)
{
values[i] = Props[i].GetValue(item, null);
}
dataTable.Rows.Add(values);
}
return dataTable;
}
} public class Student
{
public string name { get; set; }
public string address { get; set; }
public int age { get; set; }
} private void btnDaoChu_Click(object sender, RoutedEventArgs e)
{
try
{
ExcelTest.Application excelApp = new ExcelTest.Application();
excelApp.Workbooks.Add();
ExcelTest._Worksheet workSheet = excelApp.ActiveSheet; int row = 0;
foreach (var column in dt.Columns)
{
workSheet.Cells[1, ((char)('A' + row)).ToString()] = column.ToString();
row++;
} row = 1; for (int x = 0; x < dt.Rows.Count; x++)
{
row++;
for (int y = 0; y < dt.Columns.Count; y++)
{
workSheet.Cells[row, ((char)('A' + y)).ToString()] = dt.Rows[x][y];
}
}
if(!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)))
{
workSheet.SaveAs(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + DateTime.Now.ToString("yyyyMMdd"));
MessageBox.Show("已经保存在桌面上", "导出成功");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
List转为DataTable并可以导出为Excel的更多相关文章
- DataTable 的数据导出到 Excel
如果有个DataTable类型的数据,可以这样导出到Excel中: public static void ExportToExcel(DataTable dt, string fileName) { ...
- DataTable导出到Excel
简单的导出到Excel中: 代码如下: using System; using System.Collections.Generic; using System.Data; using System. ...
- [转].net 使用NPOI或MyXls把DataTable导出到Excel
本文转自:http://www.cnblogs.com/yongfa365/archive/2010/05/10/NPOI-MyXls-DataTable-To-Excel-From-Excel.ht ...
- DataSet数据导出为Excel文档(每个DataTable为一个Sheet)
Web项目中,很多时候须要实现将查询的数据集导出为Excel文档的功能,很多时候不希望在工程中添加对Office组件相关的DLL的引用,甚至有时候受到Office不同版本的影响,导致在不同的服务器上部 ...
- DataTable 导出到 Excel 类
底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...
- NPOI使用Datatable导出到Excel
首先要引用dll 下载地址:http://pan.baidu.com/s/1dFr2m 引入命名空间: using NPOI.HSSF.UserModel;using NPOI.SS.UserMode ...
- .net 打开Excel文档并转为DataTable
/// <summary> /// 打开Excel文档并转为DataTable /// </summary> /// <returns></returns&g ...
- c# DataTable导出为excel
/// <summary> /// 将DataTable导出为Excel文件(.xls) /// </summary> /// <param name="dt& ...
- Asp.NET中把DataTable导出为Excel ,中文有乱码现象解决办法
//DataTable为要导出的数据表 DataGrid dg = new DataGrid(); dg.DataSource = DataTable; ...
随机推荐
- 从零开始安装 Ambari (3) -- 安装 Ambari
1. 安装 yum -y install ambari-server 2. ambari server 需要一个数据库存储元数据,默认使用的 Postgres 数据库.默认的用户名和密码是: amba ...
- cuda编程知识普及
本帖经过多方整理,大多来自各路书籍<GPGPU编程技术><cuda高性能> 1 grid 和 block都可以用三元向量来表示: grid的数组元素是block blo ...
- jmeter+Jenkins性能测试自动化搭建
一.安装java.ant.maven 1.官网下载tar.gz包 2.解压相应的tar包 3.配置/etc/profile路径 4.source /etc/profile 使配置生效. 二.安装Jen ...
- P1082 同余方程
题意:给定a,b,求$ax \equiv 1 \pmod b$的最小正整数解x,保证有解 exgcd:求$ax+by=gcd(a,b)$的 一组解x,y 首先根据正常的gcd可得出 $gcd(a, ...
- EM最大期望算法
[简介] em算法,指的是最大期望算法(Expectation Maximization Algorithm,又译期望最大化算法),是一种迭代算法,在统计学中被用于寻找,依赖于不可观察的隐性变量的概率 ...
- NOIp 2018 货币系统 贪心
题目描述 在网友的国度中共有 nnn 种不同面额的货币,第 iii 种货币的面额为 a[i]a[i]a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 nnn.面额数组为 a[1. ...
- [WebShow系列] 评委打分端现场操作方法
前期准备: 在活动现场,组委会为每一个评委准备了打分相关东西: A.一个移动打分设备(平板电脑,或评委自己手机,或电脑也行); B.(可选)纸质的打分清单和笔.此清单中有打分细则,上场选手清单及打分处 ...
- IDEA总是启动不了
时常怎么都打不开这个软件,或者很久很久才打开. 解决办法:在任务管理器将IDEA结束进程,再去打开软件,就可以了.
- Ubuntu 16.04设置root用户登录图形界面
ubuntu桌面版默认不开启root登录,所以需要进行设置, 可以参考博客 https://www.linuxidc.com/Linux/2017-01/139094.htm
- spring 和 spirngMvc 中 异常处理
spring 中 的 异常处理 使用的是aspectj @Aspect @Component /** * * @author **** * @createData 2017年7月13日 上午8:36: ...