Печать raw html в xls файл на php

Я пытаюсь создать файл xls на php. И я делаю строку в формате html позволяет сказать <table><tr><td>Cell 1</td><td>Cell 2</td></tr></table>и хотите, чтобы напечатать в xls файл, как это. но моя проблема заключается в том, что когда я пытаюсь напечатать в xls-файле, он получает рендер. но я хочу необработанную строку html без визуализации в xls-файле.

Вот мой код:-

<?php
$file="demo.xls";
$test="<table><tr><td>Cell 1</td><td>Cell 2</td></tr></table>";
header('Content-type: application/excel');
header("Content-Disposition: attachment; filename=$file");
echo $test;

?>php

3 ответа

  1. Можно также использовать службу DocRaptor, которая выполняет преобразование html в excel. http://docraptor.com/, поддержанный множественный язык

    Или вы можете использовать приведенный ниже код для загрузки файла в Excel, но сначала вы должны загрузить файлы класса PHPExcel и включить, как показано ниже .

    require_once "excel/Classes/PHPExcel.php";
    
    $objTpl = new PHPExcel();
    
    $l=0;
    $row_num = 1;
    $objTpl->getActiveSheet()->getDefaultStyle()->getFont()->setName('Calibri');
    $objTpl->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
    
    $objTpl->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    $objTpl->getActiveSheet()->duplicateStyle($objTpl->getActiveSheet()->getStyle('A1'), 'B1:Z1');
    $objTpl->getActiveSheet()->getStyle('A1:Z1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    
    
    
    // you can use loop over here remember to set $row_num = 2 if using loop and increment it inside $row_num++
    
    $objTpl->getActiveSheet()->setCellValueByColumnAndRow($l++,$row_num, 'Cell 1');
    
    $objTpl->getActiveSheet()->setCellValueByColumnAndRow($l++,$row_num, 'Cell 2');
    
    $filename='some_file.xls'; //just some random filename
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0'); 
    
    $objWriter = PHPExcel_IOFactory::createWriter($objTpl, 'Excel5');      //downloadable file is in Excel 2003 format (.xls)
    
    $objWriter->save('php://output');  //send it to user, of course you can save it to disk also!
    
    exit; //done.. exiting! 
    
  2. Есть способ, написав html в файле или разделенный запятыми текст

    с HTML

    $xlsx_file = $pathinfo['dirname']."/".$pathinfo['filename'].".xlsx" ;
    
    $fh = fopen($xlsx_file, 'w+');<br>
    fwrite($fh, $table); // your table <br>
    fclose($fh);<br>
    

    с массивом или строкой csv

     $data = '"Name"t"City"t"Country"' . "n";<br>
     $data .= '"Ashok"t"New Delhi"t"India"' . "n";<br>
     $data .= '"Krishna"t"Bangalore"t"India"' . "n";<br>
    
     $f = fopen('data.xls' , 'wb');<br>
     fwrite($f , $data );<br>
     fclose($f);<br>
    

    это временное решение, но если вы хотите полный набор параметров вы идете для PHP Excel, как предложено другими