0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 1158 Просмотров
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Экспорт table в Excel?
« : 22.03.2021, 08:51:05 »
Добрый день,
подскажите пожалуйста

Есть таблица в HTML, экспортируется в Excel:

Код
<script type="text/javascript">
    var tableToExcel = (function() {
/*          var uri = 'data:application/vnd.ms-excel;base64,'*/
          var uri = 'data:application/vnd.ms-excel;charset=UTF-8;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"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><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}
            var link = document.createElement('a');
link.download = 'Список пассажиров - <?php echo strip_tags($filter_text); ?>.xls';
            link.href = uri + base64(format(template, ctx));
link.click();
          }
        })()
</script>

И сама таблица:
Код
<table id="testTable"  class="wp-list-table widefat striped posts" style="width: 100%">
            <thead>
            <tr>
               <th>###########</th>
               <th>###########</th>
            </tr>


При открытии таблицы в Excel - выдает сообщение:
"Формат файла ####.xls не соответствует разрешению файла. Возможно, файл поврежден или небезопасен."

Подскажите пожалуйста как это исправить?

(при этом открывается, нормально отображается)
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Экспорт table в Excel?
« Ответ #1 : 22.03.2021, 09:38:09 »
Подскажите пожалуйста как это исправить?

Вы же экспортируете не в формате Excel, а в формате HTML.
Да, Excel может его открыть. Поэтому открывает.
Но выдаёт предупреждение.

Чтобы было всё ок, надо экспортировать именно в формате Excel. Не встречал таких решения на JS.
На PHP есть, но это несколько другая история. Хотя тоже реализуемая.
Возможно, будет интересно: Интеграция с Ozon
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Re: Экспорт table в Excel?
« Ответ #2 : 22.03.2021, 12:54:28 »
Формат файла ####.xls не соответствует разрешению файла.
Расширение файла должно быть (скорее всего) .xlsx (а не .xls).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Экспорт table в Excel?
« Ответ #3 : 22.03.2021, 13:06:43 »
Формат файла ####.xls не соответствует разрешению файла
Можете показать содержание экспортированного файла (хотя бы начало), открытое в Блокноте?
Возможно, будет интересно: Интеграция с Ozon
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Re: Экспорт table в Excel?
« Ответ #4 : 22.03.2021, 13:38:28 »
вот файл, тот что формирует:
Код
<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"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>W3C Example Table</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>
<!--заголовок таблицы-->
<caption style="display: none;"><strong>Список пассажиров</strong></caption>
            <thead>
            <tr>
                <th>№</th>
                 <th>Место(а)</th>
                <th>№ билета</th>
                <th>Маршрут</th>
                <th>Регистрация</th>
                <th>Дата отправления</th>
                <th>Пункт отправления</th>
                <th>Пункт прибытия</th>
                <th>Цена</th>
                <th>Status</th>
                <th>Action</th>
            </tr>
            </thead>
            <tbody>
                            <tr>
                    <td>1</td>
                    <td>Test3 Test2</td><td>64563246</td><td>5634563 пааправпр</td>                                        <td>4</td>
                    <td>781</td>
                    <td>##### – Краснодар<br> (ежедневно)</td>
                    <td>2021-03-22 08:20 am</td>
                    <td>
                        2021-03-22<!--                        <br>18:00-->
                         18:00                    </td>
                    <td>#####</td>
                    <td>Краснодар</td>
                    <td><bdi>1700руб.</span></bdi></span></td>
                    <td>
                        processing                                            </td>
                </tr>
                                <tr>
                    <td>2</td>
                    <td>Test3 Test2</td><td>64563246</td><td>5634563 пааправпр</td>                                        <td>4</td>
                    <td>779</td>
                    <td>#### – Краснодар<br> (по четным числам) через Платов</td>
                    <td>2021-03-22 08:18 am</td>
                    <td>
                        2021-03-22<!--                        <br>7:30-->
                         7:30                    </td>
                    <td>######</td>
                    <td>Краснодар</td>
                    <td>1700руб.</td>
                    <td>
                        processing                                            </td>
                 </tr>
                            </tbody>
        </table></body></html>
« Последнее редактирование: 22.03.2021, 14:00:58 от warlocksp »
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Экспорт table в Excel?
« Ответ #5 : 22.03.2021, 14:03:39 »
вот файл, тот что формирует:
Код
<html xmlns:o="urn:schemas-microsoft-com:office:office" ...

Видите, это не Excel. Это HTML.
Excel формат - там ближе к бинарному файлу.

