/ Scripts & jquery / Экспорт в Excel средствами js

Экспорт в Excel средствами js

20.02.2023

323

Экспортируем таблицу (html) в файл Excel скриптами.

Чистый скрипт js

Пример таблицы

<table id="tblData">
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Country</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>john@gmail.com</td>
        <td>USA</td>
    </tr>
    <tr>
        <td>Michael Addison</td>
        <td>michael@gmail.com</td>
        <td>UK</td>
    </tr>
    <tr>
        <td>Sam Farmer</td>
        <td>sam@gmail.com</td>
        <td>France</td>
    </tr>
</table>

Скрипт

function exportTableToExcel(tableID, filename = ''){
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');
    
    // Specify file name
    filename = filename?filename+'.xls':'excel_data.xls';
    
    // Create download link element
    downloadLink = document.createElement("a");
    
    document.body.appendChild(downloadLink);
    
    if(navigator.msSaveOrOpenBlob){
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob( blob, filename);
    }else{
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;
    
        // Setting the file name
        downloadLink.download = filename;
        
        //triggering the function
        downloadLink.click();
    }
}

Добавляем кнопку для формирования и скачивания файла:

<button onclick="exportTableToExcel('tblData', 'members-data')">Export Table Data To Excel File</button>

Работает данное решение хорошо. При открытии таблицы выводится предупреждение о том что таблица не соответствует разрешению файла, но данные в ней есть.

Плагин xlsx

<script type="text/javascript" src="https://unpkg.com/xlsx@0.15.1/dist/xlsx.full.min.js"></script>

Скрипт

function ExportToExcel(type, fn, dl) {
	var elt = document.getElementById('tableID');
	var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" });
	return dl ?
		XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }):
		XLSX.writeFile(wb, fn || ('MySheetName.' + (type || 'xlsx')));
}

Кнопка активации

<button onclick="ExportToExcel('xlsx')">Export table to excel</button>

Этот способ работает отлично.

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Экспорт в Excel средствами js
Ищем самого первого предка
Рекомендации для васИщем самого первого предкаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.