2

我已经使用https://github.com/PHPOffice/phpspreadsheet这个包在 codeigniter 中下载了 csv 文件

当我尝试下载时,它在浏览器选项卡中显示为空白,并且不显示下载选项

没有错误

尝试使用以下代码

   <?php
   if (!defined('BASEPATH')) exit('No direct script access allowed');

   require 'vendor/autoload.php';
   use PhpOffice\PhpSpreadsheet\Spreadsheet;
   use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

   class Reports extends Admin_Controller
   {
       public function download()
       {
             $spreadsheet = new Spreadsheet();
             $sheet = $spreadsheet->getActiveSheet();
             $sheet->setCellValue('A1', 'Hello World !');
             $writer = new Xlsx($spreadsheet);
             $writer->save('hello world.xlsx');
       }
   }

有人可以帮忙吗??谢谢

4

2 回答 2

3

希望对你有帮助 :

require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

class Reports extends Admin_Controller
{

  public function index()
  {
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');

    $spreadsheet->setActiveSheetIndex(0);

    $filename = 'hello world';

    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
    header('Cache-Control: max-age=0');

    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');

    $writer->save('php://output');
  }
}

对于 csv,只需将扩展 .xlsx 更改为 .csv(区分大小写)

于 2018-04-12T12:03:20.747 回答
1

您拥有的 download() 函数仅用于编写新文件。与下载文件无关。但是我设法在这里使用此代码输出文件。我输出了一个 csv 文件,因此我可以在我的服务器上更轻松地检查它,但前提仍然与 xlsx 文件相同。

public function writeFile() {
            $this->load->library('Spreadsheet'); 
            $output_file = getcwd() . "/test/hello_world.csv";
            $spreadsheet = new Spreadsheet();
            $spreadsheet->setActiveSheetIndex(0);
            $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow("1", "1", "Hello World!");
            $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Csv');
            $writer->save($output_file);
        }

我认为您的部分问题是没有使用 CodeIgniter 命名法正确加载库。如果您尝试上传文件,我建议您使用 CodeIgniter 附带的上传库。文档可以在这里找到:https ://www.codeigniter.com/userguide3/libraries/file_uploading.html

然后,一旦上传,我将使用 phpspreadsheet 将其编辑为您心中的内容。希望这可以帮助。

于 2018-04-12T11:12:28.093 回答