コード例 #1
0
        private static void renderHeader(ExcelWorksheet worksheet, ExcelHeader excelHeader, int maxHeaderLevel, int rowHeader1, ref int nCol)
        {
            if (excelHeader.Width != null)
            {
                worksheet.Column(nCol).Width = excelHeader.Width.Value;
            }
            ExcelRange excelRange = null;
            var        colSpanSub = excelHeader.ColSpan(excelHeader);

            //var rowSpanSub = maxHeaderLevel - excelHeaders.Level;
            if (colSpanSub == 1)
            {
                var toRow = rowHeader1 + maxHeaderLevel - excelHeader.Level - 1;
                worksheet.Cells[rowHeader1, nCol, toRow, nCol].Value = excelHeader.Name;
                excelRange       = worksheet.Cells[rowHeader1, nCol, toRow, nCol];
                excelRange.Merge = true;
                nCol++;
            }
            else
            {
                var rowNext  = rowHeader1 + 1;
                var nColNext = nCol + colSpanSub - 1;
                worksheet.Cells[excelHeader.Level + rowHeader1, nCol, excelHeader.Level + rowHeader1, nColNext].Value = excelHeader.Name;
                excelRange       = worksheet.Cells[excelHeader.Level + rowHeader1, nCol, excelHeader.Level + rowHeader1, nColNext];
                excelRange.Merge = true;
                //nCol = nColNext;
                foreach (var group in excelHeader.SubExcelHeaders)
                {
                    renderHeader(worksheet, group, maxHeaderLevel, rowNext, ref nCol);
                }
                // nCol++;
            }
            formatExcelRange(excelRange);
        }