public void HorizontalSimpleRangeTest() { string[] GetRowData(IXLWorksheet sheet, int idx, int itemCnt, int offset) { var clmNumber = (char)('a' + itemCnt * 2); var row = idx * 3 + offset; return(sheet.Range($"B{row}:{clmNumber}{row}").Cells().Select(x => x.GetString()).ToArray()); } var testData = TestOrder.GetTestData(4).ToArray(); XlTemplateTest("Horizontal_SimpleTemplate.xlsx", tpl => tpl.AddVariable("Orders", testData), wb => { var sheet = wb.Worksheet(1); for (int i = 0; i < testData.Length; i++) { var itemCnt = testData[i].ProductsWithQuantities.Count; sheet.Cell("B" + (i * 3 + 1)).Value.Should().Be(testData[i].OrderNumber); var header = GetRowData(sheet, i, itemCnt, 2); header.Length.Should().Be(itemCnt * 2); for (int j = 0; j < itemCnt; j += 2) { header[j].Should().Be("Name"); header[j + 1].Should().Be("Quantity"); } var data = GetRowData(sheet, i, itemCnt, 3); data.Length.Should().Be(itemCnt * 2); for (int j = 0; j < itemCnt; j++) { data[j * 2].Should().Be(testData[i].ProductsWithQuantities[j].ProductName); data[j * 2 + 1].Should().Be(testData[i].ProductsWithQuantities[j].Quantity.ToString()); } } }); }