/// <summary> /// 从某个单元格中复制值 /// </summary> /// <param name="row"></param> /// <param name="cellName"></param> /// <param name="sourceRow"></param> /// <param name="sourceCellName"></param> public static void ValueCopy(this IRow row, string cellName, IRow sourceRow, string sourceCellName) { // 注意:1、只支持基于数字的公式 2、公式计算出数字值 3、空白当做数字读取 var sourceCell = sourceRow.GetCellByName(sourceCellName); var targetCell = row.GetCellByName(cellName); switch (sourceCell.CellType) { case CellType.Numeric: targetCell.SetCellValue(sourceCell.NumericCellValue); break; case CellType.String: targetCell.SetCellValue(sourceCell.StringCellValue); break; case CellType.Formula: targetCell.SetCellValue(sourceCell.NumericCellValue); break; case CellType.Blank: targetCell.SetCellValue(sourceCell.NumericCellValue); break; default: throw new NotSupportedException(String.Format("{0}{1} 不是数字、字符串或基于数字的公式", sourceCellName, sourceRow.RowNum + 1)); } }
/// <summary> /// 从某个单元格中复制字符串 /// </summary> /// <param name="row"></param> /// <param name="cellName"></param> /// <param name="sourceRow"></param> /// <param name="sourceCellName"></param> public static void StringValueCopy(this IRow row, string cellName, IRow sourceRow, string sourceCellName) { var stringValue = sourceRow.GetCellByName(sourceCellName).StringCellValue; row.GetCellByName(cellName).SetCellValue(stringValue); }
/// <summary> /// 从某个单元格中复制数字 /// </summary> /// <param name="row"></param> /// <param name="cellName"></param> /// <param name="sourceRow"></param> /// <param name="sourceCellName"></param> public static void NumericValueCopy(this IRow row, string cellName, IRow sourceRow, string sourceCellName) { var numericValue = sourceRow.GetCellByName(sourceCellName).NumericCellValue; row.GetCellByName(cellName).SetCellValue(numericValue); }