LibXL:excel跨表公式未更新

yqkkidmi  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(194)

我正在处理libXL和 * Office 365 * 的问题。我使用 Office 365 创建了一个Excel文件:一个简单的公式,它显示了另一个工作表中某个单元格的内容。然后我继续通过libXl在该源单元格中写入一些内容。当我打开输出文件时,直到我按下CTRL+ALT+SHIFT+F9才计算公式。
如果我从 Office 2013 创建xlsx文件,则公式将正确更新。
在他们的网站上找不到任何东西,不管O365是否受支持。
下面的代码重现了这个问题(如果需要,我可以提供两个输入xlsx文件):

#include "stdafx.h"
#include "libxl.h"

using namespace libxl;

int main()
{   
    Book* book = xlCreateXMLBook();

    // xlsx file created by Office 2013
    if (book->load(L"office2013.xlsx"))
    {
        Sheet* sheet = book->getSheet(0);
        if (sheet)
            sheet->writeNum(2, 2, 42);

        book->save(L"okay.xlsx"); // works correctly when opened
    }

    // xlsx file created by O365
    if (book->load(L"office365.xlsx"))
    {
        Sheet* sheet = book->getSheet(0);
        if (sheet)
            sheet->writeNum(2, 2, 42);

        book->save(L"bugged.xlsx"); // must press CTRL+ALT+SHIFT+F9 to see '42' in the second sheet
    }
    
    book->release();
    
    return 0;
}

这是源工作表(上面代码编写的第42个工作表):https://i.stack.imgur.com/hp7Ti.png
以下公式无效(用Excel编写):https://i.stack.imgur.com/BhGW2.png
谢谢

e5nqia27

e5nqia271#

您是否在Office 365 Excel中启用了自动计算?请查看这篇文章:https://support.office.com/en-ie/article/change-formula-recalculation-iteration-or-precision-f38c7793-0367-41ce-b892-dfe54946bd76#__toc305944076
我被我为Excel创建的一些vbs脚本愚弄了,在一些Office 365安装中,计算被默认关闭。
检查公式-〉计算,并检查是否一切都是自动的工作簿有。
编辑:请注意,我对LibXL没有任何经验,但对Excel的vbs有很多经验。我也编写c++,但我发现vbs是实现项目目标的更快方法:)

pw136qt2

pw136qt22#

这可能有助于计算
计算= xl计算自动
然后在需要时使用Calculation = xlCalculationManual设置

相关问题