c# - EPPlus:将样式复制到一个范围

标签 c# copy range epplus

我想将 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/

相关文章:

c# - 'await' 运算符只能在异步 lambda 表达式中使用 Windows Phone 8

mysql - 将 MySQL 数据从旧数据库复制到新数据库,但新表包含更多列

javascript - 从javascript中的createRange中删除内容

vba - Excel VBA;引用变量范围

mysql - SQL 查询没有结果

c# - 正则表达式 - 用制表符替换多个空格

c# - 在 C# 和 WinForms 中将筛选框添加到 ListView 的列标题

c# - 如何在特定选定项目内的 TFS 源代码管理中搜索特定文件?

c# - 如何在 C# 中复制具有特定日期的文件

Excel VBA 使用 .Cells 定义 .Range