/// <summary> /// 生成工作表的数据列读取器 /// </summary> /// <param name="expression">读取工作表一行数据的表达式</param> /// <returns></returns> public IReadExcelColumnBuilder <T> For(Action <T, IExcelDataRow> expression) { currentColumn = new ReadExcelColumn <T>() { CustomDelegate = expression }; this.columns.Add(currentColumn); return(this); }
/// <summary> /// 生成工作表的数据列读取器 /// </summary> /// <param name="expression">读取单元格数据的表达式</param> /// <param name="name">列标题名称</param> /// <returns></returns> public IReadExcelColumnBuilder <T> For(Action <T, string> expression, string name) { currentColumn = new ReadExcelColumn <T>() { ColumnName = name, CustomEvaluater = expression, }; this.columns.Add(currentColumn); return(this); }
/// <summary> /// 生成工作表的数据列读取器 /// </summary> /// <param name="expression">读取单元格数据的表达式</param> /// <param name="index">按数据列索引读取</param> /// <returns></returns> public IReadExcelColumnBuilder <T> For(Action <T, string> expression, int index) { currentColumn = new ReadExcelColumn <T>() { ColumnIndex = index, CustomEvaluater = expression, }; this.columns.Add(currentColumn); return(this); }
/// <summary> /// 处理一列信息 /// </summary> private ProcessCellDataException ProcessCellData(T item, DataRowWrapper dataWrapper, ReadExcelColumn <T> column) { ProcessCellDataException error = null; if (column.CustomDelegate != null) {//自定义获取信息,优先级最高 error = WrapperException(String.Format("读取第 [{0}] 行信息错误。", dataWrapper.RowIndex + 1), () => column.CustomDelegate(item, dataWrapper)); } else { String data = null; if (!String.IsNullOrEmpty(column.ColumnName)) {//信息列名称获取信息优先级大于信息索引 error = WrapperException(String.Format("读取第 [{0}] 行,[{1}] 列单元格信息错误。", dataWrapper.RowIndex + 1, column.ColumnName), () => data = dataWrapper[column.ColumnName]); if (null == error) {//转换信息 error = WrapperException(String.Format("读取第 [{0}] 行,[{1}] 列单元格信息错误。", dataWrapper.RowIndex + 1, column.ColumnName), () => column.CustomEvaluater(item, data)); } } else { error = WrapperException(String.Format("读取第 [{0}] 行,第 [{1}] 列单元格信息错误。", dataWrapper.RowIndex + 1, column.ColumnIndex + 1), () => data = dataWrapper[column.ColumnIndex]); if (null == error) {//转换信息 error = WrapperException(String.Format("读取第 [{0}] 行,第 [{1}] 列单元格信息错误。", dataWrapper.RowIndex + 1, column.ColumnIndex + 1), () => column.CustomEvaluater(item, data)); } } } return(error); }