如何使用带有Fat free的Php Spreadsheet来阅读和编辑Excel文件?

时间:2019-02-26 13:21:57

标签: php spreadsheet fat-free-framework

我需要在php中编辑一个excel文件。我有一个简单的PHP电子表格。 我使用的是无脂食品,而问题是

public function MakeExcel()
{

    require 'vendor/autoload.php';
    use \vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet ;
    use \vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Writer\Xlsx ;
    $Spreadsheet = new Spreadsheet();
    $sheet = $Spreadsheet->getActiveSheet();
    $sheet->setCellValue('A3', 'toto');
    $writer = new Xlsx($Spreadsheet);
    $writer->save("test.xlsx");


    $f3->set('CONTENT','views/dashboard/dashboard_liste.html');
    $f3->set('CONTENTJS','views/dashboard/dashboard_liste.js');
    echo \Template::instance()->render('views/accueil/accueil.html','text/html');
    $this->db = null;
}

使用似乎不存在于无脂食品中,所以我尝试了:

$f3->use(\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet);
Or
$f3->use("\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Spreadsheet");
and many other it return me the error : 
  

错误500在null上调用成员函数use()

问题解决了,谢谢大家:

使用PhpOffice \ PhpSpreadsheet \ Spreadsheet; 使用PhpOffice \ PhpSpreadsheet \ Writer \ Xlsx;

MakeExcel类扩展了控制器{

public function MakeExcel(){

    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');
    $writer = new Xlsx($spreadsheet);
    $writer->save('hello world.xlsx');
}

}

2 个答案:

答案 0 :(得分:2)

您需要在php顶部区域声明这些文件

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

然后用in方法为电子表格创建对象

$spreadsheet = new Spreadsheet();

然后您可以像这样为xls文件定义边框和对齐方式

