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



是否有任何方法可以将excel工作表中可能的行数(单元格(是动态的,即行数不是固定的,给定列的单元格(行(的内容相加(求和(?我一直在尝试,但没有任何有意义的结果,我想计算名为"最后一列的总和"的列;道达尔公司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, 1, 8).Merge().AddToNamed("data");
// column names  range to be formatted 
worksheet.Range(3, 1, 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()})"; 

最新更新