Экспорт excel / csv не работает в SPFx с ag-grid

#sharepoint #ag-grid #spfx

#sharepoint #ag-grid #spfx

Вопрос:

Я использую ag-grid react для SPFx в SharePoint.

Когда я пытаюсь экспортировать файл в workbench, он работает нормально. Но когда я развертываю пакет sppkg в sharepoint, экспорт не работает. URL-адрес большого двоичного объекта заменяет страницу SPFx и показывает 404 not found —

https://mytenant.sharepoint.com/sites/mysite/blob:/12012f34-cfb2-45a0-b8dd-539d39272848

Исследуя эту проблему, единственное отличие, которое я обнаружил, когда в workbench загрузка происходит со следующим кодом —

 element.dispatchEvent(new MouseEvent('click', {
                bubbles: false,
                cancelable: true,
                view: window
}));
 

Где, как и в развернутой версии кода, он не работает.

Любая помощь будет высоко оценена.

Заранее спасибо!

Ответ №1:

Я просмотрел документ ag-grid react и привел ниже демонстрацию, она отлично работает на моей странице SPO.

введите описание изображения здесь

Экспорт Excel доступен только в ag-Grid Enterprise (для использования требуется лицензия):

BR

Комментарии:

1. Это отлично работает в workbench. Но когда я его развертываю, возникает ошибка 404. Вместо загрузки открывается URL-адрес blob-объекта в браузере.

Ответ №2:

Возможно, уже поздно, но я столкнулся с той же проблемой при экспорте AG-Grid в SPFX. Экспорт отлично работает в Workbench, но завершается сбоем после развертывания, даже если я использую полную лицензионную версию Ag-Grid.

Это не проблема AG-Grid, а то, как SPFX обрабатывает функции экспорта.

Попробуйте это:

Вместо использования функции exportDataAsExcel() используйте getDataAsExcel() для получения данных Excel из AG Grid API в виде большого двоичного объекта.

Этот код находится в React. Вы можете повторить то же самое в JS или Angular версии Ag-Grid

 let blob = this.gridApi.getDataAsExcel();
const fileDownloadUrl = URL.createObjectURL(blob);
let link = document.createElement('a');
link.href = fileDownloadUrl;
link.download = fileName;
link.style.visibility = 'hidden';
// Followingline of code fixes the export issue in SPFX. The data interception needs to be set to false. You can research more on url interception in SPFX 
link.dataset.interception = 'off'; 
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(fileDownloadUrl);
document.body.removeChild(link);