$cell_st =[
     'font' =>['bold' => true],
     'alignment' =>['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER],
     'borders'=>['bottom' =>['style'=> \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN],'top' =>['style'=> \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]
    ];

要定义标题,您可以使用以下代码

$spreadsheet->setActiveSheetIndex(0)->mergeCells('A2:D2'); 
    $spreadsheet->setActiveSheetIndex(0)->setCellValue('A2',  "<YOUR HEADER>");
$spreadsheet->getActiveSheet()->getStyle('A2:D2')->applyFromArray($cell_st);

然后定义列名

$spreadsheet->setActiveSheetIndex(0)
         ->setCellValue('A3', 'ID')
         ->setCellValue('B3', 'NAME')
         ->setCellValue('C3', 'CITY')
         ->setCellValue('D3', 'SALARY');

在完成上述所有代码之后,您可以像这样在循环中开始内容

    $rowcount = 4;
    foreach($data_array as $key=>$value){
        $spreadsheet->setActiveSheetIndex(0)
         ->setCellValue('A'.$rowcount, $value['id'])
         ->setCellValue('B'.$rowcount, $value['name'])
         ->setCellValue('C'.$rowcount, $value['city'])
         ->setCellValue('D'.$rowcount, $value['salary']);
         $rowcount++;
    }

最后,现在使Xlsx类的对象保存Excel文件

$writer = new Xlsx($spreadsheet);

$file_name = "report.xls';
$file_root_path = "assets/reports/xls/".$file_name;
$file_site_path = "localhost/xls_generate/assets/reports/xls/".$file_name;
$writer->save($file_root_path);

// final xls file path is here
echo $file_site_path;

仅此而已,希望这对您有用。

答案 1 :(得分:0)

首先看来您使用Fat Free是错误的。因为{ "angelbeats": { "hosts": ["10.193.0.24", "10.193.0.23"], "vars": { "ansible_ssh_user": "wangluoli" } }, "grammy": { "hosts": ["10.193.2.5", "10.193.0.9", "10.193.10.4", "10.193.8.5"], "vars": { "ansible_ssh_user": "wangluoli" } }, "cdn": { "hosts": ["10.193.0.12", "10.193.0.11", "10.193.2.7", "10.193.2.8"], "vars": { "ansible_ssh_user": "root" } }, "mdianying": { "hosts": ["10.193.0.31"], "vars": { "ansible_ssh_user": "wangluoli" } }, "zkmq": { "hosts": ["10.193.0.26", "10.193.0.27", "10.193.0.25"], "vars": { "ansible_ssh_user": "wangluoli" } }, "bmovie": { "hosts": [], "children": ["angelbeats", "growingpains", "forrestgump", "zkmq", "job", "tm", "inception"], "vars": { "ansible_ssh_user": "wangluoli" } }, "xxljob": { "hosts": ["10.193.0.6"], "vars": { "ansible_ssh_user": "wangluoli" } }, "redis": { "hosts": ["10.193.0.40", "10.193.2.13"], "vars": { "ansible_ssh_user": "wangluoli" } }, "tm": { "hosts": ["10.193.0.13", "10.193.0.14", "10.193.0.16", "10.193.0.17", "10.193.0.15"], "vars": { "ansible_ssh_user": "wangluoli" } }, "dns": { "hosts": ["10.193.0.100", "10.193.2.100", "10.193.10.10", "10.193.8.19"], "vars": { "ansible_ssh_user": "root" } }, "yctask": { "hosts": ["10.193.8.15"], "vars": { "ansible_ssh_user": "wangluoli" } }, "cmovie": { "hosts": [], "children": ["angelbeats", "growingpains", "forrestgump", "zkmq", "job", "tm", "inception"], "vars": { "ansible_ssh_user": "wangluoli" } }, "forrestgump": { "hosts": ["10.193.0.104", "10.193.2.101", "10.193.8.20", "10.193.10.11"], "vars": { "ansible_ssh_user": "wangluoli" } }, "pwapi": { "hosts": ["10.193.0.28", "10.193.2.11", "10.193.8.10", "10.193.10.9"], "vars": { "ansible_ssh_user": "wangluoli" } }, "pwweb": { "hosts": ["10.193.0.20", "10.193.0.19", "10.193.2.9", "10.193.2.10", "10.193.8.9", "10.193.8.8", "10.193.10.6", "10.193.10.7"], "vars": { "ansible_ssh_user": "wangluoli" } }, "pwtask": { "hosts": ["10.193.0.29"], "vars": { "ansible_ssh_user": "wangluoli" } }, "apishow": { "hosts": ["10.193.0.32", "10.193.8.11"], "vars": { "ansible_ssh_user": "wangluoli" } }, "inception": { "hosts": ["10.193.0.10", "10.193.2.6", "10.193.8.7", "10.193.10.5"], "vars": { "ansible_ssh_user": "wangluoli" } }, "moviebi": { "hosts": ["10.193.0.42", "10.193.8.18"], "vars": { "ansible_ssh_user": "wangluoli" } }, "yanchu": { "hosts": ["10.193.0.35", "10.193.8.14"], "vars": { "ansible_ssh_user": "wangluoli" } }, "growingpains": { "hosts": ["10.193.0.21", "10.193.0.22"], "vars": { "ansible_ssh_user": "wangluoli" } }, "goods": { "hosts": ["10.193.0.33", "10.193.8.12"], "vars": { "ansible_ssh_user": "wangluoli" } }, "urm": { "hosts": ["10.193.0.39", "10.193.2.12"], "vars": { "ansible_ssh_user": "wangluoli" } }, "job": { "hosts": ["10.193.0.105"], "vars": { "ansible_ssh_user": "wangluoli" } }, "order": { "hosts": ["10.193.0.34", "10.193.8.13"], "vars": { "ansible_ssh_user": "wangluoli" } } } $f3

第二。可能您正在导入具有错误名称空间的类。您可以阅读PhpSpreadsheet的documentation

正确的方法:

null

您可以随意找到此类并查看命名空间。 将导入的composer自动加载并在此功能之外使用block。

确保您运行了require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

使您的函数在没有PhpSpreadsheet的情况下工作。然后尝试添加其他功能