saveWorkbook Время выполнения - PullRequest
0 голосов
/ 16 апреля 2019

Извините, если на этот вопрос уже ответили, но я не смог найти.

Я использую пакет XLConnect для добавления новых записей в электронную таблицу, но время выполнения saveWorkbook увеличивается и откладываетсявсе другие задачи, которые зависят от обновленной электронной таблицы.

Рабочий процесс следующий:

  1. Запрос базы данных SQL для новых записей (загрузка результата с использованием read.table);
  2. Загрузка устаревшей электронной таблицы и сохранение каждого листа в качестве записи списка;
  3. Добавление записей в соответствующие листы / элемент списка;
  4. Цветные линии с использованием setCellStyel,в соответствии с рядом параметров (пример приведен ниже);
  5. saveWorkbook
cs_completo=getOrCreateCellStyle(wb, name = "Cs_Completo")
  setFillPattern(cs_completo, fill = XLC$FILL.SOLID_FOREGROUND)
  setFillForegroundColor(cs_completo, color = XLC$COLOR.LIGHT_GREEN)

for(status in c("Conferido","Impresso","Entregue","Envelopado")){
  if(sum(grepl(status,dados$NomeStatusExame))>0){
    index=which(grepl(status,dados$NomeStatusExame))+1
    lapply(1:length(desired_tabs),function(x) setCellStyle(wb, sheet = sheet,  row=index, col=x,cellstyle = cs_completo))}
  }
}

Шаги с 1 по 4 выполняются менее чем за три-три минуты (на некоторых листах до 2000строк).

Шаг 5 занимает не менее 30 минут!

Есть ли способ ускорить процесс записи saveWorkbook?

1 Ответ

0 голосов
/ 23 апреля 2019

Не знаю почему, но сохранение книги в новый файл занимает гораздо меньше времени (менее минуты), чем перезапись существующей!

...