如何使用Php Spreadsheet with Fat free来阅读和编辑excel文件?

问题描述 投票:1回答:2

我需要在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 : 

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

解决问题谢谢大家:

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

类MakeExcel扩展Controller {

public function MakeExcel(){

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

}

php spreadsheet fat-free-framework
2个回答
2
投票

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

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

然后在方法中为电子表格创建对象

$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;

这就是全部,希望这对你有用..


0
投票

首先,你似乎使用了Fat Free错误。因为$f3null

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

正确的方法:

require 'vendor/autoload.php';

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

您可以在物理上找到这些类并查看命名空间。将您的导入作曲家自动加载并使用此函数之外的块。

确保你运行composet install

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

© www.soinside.com 2019 - 2024. All rights reserved.