使用 OpenXML,我的 VLOOKUP 公式不起作用,直到用户手动编辑单元格

本文关键字:用户 编辑 单元格 不起作用 我的 OpenXML VLOOKUP 使用 | 更新日期: 2023-09-27 18:32:55

我尝试创建的事件序列是这样的:

  1. 我的 OpenXML 应用程序会生成一个新的 Excel 文件,并用数据库中的数据填充该文件。
  2. 用户打开文件并转到订单表。
  3. 用户从"客户"下拉列表中进行选择。
  4. 在"产品"表上,有一个 VLOOKUP,它检查"客户"下拉列表,并根据所选客户名称显示可选的特殊产品。
  5. 返回"订单"表,"产品"下拉列表显示自定义的产品列表。

我插入的公式:

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没有也不打算做重新计算(它是一个文档编辑器,而不是一个成熟的电子表格引擎(。

使用 OpenXML,我的 VLOOKUP 公式不起作用,直到用户手动编辑单元格

解决方法不是以编程方式输入公式,而是将公式永久放在工作表上。