gpt4 book ai didi

excel - EPPlus v4 Worksheet.InsertRow >1024 错误

转载 作者:行者123 更新时间:2023-12-04 10:12:06 28 4
gpt4 key购买 nike

发现当使用EPPlus v4(v4.5.3.3)插入> 1024行时,新插入行下的单元格中的公式被破坏,并且原来的一行消失了。

不幸的是,EPPlus v4 git 在 v5 中从 LGPL 迁移到商业许可模型时被归档。

在 NPOI 上试用时,它不能作为一个选项,因为它缺少一些关键功能,如 ShiftColumn/DeleteColumn,并且不能支持 Excel with Table、使用 ConditionalFormatting 的公式以及 MSExcel 添加的向后兼容属性。

任何 EPPlus v4 用户都面临同样的情况并找到了一个好的解决方案?

最佳答案

在得到更好的答案之前,这是我在这种情况下使用的一种解决方法扩展方法:

/// <summary>
/// Providing Extensions to EPPlus/Excel
/// </summary>
public static class EPPlusExcelUtil
{
public const int EPPlusMaxRowInsertPerAction = 1024;

/// <summary>
/// This is a workaround to handle the case inserting > 1024 rows.
/// <remarks>EPPlus v4 issue until v4.5.3.3</remarks>
/// </summary>
/// <param name="ws"></param>
/// <param name="rowFrom">The position of the new row</param>
/// <param name="rows">Number of rows to insert.</param>
/// <param name="copyStylesFromRow">Copy Styles from this row. Applied to all inserted rows</param>
public static void InsertRowEnhanced(this ExcelWorksheet ws, int rowFrom, int rows, int copyStylesFromRow = 0)
{
int batchOf1k = rows / EPPlusMaxRowInsertPerAction;
for (int i = 0; i < batchOf1k; i++)
{
ws.InsertRow(rowFrom, EPPlusMaxRowInsertPerAction, copyStylesFromRow);
}

int rowsToInsertAfter1k = rows % EPPlusMaxRowInsertPerAction;
if (rowsToInsertAfter1k != 0)
{
ws.InsertRow(rowFrom, rowsToInsertAfter1k, copyStylesFromRow);
}
}

}

关于excel - EPPlus v4 Worksheet.InsertRow >1024 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61286512/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com