Экспорт таблицы html в виде файла Excel с использованием PHP - PullRequest
2 голосов
/ 09 января 2020

У меня есть файл Excel. Этот файл Excel преобразуется в таблицу html и вставляется с тремя дополнительными столбцами с текстовыми полями. Я должен вставить некоторые данные и экспортировать таблицу html с этими дополнительными столбцами как новый файл Excel.

Я пробовал следующий код для этого:

<?php
$newcol = array('col1','col2','col3');
$xtra=sizeof($newcol);
echo '<table border="1" cellpadding="3" style="width: 100%">';
        $dim = $xlsx->dimension();
        $cols = $dim[0];
        echo '<thead>';
        foreach ( $xlsx->rows() as $k => $r ) {
        if ( $k === 0 ) {
        echo '<tr style="height: 50px;">';
        for ( $i = 0; $i < $cols; $i ++ ) {
                echo '<th>' . ( isset( $r[ $i ] ) ? $r[ $i ] : '&nbsp;' ) . '</th>';
            }
            for ( $j = 0; $j < $xtra; $j ++ ) {
                echo '<th>' . ( isset( $newcol[ $j ] ) ? $newcol[ $j ] : '&nbsp;' ) . '</th>';
            }
            echo '</tr>';
        }
    }

        echo '</thead>';

echo '<tbody>';
        foreach ( $xlsx->rows() as $k => $r ) {
                if ($k == 0) continue; // skip first row
            echo '<tr style="height: 50px;">';
            for ( $i = 0; $i < $cols; $i ++ ) {
                echo '<td>' . ( isset( $r[ $i ] ) ? $r[ $i ] : '&nbsp;' ) . '</td>';
            }
            for ( $j = 0; $j < $xtra; $j ++ ) {
                echo '<td>' . ('<input type="text" >    ') . '</td>';
            }
            echo '</tr>';
        }
        echo '</tbody>';
        echo '</table>';
echo '<div class="pull-right">

                     <button onclick="exportTableToExcel('sheettable','members')">Export Table Data To Excel File</button>
                  </div>';
?>
<script>
function exportTableToExcel(tableID, filename = ''){
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');
    filename = filename?filename+'.xls':'excel_data.xls';
    downloadLink = document.createElement("a");
    document.body.appendChild(downloadLink);        
    if(navigator.msSaveOrOpenBlob){
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob( blob, filename);
    }else{
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;
        downloadLink.download = filename;
        downloadLink.click();
    }
}
    </script>
...