Excel

Делитесь модулями
  • @Sedoy, лучше использовать встроенную или SQL базу.

  • @GhostZ сегодня столкнулся с нежелательным преобразованием строки в число, строка "24.05", была преобразована в 24,05. Оказалось, что в модуле всем ячейкам присваивается числовой формат (cell.style("numberFormat", styles)), зачем?
    Пришлось ноду использовать.

  • @UserTrue, устанавливается "Общий" или "dd\.mm\.yyyy\ hh:mm:ss" если дата, это сделано чтобы ранее установленный формат не влиял на новое значение.

  • @UserTrue Например в ячейке раньше была дата, а при смене схемы таблицы там уже число, если не сменить формат то ексель будет воспринимать указанное число как дату (Так как дата это число с особым форматом), или было число, а ты указываешь текст и т.д

  • @GhostZ Пример кода модуля

    const util = require(\"../ExcelUtil\");
    var [file_path, sheet_index_or_name, data, sync] = [[XLSX_NODE_PARAMETERS]];
    var [data, styles] = data;
    data = util.format_data(data);
    
    var [file, exist] = await util.create_or_open_file(file_path, true, false);
    try{
        var workbook = file.workbook;
        var sheet = util.get_or_create_sheet(workbook, sheet_index_or_name, exist);
        var cell = sheet.cell(\"A1\");
        cell.value(data);
        cell.style(\"numberFormat\", styles);
        sync ? await util.save_file(workbook, file_path) : file.enableSave();
    \tfile.setTimeout();
    }catch(err){
        file.enableSaveError(err);
        file.setTimeout();
        throw err;
    };",```
  • @UserTrue, numberFormat это формат ячейки, например "@" - это текст, а "General"- это общий, подробнее тут.

  • @GhostZ said in Excel:

    @UserTrue, numberFormat это формат ячейки, например "@" - это текст, а "General"- это общий, подробнее тут.

    Ну я как бы знаю его и использовал за долго до появления модуля. И вот в модуле же стоит cell.style("numberFormat", styles); и происходит авто преобразование, как бы сомнительно решение решать за юзера, какой формат нужен

  • @UserTrue, не моё решение, но проблемы не вижу так как если не дата то всегда устанавливается общий формат и из него можно без проблем преобразовать в любой формат действием установки стиля.
    b6962cd4-6048-4525-b0b4-26046f6385d3-image.png

  • @GhostZ said in Excel:

    @UserTrue, не моё решение, но проблемы не вижу так как если не дата то всегда устанавливается общий формат и из него можно без проблем преобразовать в любой формат действием установки стиля.

    Да у меня стоял текстовый стиль в ячейки, а модуль при записи форматирует в число

  • @UserTrue, в будущем добавлю отключение авто преобразования, пока можно указывать значение в виде двумерного массива [ ["24.05"] ], тогда оно не будет преобразовывается.

    70a20613-bff1-4048-af32-fb794f8ddae5-image.png

  • @GhostZ said in Excel:

    [ ["24.05"] ]

    А у меня и был двухмерный массив,
    2021-05-20_025725.png

    Доп:
    А ну да с запись в ячейку работает, а запись на лист нет. У меня был готовый двумерный массив, когда я столкнулся с этим

  • @UserTrue, да в других действиях записи преобразовывает всегда, а какой вообще смысл не прообразовывать такое число?

  • @GhostZ said in Excel:

    @UserTrue, да в других действиях записи преобразовывает всегда, а какой вообще смысл не прообразовывать такое число?

    А это не число, а день и месяц. Ну вот так захотел клиент ))

  • @UserTrue, мда, ясно, ну как доделаю модуль которым сейчас занят сделаю небольшое обновление ексель модуля, а пока можно двумерный массив записывать действием записи ячейки.

  • @GhostZ said in Excel:

    @UserTrue, мда, ясно, ну как доделаю модуль которым сейчас занят сделаю небольшое обновление ексель модуля, а пока можно двумерный массив записывать действием записи ячейки.

    Мне вообще не к спеху, я люблю ноду )) Просто, чтобы знал

  • Будет ли добавлена функция запуска макроса в excel?

  • @fiery said in Excel:

    Будет ли добавлена функция запуска макроса в excel?

    нет ) Модуль не подключается к екселю, а просто читает и редактирует файл.

  • Когда же модуль все таки будет добавлен в BAS? Стоит указывать "в какой версии (номер)" ожидать модуль. Вдруг его забыли добавить, так пользователи смогут напомнить.

  • @Elmore said in Excel:

    Когда же модуль все таки будет добавлен в BAS? Стоит указывать "в какой версии (номер)" ожидать модуль. Вдруг его забыли добавить, так пользователи смогут напомнить.

    Модуль уже давно добавлен в BAS

  • И почему я это понял только после того, как установил отдельный модуль... Невнимательность.