#javascript #excel #html-table #export #report
Вопрос:
У меня есть система отчетности, которая должна отображать набор готовых проектов, а также 3 изображения готовых проектов. Изображения размещены на моем статическом файловом сервере.
Когда я создаю отчет, я отправляю путь сохранения изображений на свой интерфейс, а затем на интерфейсе я добавляю путь сохранения к URL-адресу статического сервера, а затем помещаю его в src
атрибут img
тега (на самом деле это мой собственный компонент React Image, но все равно).
Поэтому, когда я создаю отчет и просматриваю его через свою систему отчетности, все работает, когда я экспортирую его в формате PDF, все работает, но когда я экспортирую его в excel, он не отображает изображения. Я попробовал следующие 3 метода:
- Использование
sheetjs
— это был инструмент, которым я пользовался до сих пор более года, но они требуют оплаты в размере 800 долларов США, чтобы предоставить мне возможность отображать изображения внутри моего xlsx. - С помощью
@linways/table-to-excel
которого afaik в настоящее время не поддерживается. Я попробовал следующее:TableToExcel.convert(print, {name: props.name " - " props.datesInfo})
но это не сработало — он просто отображал текст и игнорировал изображения.
- Наконец, я попытался с
encodeURIComponent
помощью функции закодировать свой html какdata:application/vnd.ms-excel
. Удивительно, но это был самый простой и наименее раздутый способ (не требует никаких пакетов) и работал лучше всего. Это было некрасиво, но, по крайней мере, у меня было что — то-образы. Однако изображения выглядели просто как красный крест (x).
Кто-нибудь знает, как решить эту проблему с красным крестом (x)? Может быть, это какая-то проблема с кодировкой или, может быть, какие-то меры безопасности MS Office Excel?
Редактировать:
Фотографии на самом деле появлялись в отчете, просто я использовал веб-версию Excel, потому что я, кстати, использую Arch Linux и не имею доступа к родной версии Excel без установки вредоносных программ, таких как Wine и Winetricks, а что нет. Все в порядке, я даже придумал, как добавлять стили. Если кто-то застрянет на стилях, убедитесь, что это встроенные стили и только на td
и th
. CSS не возьмет.