EPPlus 问题与 R1C1 引用公式中的绝对列
EPPlus issue with R1C1-reference to absolute column in formula
我最近从 interop/closedxml 切换到 EPPlus,我注意到 EPPlus 以不同方式处理 R1C1 绝对引用。
考虑以下代码
int colIndex = 5;
string formula = string.Format("MATCH(@""12345"",C{0},0)", colIndex);
int targetCellRow = 1;
int targetCellColumnAbs = 1;
workSheet.Cells[targetCellRow, targetCellColumnAbs].FormulaR1C1 = formula;
对于 EPPlus,这将导致:
=MATCH("12345";Inkoopdelen!R[4]C[2];0)
使用 InterOp 和 ClosedXML
=MATCH("12345";Inkoopdelen!C5;0)
在我的最终结果中,EPPlus 公式不起作用,因为它引用的是单元格而不是列范围。它还引用了错误的列。
单元格 A1 中的引用 R[4]C[2] = A 列右侧的两列 = C 列。
对第 5 列的绝对引用应导致列 E(C[4] 或 C5)。
如何使用 EPPlus 遵守我在公式中输入的绝对范围引用?
原来这是EPPlus的一个缺点,我更改了EPPlus源来解决这个问题:
https://github.com/JanKallman/EPPlus/pull/22
我最近从 interop/closedxml 切换到 EPPlus,我注意到 EPPlus 以不同方式处理 R1C1 绝对引用。
考虑以下代码
int colIndex = 5;
string formula = string.Format("MATCH(@""12345"",C{0},0)", colIndex);
int targetCellRow = 1;
int targetCellColumnAbs = 1;
workSheet.Cells[targetCellRow, targetCellColumnAbs].FormulaR1C1 = formula;
对于 EPPlus,这将导致:
=MATCH("12345";Inkoopdelen!R[4]C[2];0)
使用 InterOp 和 ClosedXML
=MATCH("12345";Inkoopdelen!C5;0)
在我的最终结果中,EPPlus 公式不起作用,因为它引用的是单元格而不是列范围。它还引用了错误的列。
单元格 A1 中的引用 R[4]C[2] = A 列右侧的两列 = C 列。
对第 5 列的绝对引用应导致列 E(C[4] 或 C5)。
如何使用 EPPlus 遵守我在公式中输入的绝对范围引用?
原来这是EPPlus的一个缺点,我更改了EPPlus源来解决这个问题: https://github.com/JanKallman/EPPlus/pull/22