Извините, если на этот вопрос уже ответили, но я не смог найти.
Я использую пакет XLConnect для добавления новых записей в электронную таблицу, но время выполнения saveWorkbook увеличивается и откладываетсявсе другие задачи, которые зависят от обновленной электронной таблицы.
Рабочий процесс следующий:
- Запрос базы данных SQL для новых записей (загрузка результата с использованием read.table);
- Загрузка устаревшей электронной таблицы и сохранение каждого листа в качестве записи списка;
- Добавление записей в соответствующие листы / элемент списка;
- Цветные линии с использованием setCellStyel,в соответствии с рядом параметров (пример приведен ниже);
- 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?