如何在 table 以下创建公式 (SUBTOTAL)
How to create a formula (SUBTOTAL) below table
我使用 EPPLus 创建了一个 excel 文件,里面有一个 table。使用以下方法创建 excel 文件和 table 就像一个魅力:
worksheet.Cells["A1"].LoadFromCollection(rows, true, TableStyles.Light12);
...但是当我尝试在 table 之后的第一个空行中插入公式时,文件损坏并且无法正常打开。 Excel 虽然可以恢复,但是我添加的公式永远不会显示。
我使用这行代码创建公式:
worksheet.Cells["E"+(rows.Count+2).ToString()].Formula = "=SUBTOTAL(109;[TurnoverCurrent])";
我已经确认我定位的是正确的单元格,如果我只插入一个字符串而不是公式,它就可以工作。因此,我的感觉是我没有正确使用公式方法。我怎样才能在 table 之后获得小计公式?
改变
worksheet.Cells["E" + (rows.Count+2).ToString()].Formula = "=SUBTOTAL(109;[TurnoverCurrent])";
至
worksheet.Cells["E" + (rows.Count+2).ToString()].Formula = "SUBTOTAL(109;[TurnoverCurrent])";
千万不要使用“=”
我突然想到三件事,我不确定 either/or 是否会解决它,但我想提供。
1) 您的 subtotal
公式就在 table 旁边——当 Excel 呈现 XML 时,它是否试图将其添加到 table 并且因为它是自我引用而吓坏了?换句话说,小计公式现在是 table 的一部分并添加自身?
2) 当我使用小计时,我使用逗号,而不是分号
3) 您没有在公式中引用 table 名称。由于这是一个全新的sheet,因此可以安全地尝试Table1
。如果你真的想花哨,你可以查找 table 并找到它的名字。我不会。
所以也许可以添加一行,在 table 名称前加上分号并将分号更改为逗号?
worksheet.Cells[rows.Count + 3, 5].Formula = "=SUBTOTAL(109,Table1[TurnoverCurrent])";
我使用 EPPLus 创建了一个 excel 文件,里面有一个 table。使用以下方法创建 excel 文件和 table 就像一个魅力:
worksheet.Cells["A1"].LoadFromCollection(rows, true, TableStyles.Light12);
...但是当我尝试在 table 之后的第一个空行中插入公式时,文件损坏并且无法正常打开。 Excel 虽然可以恢复,但是我添加的公式永远不会显示。
我使用这行代码创建公式:
worksheet.Cells["E"+(rows.Count+2).ToString()].Formula = "=SUBTOTAL(109;[TurnoverCurrent])";
我已经确认我定位的是正确的单元格,如果我只插入一个字符串而不是公式,它就可以工作。因此,我的感觉是我没有正确使用公式方法。我怎样才能在 table 之后获得小计公式?
改变
worksheet.Cells["E" + (rows.Count+2).ToString()].Formula = "=SUBTOTAL(109;[TurnoverCurrent])";
至
worksheet.Cells["E" + (rows.Count+2).ToString()].Formula = "SUBTOTAL(109;[TurnoverCurrent])";
千万不要使用“=”
我突然想到三件事,我不确定 either/or 是否会解决它,但我想提供。
1) 您的 subtotal
公式就在 table 旁边——当 Excel 呈现 XML 时,它是否试图将其添加到 table 并且因为它是自我引用而吓坏了?换句话说,小计公式现在是 table 的一部分并添加自身?
2) 当我使用小计时,我使用逗号,而不是分号
3) 您没有在公式中引用 table 名称。由于这是一个全新的sheet,因此可以安全地尝试Table1
。如果你真的想花哨,你可以查找 table 并找到它的名字。我不会。
所以也许可以添加一行,在 table 名称前加上分号并将分号更改为逗号?
worksheet.Cells[rows.Count + 3, 5].Formula = "=SUBTOTAL(109,Table1[TurnoverCurrent])";