Пару месяцев нвзад была очень похожая задача - один в один
без подвалов, но с разрывами страниц.
С первой по третью строку шапка, 4 и 5 - строка
Итоговый вид
так я множу шапку:
X++:
public boolean pasteRepHeader(OfficeOpenXml.ExcelWorksheet _ExcelWorksheet, int _row)
{
#define.RepHeader('RepHeader')
#define.tmp('tmp')
OfficeOpenXml.ExcelWorksheet fromExcelWorksheet;
OfficeOpenXml.ExcelRange fromExcelRange;
OfficeOpenXml.ExcelRange toExcelRange;
boolean ret = true;
fromExcelWorksheet = excelEPPLus.getWorksheet(#tmp);
fromExcelRange = fromExcelWorksheet.get_Cells();
toExcelRange = _ExcelWorksheet.get_Cells();
fromExcelRange = fromExcelRange.get_Item(1,1,3,11);
toExcelRange = toExcelRange.get_Item(_row,1,_row+3,11);
fromExcelRange.Copy(toExcelRange);
return ret;
}
и по похожему принципу строки
X++:
public boolean pasteRepLine(OfficeOpenXml.ExcelWorksheet _ExcelWorksheet, int _row)
{
#define.tmp('tmp')
OfficeOpenXml.ExcelWorksheet fromExcelWorksheet;
OfficeOpenXml.ExcelRange fromExcelRange;
OfficeOpenXml.ExcelRange toExcelRange;
boolean ret = true;
fromExcelWorksheet = excelEPPLus.getWorksheet(#tmp);
fromExcelRange = fromExcelWorksheet.get_Cells();
toExcelRange = _ExcelWorksheet.get_Cells();
fromExcelRange = fromExcelRange.get_Item(4,1,5,11);
toExcelRange = toExcelRange.get_Item(_row,1,_row+1,11);
fromExcelRange.Copy(toExcelRange);
return ret;
}
разрыв страниц:
X++:
...
excelColumn = ExcelWorksheet.Column(_col);
excelColumn.set_PageBreak(true);
...
короче - я от EPPlus просто балдю