У меня есть таблица данных с большим количеством строк, которые необходимо экспортировать в Excel. В моем примере я использую только 500 строк, но в реальной среде у меня> 2000 строк.
ОБНОВЛЕНИЕ: добавлена блокировка для предупреждения пользователя: https://jsfiddle.net/j2fug3ax/
Теперь, когда строки экспортируются с помощью кнопки в Excel, есть скрипт, который читает каждую строку для манипулирования данными и устанавливает ее совместимость с Excel (форматы, выравнивание, высота ячейки, новая строка, ...)
Здесь фрагмент кода для редактирования строк:
//need to change double quotes to single
data = data.replace( /"/g, "'" );
// replace &
data = data.replace( /&/g, "&" );
// replace p with br
data = data.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '<br>');
// replace div with br
data = data.replace(/<div[^>]*>/g, '').replace(/<\/div>/g, '<br>');
data = remove_tags(data);
//split at each new line
splitData = data.split('<br>');
//remove empty string
splitData = splitData.filter(function(v){return v!==''});
data = '';
for (i=0; i < splitData.length; i++) {
//add escaped double quotes around each line
data += '\"' + splitData[i] + '\"';
//if its not the last line add CHAR(10)
if (i + 1 < splitData.length) {
data += ', CHAR(10), ';
}
}
//Add concat function
data = 'CONCATENATE(' + data + ')';
return data;
Этот код замедляет выполнение сценария, и в браузере появляется предупреждение о блокировке или ожидании .... Это не очень элегантно, поэтому есть ли способ чтобы предотвратить это предупреждение или ускорить мой код?
Манипуляции в моем примере не нужны, потому что я устанавливаю фиктивные данные, но в реальной среде они мне нужны.