使用 OpenXML,我的 VLOOKUP 公式不起作用,直到用户手动编辑单元格
本文关键字:用户 编辑 单元格 不起作用 我的 OpenXML VLOOKUP 使用 | 更新日期: 2023-09-27 18:32:55
我尝试创建的事件序列是这样的:
- 我的 OpenXML 应用程序会生成一个新的 Excel 文件,并用数据库中的数据填充该文件。
- 用户打开文件并转到订单表。
- 用户从"客户"下拉列表中进行选择。
- 在"产品"表上,有一个 VLOOKUP,它检查"客户"下拉列表,并根据所选客户名称显示可选的特殊产品。
- 返回"订单"表,"产品"下拉列表显示自定义的产品列表。
我插入的公式:
string theFormula = "IFERROR( IF(VLOOKUP(CustomerNameRange, CustomerTable, 8, FALSE) = 0,'"'", VLOOKUP(CustomerNameRange, CustomerTable, 8, FALSE)),'"'")";
我用来插入的代码:
Row r = new Row();
r.RowIndex = (UInt32)index;
Cell c = new Cell();
c.CellReference = index;
c.DataType = new EnumValue<CellValues>(CellValues.String);
c.CellFormula = new CellFormula(theFormula);
c.CellFormula.CalculateCell = true;
r.AppendChild(c);
我用来强制工作表重新计算的代码:
CalculationProperties prop1 = workbookPart1.Workbook.GetFirstChild<CalculationProperties>();
prop1.ForceFullCalculation = true;
prop1.FullCalculationOnLoad = true;
prop1.CalculationMode = CalculateModeValues.Auto;
prop1.CalculationCompleted = false;
但是,这些额外的重新计算代码似乎都不起作用。 特殊产品 VLOOKUP 不会成功重新计算,直到用户手动编辑该单元格。 如何强制Excel像正常一样处理插入的公式单元格?
我知道OpenXML没有也不打算做重新计算(它是一个文档编辑器,而不是一个成熟的电子表格引擎(。
解决方法不是以编程方式输入公式,而是将公式永久放在工作表上。