Пример кода в документации, которую вы используете, либо устарел, либо просто ошибочен.
Если вы хотите группировать строки с 2 по 4, вам необходимо использовать код ws.Rows(3, 4).Group();
(см. Рисунок). Это согласуется с самим Excel, вам нужно выбрать только строки 3 и 4, прежде чем нажимать кнопку группы, чтобы получить тот же результат.
При попытке сгруппировать строки 1 до 3, как в вашем коде вы группировать их всех под ряд 0, что приводит к ошибкам, так как там нет строки 0. Вы можете управлять этим поведением, в некоторой степени с XLOutlineSummaryVLocation
Недвижимость. Если вы используете Bottom
вместо верхней использовать две верхние строки в группе строк 2 до 4: ws.Rows(2, 3).Group();
При всем этом сказал еще две точки:
- Вы должны использовать Excel не номера строк чисел в Ваша колонка «Строка».
- Все эти группировки и свертывания предназначены только для показа. Чтобы суммировать номера продаж, вы должны использовать промежуточные функции в Excel (которые в этом случае я считаю довольно запутанными и бесполезными) или добавлять столбцы и результаты непосредственно на C#.
Используя этот код должен привести к нужному результату (см рисунок ниже):
ws.Outline.SummaryVLocation = XLOutlineSummaryVLocation.Top;
ws.Cell(1, 5).SetValue("Product subtotals");
ws.Cell(1, 6).SetValue("State subtotals");
ws.Rows(3, 4).Group(); // group rows 2 to 4 (state NY), outline level 1
ws.Cell(2, 6).SetFormulaA1("=SUM(D2:D4)"); // subtotal for all NY sales
ws.Row(3).Group(); // group rows 2 and 3 (product A), outline level 2
ws.Cell(2, 5).SetFormulaA1("=SUM(D2:D3)"); // subtotal for all NY, product A sales
ws.Cell(4, 5).SetFormulaA1("=SUM(D4)"); // subtotal for all NY, product B sales
ws.Rows(6, 7).Group(); // group rows 5 to 7 (state CA), outline level 1
ws.Row(6).Group(); // group rows 5 and 6 (product A), outline level 2
ws.CollapseRows(2); // collapse group level 2 (products)