我正在处理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 …Run Code Online (Sandbox Code Playgroud)