1. 讀取合並單元格的值
如果是合並單元格讀取的就是合並單元格的值,如果該單元格是普通單元格則直接取的就是單元格的值
private string GetMegerValue(ExcelWorksheet sheet, int row, int column) { var range = sheet.MergedCells[row, column]; if (range == null) { if (sheet.Cells[row, column]?.Value != null) { return sheet.Cells[row, column].Value.ToString().Trim(); } else { return ""; } } Object value = sheet.Cells[(new ExcelAddress(range)).Start.Row, (new ExcelAddress(range)).Start.Column].Value; return value != null ? value.ToString().Trim() : ""; }
2. 寫入合並單元格的值
/// <summary> /// 合並單元格 /// </summary> /// <param name="sheet">合並單元格所在的sheet</param> /// <param name="rowStart">開始行的索引</param> /// <param name="rowEnd">結束行的索引</param> /// <param name="colStart">開始列的索引</param> /// <param name="colEnd">結束列的索引</param> private void SetCellRangeAddress(ISheet sheet, int rowStart, int rowEnd, int colStart, int colEnd) { for (var r = rowStart; r <= rowEnd; r++) { for (var c = colStart; c < colEnd; c++) { if (sheet.GetRow(r) == null) { sheet.CreateRow(r); //如果行不存在,則創建行 } if (sheet.GetRow(r).GetCell(c) == null) { sheet.GetRow(r).CreateCell(c); //如果列不存在,則創建列 } } } CellRangeAddress cellRangeAddress = new CellRangeAddress(rowStart, rowEnd, colStart, colEnd); sheet.AddMergedRegion(cellRangeAddress); }