Untitled
unknown
plain_text
a year ago
2.9 kB
18
Indexable
using System; using System.Collections.Generic; using System.Linq; 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 ClosedXML.Excel; namespace ImportExcelUsingClosedXML { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //Persons var person = ImportExcel<Product>(Environment.CurrentDirectory + "\\Data\\person.xlsx", "Persons"); //Products //var products = ImportExcel<Product>(Environment.CurrentDirectory + "\\Data\\Products.xlsx", "Products"); } // viet ham va class duoi nay public List<T> ImportExcel<T>(string excelPath, string sheetName) { List<T> list = new List<T>(); Type typeOfObject = typeof(T); using (IXLWorkbook workbook = new XLWorkbook(excelPath)) { var worksheet = workbook.Worksheets.Where(w => w.Name == sheetName).First(); var properties = typeOfObject.GetProperties(); //header colume text var colums = worksheet.FirstRow().Cells().Select((v, i) => new { value = v.Value, Index = i + 1 }); // index trong closedXml bắt đầu bằng 1 chứ ko phải bắt đầu =0 foreach(IXLRow row in worksheet.RowsUsed().Skip(1)) // skip đầu dùng làm header rồi { T obj = (T)Activator.CreateInstance(typeOfObject); foreach (var prop in properties) { int colIndex = colums.SingleOrDefault(c => c.value.ToString() == prop.Name.ToString()).Index; var val = row.Cell(colIndex).Value; var type = prop.PropertyType; prop.SetValue(obj, Convert.ChangeType(val, type)); // dang lỗi chổ này } list.Add(obj); } } return list; } } public class Product { public string Name { get; set; } public decimal price { get; set; } public int Units { get; set; } } public class Person { public string Name { get; set; } public string LastName { get; set; } public string Street { get; set; } public string State { get; set; } public string Zip { get; set; } } }
Editor is loading...
Leave a Comment