29

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

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

无论是否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

谢谢

4

2 回答 2

0

这可能有助于使用
Calculation = xlCalculationAutomatic设置计算

然后在需要时使用 Calculation = xlCalculationManual 进行设置

于 2021-09-19T23:37:55.347 回答
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 是一种更快地实现我的项目目标的方法 :)

于 2018-06-04T10:35:27.030 回答