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); } } } }