EPPlus:将样式复制到范围

kas*_*ssi 7 c# copy range epplus

我想将x-new行/列插入工作表并应用插入的行/列的样式(backgroundcolor/border等).

这是我添加新行的方式:

xlsSheet.InsertRow(18, RowCount);
Run Code Online (Sandbox Code Playgroud)

然后我想将"base"行的样式复制/应用到新插入的行:

for (int i = 0; i < RowCount; i++)
{
    xlsSheet.Cells[16, 1, 16, xlsSheet.Dimension.End.Column].Copy(xlsSheet.Cells[16 + i + 1, 1]);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码不会复制/应用"基础"行的样式.在这一刻,我有一个互操作的解决方法,但这与epplus相比需要数年时间.: - /

Gle*_*Orr 6

在4.0.4代码中:

if (copyStylesFromRow > 0)
{
    var cseS = new CellsStoreEnumerator<int>(_styles, copyStylesFromRow, 0, copyStylesFromRow, ExcelPackage.MaxColumns); //Fixes issue 15068 , 15090
    while(cseS.Next())
    {
        for (var r = 0; r < rows; r++)
        {
            _styles.SetValue(rowFrom + r, cseS.Column, cseS.Value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它使用copyStylesFromRow值,但由于代码序列,它使用新的行号.所以如果你想从第3行开始插入4行:

workbook.Worksheets[1].InsertRow(3,4,6); 
Run Code Online (Sandbox Code Playgroud)

这将从第3行开始插入4个新行,因为包含第3行,您必须指向第6行.这是一个错误,但你可以解释它.