数据绑定返回空值

所以我试图读取一个Excel文件,并将数据插入到类属性。 我认为这是一个问题,当我instanitae类,但是我做这件事之前,我parsing并添加到类的值。

一旦parsing完成 – 我调用绑定的类,但它返回空值。

电话

TestData td = new TestData(); XLReader.GetClassFromExcel<TestData>(1,1,1); var ddddd = td.Title; //this is null. 

class上

  public class TestData { public string Title { get; set; } public string Site { get; set; } public string StartDate { get; set; } public string EndDate { get; set; } public string Email { get; set; } public string OrderRef { get; set; } public string ReqBy { get; set; } public string ApprovedBy { get; set; } } 

Excel的parsing

 public static class XLReader { /// <summary> /// The deployment files folder name /// </summary> private static readonly string deploymentFilesFolderName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); public static List<T> GetClassFromExcel<T>(int fromRow, int fromColumn, int toColumn = 0) { var path = Path.Combine(deploymentFilesFolderName, @"Tools\TestData.xlsx"); List<T> retList = new List<T>(); using (var pck = new ExcelPackage()) { using (var stream = File.OpenRead(path)) { pck.Load(stream); } //Retrieve first Worksheet var ws = pck.Workbook.Worksheets.First(); //If the to column is empty or 0, then make the tocolumn to the count of the properties //Of the class object inserted toColumn = toColumn == 0 ? typeof(T).GetProperties().Count() : toColumn; //Read the first Row for the column names and place into a list so that //it can be used as reference to properties List<string> columnNames = new List<string>(); // wsRow = ws.Row(0); foreach (var cell in ws.Cells[1, 1, 1, ws.Cells.Count()]) { columnNames.Add(cell.Value.ToString()); } //Loop through the rows of the excel sheet for (var rowNum = fromRow; rowNum <= ws.Dimension.End.Row; rowNum++) { //create a instance of T T objT = Activator.CreateInstance<T>(); //Retrieve the type of T Type myType = typeof(T); //Get all the properties associated with T PropertyInfo[] myProp = myType.GetProperties(); var wsRow = ws.Cells[rowNum, fromColumn, rowNum, ws.Cells.Count()]; foreach (var propertyInfo in myProp) { if (columnNames.Contains(propertyInfo.Name)) { int position = columnNames.IndexOf(propertyInfo.Name); //To prevent an exception cast the value to the type of the property. var blah = Convert.ChangeType(wsRow[rowNum, position + 1].Value, propertyInfo.PropertyType); propertyInfo.SetValue(objT,blah); } } retList.Add(objT); } } return retList; } } 

当我导入Excel数据时,我总是创build一个string数组来存储这个代码的值

 package.Load(fileContent.InputStream); ExcelWorksheet workSheet = package.Workbook.Worksheets[1]; int totalRows = workSheet.Dimension.End.Row; int totalCols = workSheet.Dimension.End.Column; List<myObject> listMyObject = new List<myObject>(); for (int currentRow = 1; currentRow <= totalRows; currentRow++) { string[] resultRow = new string[totalCols]; for (int currentCol = 1; currentCol <= totalCols; currentCol++) { //We read the entire line and store it in the array resultRow[currentCol - 1] = (workSheet.Cells[currentRow, currentCol].Value != null) ? workSheet.Cells[currentRow, currentCol].Value.ToString() : ""; } //And now I can bind my array to my object listMyObject.Add(myObjectHelper.Convert(resultRow)); } //Here i've got my list object 

我的数组将包含最坏的一个空string。 在这种情况下,我知道我的Excel文件中没有填充任何内容。

而且我将我的string数组转换为我的对象