LibXL: Excel-таблицы не обновлены - PullRequest
0 голосов
/ 31 мая 2018

У меня проблема с libXL и Office365.Я создал файл Excel с Office 365: простая формула, которая показывает содержимое ячейки с другого листа.Затем я приступил к записи чего-либо в эту исходную ячейку через libXl.Когда я открываю выходной файл, формула не рассчитывается до тех пор, пока я не нажму CTRL + ALT + SHIFT + F9.

Если я создаю файл xlsx из Office 2013, то формула корректно обновляется.

Не удалось найти на их веб-сайте информацию о том, поддерживается ли 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 голосов
/ 04 июня 2018

У вас есть автоматический расчет в Office 365 Excel?Проверьте эту статью: https://support.office.com/en-ie/article/change-formula-recalculation-iteration-or-precision-f38c7793-0367-41ce-b892-dfe54946bd76#__toc305944076

Я был одурачен в некотором VBS-скрипте, который я создал для Excel, с вычислением по умолчанию для некоторых установок Office 365. По умолчанию

Изучение формул -> Вычислите и проверьте, все ли в рабочей книге там автоматически.

Редактировать: Обратите внимание, что у меня нулевой опыт работы с LibXL, но много в vbs для Excel.Я также программирую на С ++, но считаю, что VBS - более быстрый способ достичь цели для моих проектов:)

...