LibXL:excel交叉表公式未更新

时间:2018-05-31 13:28:53

标签: c++ excel office365 libxl

我正在处理libXL和Office365的问题。 我使用Office 365创建了一个Excel文件:一个简单的公式,显示来自另一个工作表的单元格的内容。然后我继续通过libXl在该源单元格中写入内容。当我打开输出文件时,直到我按CTRL + ALT + SHIFT + F9才会计算公式。

如果我从Office 2013创建xlsx文件,则公式已正确更新。

Couldn'在他们的网站上找到任何支持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

谢谢

1 个答案:

答案 0 :(得分:0)

您是否在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是一种更快的方式来实现我的项目目标:)