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; ...
随机推荐
- Django之后台管理二
前面讲到admin界面用户的注册以及修改,如果我们注册的用户密码忘记了该怎么办呢 在终端输入如下的命令进行重置 D:\django_test2>python manage.py shell Py ...
- python3中模块初识
python的模块使用方法 1.用于显示python的环境变量 import sys print(sys.path) 运行路径执行结果如下: ['F:\\codes', 'F:\\codes', 'C ...
- completer自动完成
由于项目需要,在输入框中要做一些输入限制的同时,更加要求用户体验,提供一些自动完成设置.所以有需求,总会有解决方式,下面说一下自动完成插件的原理: html的body部分: <span styl ...
- JS字符串替换(jQuery)
①自己封装的一个方法String.format String.format = function() { var s = arguments[0]; for (var i = 0; i < ar ...
- 老男孩Day6作业:计算器
作业需求: 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) ...
- P1979 华容道
题意:$n*m$棋盘上$n*m-1$颗棋子,有且只有一个格子为空白格子,每个棋子大小$1*1$ 有些棋子可以移动,而有些棋子固定,任何与空白的格子相邻(有公共的边)的格子上的棋子都可以移动到空白格子上 ...
- Canvas 与 Image 相互转换
转换 Image为 Canvas 要把图片转换为Canvas(画板,画布),可以使用canvas元素 context 的drawImage方法: 代码如下: // 把image 转换为 canvas对 ...
- CF581C Developing Skills 模拟
Petya loves computer games. Finally a game that he's been waiting for so long came out! The main cha ...
- kuangbin专题十六 KMP&&扩展KMP HDU3336 Count the string
It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...
- tomcat使用不同的jdk版本 liunx 装两个jdk
原作者文章 https://blog.csdn.net/qq_34626097/article/details/83385219 看了原作者学会的!上面链接 因为公司的服务器里面是jdk1.7和tom ...