Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中将HTML表格导出到多个excel工作表_Php_Html_Excel_Phpspreadsheet - Fatal编程技术网

如何在php中将HTML表格导出到多个excel工作表

如何在php中将HTML表格导出到多个excel工作表,php,html,excel,phpspreadsheet,Php,Html,Excel,Phpspreadsheet,我正在使用php,我想将两个HTML表格导出到excel文件,其中包含两个表格,每个表格都有一个表格 <?php use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Reader\Html; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; $fir

我正在使用php,我想将两个
HTML
表格导出到
excel
文件,其中包含两个
表格,每个表格都有一个表格

 <?php
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  use PhpOffice\PhpSpreadsheet\IOFactory;
  use PhpOffice\PhpSpreadsheet\Reader\Html;
  use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

  $firstHtmlString = '<table>
              <tr>
                  <td>Hello World</td>
              </tr>
          </table>';
  $secondHtmlString = '<table>
              <tr>
                  <td>Hello World</td>
              </tr>
          </table>';

  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
  $spreadsheet = $reader->loadFromString($firstHtmlString);
  $reader->setSheetIndex(1);
  $spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet);

   $filename='Users.xlsx';
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0');

    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    return $writer->save('php://output'); 
  ?>
我遵循了文档,但它只创建了一张表和一张表

 <?php
  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  use PhpOffice\PhpSpreadsheet\IOFactory;
  use PhpOffice\PhpSpreadsheet\Reader\Html;
  use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

  $firstHtmlString = '<table>
              <tr>
                  <td>Hello World</td>
              </tr>
          </table>';
  $secondHtmlString = '<table>
              <tr>
                  <td>Hello World</td>
              </tr>
          </table>';

  $reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
  $spreadsheet = $reader->loadFromString($firstHtmlString);
  $reader->setSheetIndex(1);
  $spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet);

   $filename='Users.xlsx';
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0');

    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    return $writer->save('php://output'); 
  ?>
这是一个有效的版本:

require "vendor/autoload.php";

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as xlsx; 
use PhpOffice\PhpSpreadsheet\IOFactory as io_factory; 



$firstHtmlString = '<table>
                  <tr>
                      <td>Hello World</td>
                  </tr>
              </table>';
$secondHtmlString = '<table>
                  <tr>
                      <td>Hello World</td>
                  </tr>
              </table>';

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html;
$spreadsheet = $reader->loadFromString($firstHtmlString);
$reader->setSheetIndex(1);
$spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet);
$objWriter = io_factory::createWriter($spreadsheet, 'Xlsx');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=test.xlsx");
header("Content-Transfer-Encoding: binary ");

ob_end_clean();
ob_start();
$objWriter->save('php://output');
需要“vendor/autoload.php”;
使用PhpOffice\PhpSpreadsheet\Spreadsheet;
使用PhpOffice\PhpSpreadsheet\Writer\Xlsx作为Xlsx;
使用PhpOffice\PhpSpreadsheet\IOFactory作为io_工厂;
$firstHtmlString=$
你好,世界
';
$secondHtmlString='1!'
你好,世界
';
$reader=new\PhpOffice\PhpSpreadsheet\reader\Html;
$spreadsheet=$reader->loadFromString($firstHtmlString);
$reader->setSheetIndex(1);
$spreadhseet=$reader->loadFromString($secondHtmlString,$spreadsheet);
$objWriter=io_工厂::createWriter($spreadsheet,'Xlsx');
标题(“Pragma:public”);
标题(“到期日:0”);
标头(“缓存控制:必须重新验证,后检查=0,前检查=0”);
标题(“内容类型:应用程序/强制下载”);
标题(“内容类型:应用程序/八位字节流”);
标题(“内容类型:应用程序/下载”);
标题(“内容配置:附件;文件名=test.xlsx”);
标题(“内容传输编码:二进制”);
ob_end_clean();
ob_start();
$objWriter->save('php://output');

问题在于读者说你只做一张

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html;
$spreadsheet = $reader->loadFromString($firstHtmlString);
$reader->setSheetIndex(1);
必须添加具有不同输入的不同图纸

$myWorkSheet1 = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'My Data');
$spreadsheet->addSheet($myWorkSheet1, 0);

$myWorkSheet2 = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'My Data');
$spreadsheet->addSheet($myWorkSheet2, 1);

请参阅文档

是否出现错误?错误是什么?没有错误。它只是一张桌子一张床单。。文件里没有两张纸。对不起。。它不起作用。。它只有一张纸而不是两张纸。。同样的问题,我测试了它并开始工作,所以这是你的休息。请尝试重新安装。我不明白你的代码!!。
$secondHtmlString
变量在哪里?是的,它可以创建两个
工作表
,但其中一个工作表中有表格,另一个为空。您需要创建两个不同的工作表。然后把它们填入你的代码中,你可以创建一个工作表,然后覆盖这个工作表。我还是不明白!!。是,已添加两张工作表。。但是空的。如何为第一张图纸指定数据,为第二张图纸指定不同的数据?