Оригинальный адрес:Руководство по серверу | Экспорт отчетов
адрес блога:blog.720ui.com/
Иногда нам нужно экспортировать часть данных отчета в виде файла Excel и проверить его в автономном режиме. Для экспорта отчета в Excel один из методов заключается в том, что сервер предоставляет данные отчета в формате JSON, а внешний элемент управления функцией JavaScript на основе HTML5 реализует функцию экспорта в Excel.Преимущество этого метода заключается в том, что интерфейс API сервера можно использовать повторно. и снижает производительность нагрузки на сервер, а также переносит нагрузку по созданию отчетов на внешний интерфейс. Однако, если есть рендеринг в стиле Excel, это немного не впечатляет.
Другой подход заключается в том, чтобы полностью реализовать генерацию и отрисовку Excel сервером и предоставить его во внешний интерфейс для экспорта. В языке Java наиболее часто используемые библиотеки для работы с Excel включают jxl и poi. jxl — это старый фреймворк, который может поддерживать только младшие версии excel, то есть Excel в формате .xls, такие как Excel 95, Excel 97, Excel 2000, Excel 2003 и другие версии, но производительность данных порядка 65535 линий или меньше лучше. poi — это проект Apache, который поддерживает Excel в формате .xlsx, включая Excel 2007, Excel 2010 и другие версии. Поэтому сейчас основной библиотекой классов для работы с Excel является poi. Теперь давайте обратимся к диаграмме классов для poi для работы с Excel.
Отмечается, что, как правило, отчет выполняется синхронно полученным путем связи с интерфейсом байтового потока. Кроме того, мы также можем сгенерировать файл отчета Excel для загрузки центра ресурсов и сгенерировать URL-адрес для внешнего интерфейса, чтобы пользователи могли его загрузить, поэтому вы можете использовать CDN (сеть доставки контента) для публикации веб-контента, чтобы он был ближе к границе пользователя. узел, так что разные пользователи могут получить близлежащую область при посещении одной и той же веб-страницы.
Чтобы уменьшить нагрузку на сервер, необходимо ограничить количество экспортируемых отчетов, например, за один раз можно экспортировать только 50 000 записей, и пользователям рекомендуется экспортировать их в пакетном режиме.
Кроме того, если источники данных хранятся в текущей системе, их гораздо удобнее обрабатывать, нужно только получить источник данных через JDBC, а также сгенерировать и отобразить Excel. Однако если часть источника данных хранится во внешней системе, то для его получения требуется вызов RPC или вызов RESTful API. Таким образом, с одной стороны, сильно пострадает производительность, а с другой стороны может возникнуть тайм-аут вызова интерфейса. В настоящее время приоритет состоит в том, чтобы сделать данные избыточными по отношению к локальным, а второе компромиссное решение заключается в том, что вызов завершается сбоем или время ожидания вызова истекает, чтобы повторить попытку для достижения компенсации данных, и когда некоторые внешние данные не могут быть получены после повторной попытки, дружественный, например, «Система слишком устала, я еще не разобрался».
Иногда длительное время ожидания экспорта отчета приводит к тайм-ауту Nginx. Мы можем изменить экспорт отчета в асинхронный режим. Когда пользователь инициирует запрос на экспорт отчета, сервер немедленно отвечает и выполняет генерацию и рендеринг Excel асинхронно. Когда задача завершена, внешний интерфейс уведомляется о загрузке через очередь сообщений или механизм пакетов пульса.
(Заканчивать)
Другие интересные статьи можно найти в общедоступном аккаунте WeChat «Server Thinking»!