Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2018, 09:10   #1
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 198
Печаль JS экспорт данных в CSV и Excel

Есть двумерный массив на js

Необходимо экспортировать csv и excel. Подскажите пожалуйста как это реализовать?
есть какие - нибудь библиотеки или можно реализовать чистым js?
dbalor вне форума Ответить с цитированием
Старый 25.07.2018, 10:10   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

отдать этот массив на сервер, а сервер должен вернуть данные в нужном формате (в заголовках вернув тип файла и то, что это вложение).
ну, что-то вроде
PHP код:
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=myFile.csv'); 
а из JS на клиенте доступа к файловой системе нет. По соображениям безопасности. (например, обсуждение подобного вопроса)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.07.2018, 03:36   #3
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 198
По умолчанию

Проблема в том что тогда нужно передавать большой объем информации, массивов может быть несколько. нашел способ экспортировать в excel, но в этом случае проблема с кодировкой вместо русских букв кракозябы:
Код:
...
var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]</head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
  return function(table, name) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
...
Для pdf использую библиотеку jsPDF, но и там проблема с кодировкой.
dbalor вне форума Ответить с цитированием
Старый 30.07.2018, 09:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от dbalor Посмотреть сообщение
нашел способ экспортировать в excel, но в этом случае проблема с кодировкой вместо русских букв кракозябы:
выложите работающий пример на http://jsfiddle.net/ или приведите полный код, чтобы можно было посмотреть, что происходит.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт всех колонок из ListView в .csv файл (Microsoft Excel) FleXik Общие вопросы Delphi 18 12.07.2015 20:10
Импорт данных их файлов *.csv в шаблон Excel We1ss Microsoft Office Excel 6 20.10.2011 18:59
Экспорт данных в Excel boakineo Общие вопросы .NET 1 08.01.2010 19:01
слияние данных из csv в excel dark7to Microsoft Office Excel 5 27.08.2009 20:06
Экспорт в csv и импорт из csv cent Microsoft Office Excel 12 28.12.2008 19:50