Именно настоящий Excel формат можно генерировать через PHP решение, ссылку на которое я привёл выше.
Возможно, будет интересно: Интеграция с Ozon
*

khan-alex

  • Давно я тут
  • 646
  • 30 / 1
Re: Экспорт table в Excel?
« Ответ #6 : 22.03.2021, 14:30:31 »
Возможно неправильно понял проблему, но подобное сообщение выдаётся когда пытаешь открыть скачанный из интернета файл. Попробуйте настроить параметры безопасности Excel: Файл -- Параметры -- Центр управления безопасностью -- Параметры центра управления безопасностью -- Защищённый просмотр -- Снять 3 галки вверху -- перезапустить Excel.
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Re: Экспорт table в Excel?
« Ответ #7 : 22.03.2021, 15:10:01 »
Возможно неправильно понял проблему, но подобное сообщение выдаётся когда пытаешь открыть скачанный из интернета файл. Попробуйте настроить параметры безопасности Excel: Файл -- Параметры -- Центр управления безопасностью -- Параметры центра управления безопасностью -- Защищённый просмотр -- Снять 3 галки вверху -- перезапустить Excel.

Неа, не решает вопроса,

rsn - прав, тут или PHPExcel или PhpSpreadsheet
Думал малой кровью обойтись

Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Re: Экспорт table в Excel?
« Ответ #8 : 22.03.2021, 15:22:55 »
А использование xls/xlsx обязательно? Не проще в csv выгружать, он точно также откроется excel, и уже давно стал общепринятым форматом выгрузки.
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Re: Экспорт table в Excel?
« Ответ #9 : 22.03.2021, 15:26:36 »
А использование xls/xlsx обязательно? Не проще в csv выгружать, он точно также откроется excel, и уже давно стал общепринятым форматом выгрузки.

Согласен и это есть, но народ требует Excel  *ОХ-Х-Х*
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

khan-alex

  • Давно я тут
  • 646
  • 30 / 1
Re: Экспорт table в Excel?
« Ответ #10 : 22.03.2021, 15:49:08 »
А экспорт как производится? Данные -- Получить данные -- Из файла ... ? Или просто открыть как...?
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Re: Экспорт table в Excel?
« Ответ #11 : 23.03.2021, 11:19:30 »
Согласен и это есть, но народ требует Excel  *ОХ-Х-Х*
А старый формат обязателен? Просто xlsx это обычный zip архив, с XML файлами. Можно писать прямо в XML и отдавать готовый файл на вывод. А вот со старым форматом работать, это конечно жесть.
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Экспорт table в Excel?
« Ответ #12 : 23.03.2021, 13:56:51 »
Вот не факт, что писать XML по формату MS Office это лечге, чем сгенерить файл с помощью библиотеки, благо ещё и бесплатной )
Возможно, будет интересно: Интеграция с Ozon
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Re: Экспорт table в Excel?
« Ответ #13 : 23.03.2021, 15:24:26 »
Наткнулся на мощную библиотеку, с поддержкой и новых и старых форматов. Может поможет https://github.com/PHPOffice/PhpSpreadsheet
Упс, тут уже о ней и так упоминалось. Жаль нельзя удалить сообщение.
« Последнее редактирование: 23.03.2021, 15:32:39 от xpank »
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Re: Экспорт table в Excel?
« Ответ #14 : 23.03.2021, 16:02:37 »
Упс, тут уже о ней и так упоминалось. Жаль нельзя удалить сообщение.
У поминалась, но без ссылки, так что все ок. К тому ж не уточнялось, что именно PhpSpreadsheet предпочтительней, чем PHPExcel.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Экспорт table в Excel?
« Ответ #15 : 23.03.2021, 16:19:55 »
К тому ж не уточнялось, что именно PhpSpreadsheet предпочтительней, чем PHPExcel.

Вроде, PhpSpreadsheet - это как продолжение PHPExcel, которая в том виде больше не развивается.
В некотором смысле это одно и то же. Просто разные версии.
Возможно, будет интересно: Интеграция с Ozon
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Re: Экспорт table в Excel?
« Ответ #16 : 23.03.2021, 18:03:21 »
В некотором смысле это одно и то же. Просто разные версии.
Да, продолжение. И синтаксис очень похож. Только PhpSpreadsheet намного меньше оперативы сжирает и работает в разы быстрее.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод данных соглано таблицы Excel

Автор warlocksp

Ответов: 56
Просмотров: 1820
Последний ответ 28.02.2019, 23:56:23
от warlocksp