【发布时间】:2018-11-10 12:54:28
【问题描述】:
我正在处理 libXL 和 Office365 的问题。
我用 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
谢谢
【问题讨论】:
-
不是Excel设置,而是新版Excel相关的libXL库的bug。我有同样的问题,但我没有找到任何解决方法。然而。我盯着赏金....