我想将 x 新行/列插入工作表并应用插入的行/列的样式(背景色/边框等)。
这是我添加新行的方式:
xlsSheet.InsertRow(18, RowCount);
然后我想将“基本”行的样式复制/应用到新插入的行:
for (int i = 0; i < RowCount; i++)
{
xlsSheet.Cells[16, 1, 16, xlsSheet.Dimension.End.Column].Copy(xlsSheet.Cells[16 + i + 1, 1]);
}
但此代码不会复制/应用“基本”行的样式。目前我有一个互操作的解决方法,但与 epplus 相比这需要数年时间。 :-/
最佳答案
在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);
}
}
}
它使用 copyStylesFromRow 值,但由于代码顺序,它使用新的行号。因此,如果您想从第 3 行开始插入 4 行:
workbook.Worksheets[1].InsertRow(3,4,6);
这将从第 3 行开始插入 4 个新行,因为包含第 3 行,您必须指向第 6 行。这是一个错误,但您可以解决它。
关于c# - EPPlus:将样式复制到一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31853046/