Как решить проблему медленного движения и прокрутки на листе Excel, содержащем текст на иврите?

Я экспортирую список некоторых ресурсов в файл xlsx, где у каждого ресурса есть поля как для английского, так и для иврита. Проблема в том, что лист прокрутки выполняется очень медленно.

Медлительность наблюдалась при использовании Microsoft Excel на нескольких ПК с операционными системами Microsoft и Mac.

То, что я пробовал, не помогло:

То, что я пробовал, помогло:

  • Запись файла в формате CSV с кодировкой UTF-8.

Мне этого решения недостаточно, так как я хочу иметь возможность экспортировать файл со стилями.

(Удаление столбцов на иврите также помогло ускорить прокрутку)

Воспроизводимый пример с использованием PHPOffice / PhpSpreadsheet (при условии, что таблица базы данных содержит поля как на английском, так и на иврите):

<?php

$nominees = \App\Entities\Nominee::all();

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Headings
$sheet->setCellValue('A1', 'שם');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'ביוגרפיה');
$sheet->setCellValue('D1', 'Biography');

$row = 2;

// Rows
foreach ($nominees as $nominee) {
    $sheet->setCellValue('A' . '$row', $nominee->he_name);
    $sheet->setCellValue('B' . '$row', $nominee->en_name);
    $sheet->setCellValue('C' . '$row', $nominee->he_biography);
    $sheet->setCellValue('D' . '$row', $nominee->en_biography);

    $row++;
}

$sheet->setRightToLeft(true); // Example for styling

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('some/path');

person Arad Zaltsberger    schedule 15.05.2019    source источник


Ответы (1)


Я предлагаю изучить вариант использования scorlling. Возможно, вы можете заменить прокрутку функцией поиска или сортировки.

Медленность - это функция пересчета полей на каждом макете / экране и рендеринга.

Поэтому я предлагаю также попытаться преобразовать вычисленные поля в статические значения.

Надеюсь, у вас есть направление, в котором я иду, и следуйте ему.

person Dudi Boy    schedule 17.05.2019