public static PropertyMapping <float>[] Read(string excelfile, string sheet, int nlayer) { FileStream stream = File.Open(excelfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); excelReader.IsFirstRowAsColumnNames = true; System.Data.DataSet result = excelReader.AsDataSet(); var dt = result.Tables[sheet]; var dtEnum = dt.AsEnumerable(); int num = dt.Rows.Count; PropertyMapping <float>[] maps = new PropertyMapping <float> [nlayer]; for (int l = 0; l < nlayer; l++) { var ids = from r in dtEnum select r.Field <double>("ID" + (l + 1)).ToString(); string[] varnam = new string[5]; var values = new float[num, varnam.Length]; for (int i = 1; i < 6; i++) { varnam[i - 1] = dt.Columns[l * 6 + i].ColumnName; var colvec = from r in dtEnum select float.Parse(r.Field <double>(varnam[i - 1]).ToString()); MatrixExtension <float> .AssignColumn(values, i - 1, colvec.ToArray()); } PropertyMapping <float> map = new PropertyMapping <float>(ids.ToArray(), varnam, values); maps[l] = map; } return(maps); }
public PropertyMapping(string[] ids, string var, T[] values) { mVarNames = new string[] { var }; mVarValues = new T[ids.Length, 1]; MatrixExtension <T> .AssignColumn(mVarValues, 0, values); mIDs = ids; Build(); }