使用 ClosedXML 在动态列中添加行的总和

问题描述

有没有办法把可能的行(单元格)的数量是动态的,即行数不固定的给​​定列的单元格(行)的内容相加(求和),在excel工作表中?我一直在尝试但没有任何有意义的结果,我想计算名为“Total Inc Vat”的最后一列的总计,它是如此动态;这是我的代码片段。

            var workbook = new XLWorkbook();
            var worksheet =  workbook.Worksheets.Add("data");

            string filename = "Data from" + " "+ reportParams.StartDate.ToString("dd-MM-yyyy") + " to "+ reportParams.EndDate.ToString("dd-MM-yyyy");

            worksheet.Cell(1,1).Value = filename;
            // column header 
            worksheet.Range(1,1,8).Merge().AddToNamed("data");
            // column names  range to be formatted 
            worksheet.Range(3,3,8).AddToNamed("data");
            // format Total Inc Vat column to currency
            worksheet.Column(8).Style.NumberFormat.Format= "0.00";
            
            // column names 
            worksheet.Cell(3,1).Value = "Document Date";
            worksheet.Cell(3,2).Value = "Document Number";
            worksheet.Cell(3,3).Value = "Description";
            worksheet.Cell(3,4).Value = "Project Code";
            worksheet.Cell(3,5).Value = "Project Name";
            worksheet.Cell(3,6).Value = "Client Name";
            worksheet.Cell(3,7).Value = "Client Account";
            worksheet.Cell(3,8).Value = "Total Inc Vat";
            
            //
            var titlesstyle = workbook.Style;
            titlesstyle.Font.Bold = true;
            titlesstyle.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
            titlesstyle.Fill.BackgroundColor = XLColor.Cyan;
            
            // format all titles in one shot
            workbook.NamedRanges.NamedRange("data").Ranges.Style = titlesstyle;

           
            worksheet.Cell(4,1).SetValue(results);
            worksheet.Columns().AdjustToContents();

解决方法

这是所有需要添加的。 Cell() 中的 4 是单元格行,results.Count() 是该单元格中生成的所有内容。

// calculate average of Total Inc Vat
worksheet.Cell(4 + results.Count(),8).FormulaA1 = @$"=SUM(H4:H{3 + results.Count()})";