Excel 除非编辑,否则不显示公式

Excel does not display formulas unless editing

我在 Apache poi 中创建了一个通用 excel,其中包括公式、价格值等。 这是预期的 excel(1428,78 241 等列是价格格式),即 "\" + "\u20BA" + "#,##0.00"

当我从主机下载 excel 时(没有域)excel 显示为

在我按下启用编辑后,它们就会显示。我的问题是,为什么我不能在预览中显示我的公式 mod? 而且我也看不到 phone 生成的 excel
工作簿有什么设置吗?
没有 ssl 或没有域的托管是否由于安全问题导致问题?

Excel 不会在保护模式下计算公式单元格。公式会消耗客户端设备上的大量计算能力,并且还可能会尝试导入外部数据,从而带来潜在的安全风险。

相反,在保护模式下 Excel 将显示缓存值(如果已经计算),否则显示默认值,0.00 在您的情况下。

以这个公式为例,C1 = A1 + B1.

假设您使用的是 .xlsx 格式,工作表数据在内部存储的结构如下:

...
<!-- worksheet.xlsx!xl/worksheets/sheet1.xml -->
<sheetData>
    <row r="1">
        <c r="A1" t="n">
            <v>1.0</v>
        </c>
        <c r="B1" t="n">
            <v>2.0</v>
        </c>
        <c r="C1" t="n">
            <f>A1 + B1</f>
            <v>3.0</v>  <!-- This is the cached formula result -->
        </c>
    </row>
</sheetData>
...

在此示例中,<v>3.0</v> 是缓存的公式单元格值。

您可以使用 POI XSSFFormulaEvaluator 计算公式单元格并保存缓存值,以便它在 Excel 保护模式下可用。

// evaluate all formulas in the workbook
XSSFFormulaEvaluator evaluator = new XSSFFormulaEvaluator(workbook);
evaluator.evaluateAll();

一些补充说明:

  1. evaluateAll() 只需执行一次即可保存工作簿。有关详细信息,请参阅 https://poi.apache.org/components/spreadsheet/eval.html#recalculation
  2. POI 能够评估大多数,但不是所有 Excel 公式。