我正在处理libXL和Office365的一个问题。我用Office 365创建了一个Excel文件:一个简单的公式,它显示来自另一个工作表的单元格的内容。然后,我通过libXl在源单元格中写了一些东西。打开输出文件时,在按CTRL+ALT+SHIFT+F9之前不会计算公式。
如果我从Office2013创建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
谢谢
发布于 2018-06-04 10:35:27
在Office 365 Excel中有自动计算吗?查看本文:toc305944076
我在一些vbs中被愚弄了--我为Excel创建了脚本,某些Office 365安装的默认计算被关闭。
检查公式化的->计算,检查那里的工作簿上是否所有东西都是自动的。
编辑:请注意,我没有使用LibXL的经验,但在Excel的vbs中有很多经验。我还编写了c++程序,但我发现vbs是实现项目目标的一种更快的方法:)
发布于 2021-09-19 23:37:55
这可能有助于将计算设置为
计算= xlCalculationAutomatic
然后在需要时使用计算= xlCalculationManual出发
https://stackoverflow.com/questions/50625502
复制相似问题