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; ...
随机推荐
- MySql数据库内部常用命令大全
1. 连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1) 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命 ...
- FullCalendar插件的基本使用
我的另一博客地址:https://segmentfault.com/u/lyrfighting/articles 前段时间,一直在开发考勤系统,当时为满足设计的需求,选了好几个插件,最后决定采用Ful ...
- web flash推流录制测试研究
用flash as3写了一段推流测试demo,参考srs_publisher和simplest_as3_rtmp_streamer.推流到srs2服务器,录制为flv文件.测试一轮结果如下: Web ...
- luogu3327 [SDOI2015]约数个数和
link 设\(d(x)\)表示x约数个数,给定n,m,\(\sum_{i=1}^n\sum_{j=1}^md(ij)\) 多组询问,1<=T<=50000,1<=N, M<= ...
- kuangbin专题十六 KMP&&扩展KMP HDU2609 How many (最小字符串表示法)
Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell me How man ...
- shell参数位置
1给脚本文件传参 #!/bin/bash echo "a $1" echo "b $2" 执行传参: $ ../test.sh a b 输出结果: a a b ...
- PANet训练自己的数据(VIA标注)
当前最好的实例分割网络非PANet莫属,可是由于模型太新,网上的资料太少,最近的项目需要 实例分割,只能自己踩踩坑了,目前我还没看到一篇关于PANet训练的博客,只有几篇讲论文的. 环境:ubuntu ...
- Oulipo (KMP出现次数)
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e ...
- day20 模块 collections time sys os
1.模块 1. 模块的定义:我们把装有特定功能的代码进行归类的结果.我们目前写的所有py文件都是模块 2. 引入模块的方式: 1.import 模块名 2.from xxx import 模块名 2. ...
- BigDecimal取整
Java中BigDecimal取整方法 BigDecimal bd = new BigDecimal("12.1"); long l = bd.setScale( 0, BigDe ...