Измерение времени загрузки Excel

Я ищу решение более одной недели. Возможно, у вас есть хорошее решение этой проблемы:

Я хочу измерить время, которое мне нужно, чтобы открыть файл Excel с помощью Excel. Мое первое решение состоит в том, что я начинаю измерение с этой строки кода:

ProcessBuilder command = new ProcessBuilder("cmd", "/c", <EXCEL_PATH>, <FILE-LOCATION>); command.start(); long start = System.currentTimeMillis(); 

И я проверю RAM-Usage через проводник процесса. Если обработка конечных результатов в режиме excel по-прежнему остается неизменной, я останавливаю измерение. Как вы видите, это очень нечеткое и не очень хорошее решение.

В качестве второго решения я открываю SocketServer в JAVA и жду, пока Excel не вызовет метод Workbook_Open () после завершения загрузки файла. В рамках этого метода я отправляю сокет-соединение с java-сервером (я предоставляю хост и порт как параметр excel) и измеряю это время.

Это очень эффективно, но в моей компании не разрешено автоматически запускать скрипты, если они не хранятся в доверенной зоне. Я не могу изменить политику, так что это не решение. Кто-нибудь знает, как измерить время загрузки Excel-файла в Excel? Не может быть, что их нет решения отслеживать время загрузки в Excel?

Обновленный ответ:

Вы можете использовать DDE для повторного подключения (начать разговор) к нужному файлу и измерить время, которое пройдет до тех пор, пока вы не добьетесь успеха.

Обратите внимание, что это будет далеко не точное измерение и должно использоваться в основном для оценки.

Взгляните на этот проект, основанный на этом , на примере использования DDE вместе с Java и MS Excel.

Детали:

Вы не можете подключиться к файлу Excel с помощью DDE до того, как его загрузка завершится в программе Excel, и это может служить цели.
Сразу после запуска Excel вы можете попытаться подключиться к файлу с помощью DDE (повторно или с задержкой 100 мс для предотвращения загрузки процессора) до тех пор, пока вы не добьетесь успеха, и вычислите время после успеха.

Псевдокод:

 ts = now(); d = DDE("file.xlsx"); while (d.error) { d = DDE("file.xlsx"); } load_time = now() - ts; 

Старая версия ответа: если вы уже используете VBA книги, я думаю, что есть простое решение.

Вы можете записать текущее время в какой-либо новый временный локальный файл, прямо перед открытием файла, а затем записать текущее время ( Now ) из подпрограммы Workbook_Open в тот же временный файл во второй строке.

Затем вы сможете отслеживать файл до тех пор, пока он не будет иметь 2 строки с постоянным интервалом и рассчитайте разницу между отметками времени.

  • Разделение ячейки на строки в Excel - Apache POI JAVA
  • csv до xls с более чем 65536 строк в java
  • Как написать список объектов значений непосредственно в файл Excel без повторения каждого столбца?
  • пишите каждый элемент (пара значений ключа) hashmap на разные листы excel в той же книге, используя apache POI
  • Установка типа ячейки Ошибка
  • Как конвертировать Excel в XML?
  • Изучение POI Apache для Java
  • API для создания огромных файлов excel с использованием java
  • Apache POI - развернуть все / свернуть все
  • React excel скачать файл коррумпирован
  • Проверьте, существует ли элемент одного списка в другом списке
  • Interesting Posts

    Ошибка при записи в файл xls – многопоточность apache poi

    Макрос Excel для конкатенации

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

    Отображать значения от 0 до 1 как «<1» в таблицах сводных таблиц Excel

    Экспорт кросс-таблицы с помощью XSLT / XML в Excel

    Excel VBA – преобразовать строку в диапазон

    Пытаетесь использовать третий критерий для автофильтра, получив ошибку компиляции?

    Как запустить excel с использованием всех надстроек по умолчанию из Python win32com

    Excel VBA – поиск наивысших и последующих значений в диапазоне

    Где кнопка отладки в ошибке Excel VBA

    Определенный пользователем тип VBA не определен (только иногда)

    Microsoft ODBC для Oracle отсутствует

    Более быстрый способ скрыть пустые строки

    VBA: почему я получаю «Shapes (неизвестный член): недопустимый запрос» при копировании таблицы в точку питания

    Формула Excel: подсчитать ячейки, где значение – дата

    Давайте будем гением компьютера.