spreadsheet php,PhpSpreadsheet的简单使用

本文介绍了如何使用PHP的PHPSpreadsheet库进行Excel文件的导出和保存到本地,以及如何读取Excel文件内容。首先通过Composer安装库,然后展示导出和保存文件的代码示例,接着演示读取文件内容的方法。在实现过程中,需要注意类未找到和接口未找到的错误,并给出了相应的解决办法。
摘要由CSDN通过智能技术生成

由于phpexcel已经不再维护,phpspreadsheet是phpexcel的下一个版本。phpspreadsheet是一个用纯php编写的库,并引入了命名空间,psr规范等。这里简单介绍下phpspreadsheet的导入导出功能。

1、安装

使用composer安装:

composer require phpoffice/phpspreadsheet

github下载:

2、excel文件导出

/**

* excel文件导出

*/

function export()

{

require_once __dir__ . '/vendor/autoload.php';

$data = [

['title1' => '111', 'title2' => '222'],

['title1' => '111', 'title2' => '222'],

['title1' => '111', 'title2' => '222']

];

$title = ['第一行标题', '第二行标题'];

// create new spreadsheet object

$spreadsheet = new \phpoffice\phpspreadsheet\spreadsheet();

$sheet = $spreadsheet->getactivesheet();

// 方法一,使用 setcellvaluebycolumnandrow

//表头

//设置单元格内容

foreach ($title as $key => $value) {

// 单元格内容写入

$sheet->setcellvaluebycolumnandrow($key + 1, 1, $value);

}

$row = 2; // 从第二行开始

foreach ($data as $item) {

$column = 1;

foreach ($item as $value) {

// 单元格内容写入

$sheet->setcellvaluebycolumnandrow($column, $row, $value);

$column++;

}

$row++;

}

// 方法二,使用 setcellvalue

//表头

//设置单元格内容

$titcol = 'a';

foreach ($title as $key => $value) {

// 单元格内容写入

$sheet->setcellvalue($titcol . '1', $value);

$titcol++;

}

$row = 2; // 从第二行开始

foreach ($data as $item) {

$datacol = 'a';

foreach ($item as $value) {

// 单元格内容写入

$sheet->setcellvalue($datacol . $row, $value);

$datacol++;

}

$row++;

}

// redirect output to a client’s web browser (xlsx)

header('content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('content-disposition: attachment;filename="01simple.xlsx"');

header('cache-control: max-age=0');

// if you're serving to ie 9, then the following may be needed

header('cache-control: max-age=1');

// if you're serving to ie over ssl, then the following may be needed

header('expires: mon, 26 jul 1997 05:00:00 gmt'); // date in the past

header('last-modified: ' . gmdate('d, d m y h:i:s') . ' gmt'); // always modified

header('cache-control: cache, must-revalidate'); // http/1.1

header('pragma: public'); // http/1.0

$writer = \phpoffice\phpspreadsheet\iofactory::createwriter($spreadsheet, 'xlsx');

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

exit;

}

结果:

2fc1b0a95487ef1d41780cb41caf3765.png

3、excel文件保存到本地

/**

* excel文件保存到本地

*/

function save()

{

require_once __dir__ . '/vendor/autoload.php';

$data = [

['title1' => '111', 'title2' => '222'],

['title1' => '111', 'title2' => '222'],

['title1' => '111', 'title2' => '222']

];

$title = ['第一行标题', '第二行标题'];

// create new spreadsheet object

$spreadsheet = new \phpoffice\phpspreadsheet\spreadsheet();

$sheet = $spreadsheet->getactivesheet();

//表头

//设置单元格内容

$titcol = 'a';

foreach ($title as $key => $value) {

// 单元格内容写入

$sheet->setcellvalue($titcol . '1', $value);

$titcol++;

}

$row = 2; // 从第二行开始

foreach ($data as $item) {

$datacol = 'a';

foreach ($item as $value) {

// 单元格内容写入

$sheet->setcellvalue($datacol . $row, $value);

$datacol++;

}

$row++;

}

// save

$writer = \phpoffice\phpspreadsheet\iofactory::createwriter($spreadsheet, 'xlsx');

$writer->save('01simple.xlsx');

}

4、读取excel文件内容

/**

* 读取excel文件内容

*/

function read()

{

require_once __dir__ . '/vendor/autoload.php';

$inputfilename = dirname(__file__) . '/01simple.xlsx';

$spreadsheet = \phpoffice\phpspreadsheet\iofactory::load($inputfilename);

// 方法二

$sheetdata = $spreadsheet->getactivesheet()->toarray(null, true, true, true);

return $sheetdata;

}

结果:

98051ec76959d0fe71a05a594ef7097c.png

可能出现的问题:

1、fatal error: uncaught error: class 'phpoffice\phpspreadsheet\spreadsheet' not found

这是因为没有自动加载。可以手动引入加载文件。

require_once __dir__ . '/vendor/autoload.php';

或者:

require_once __dir__ . '/vendor/phpoffice/phpspreadsheet/src/bootstrap.php';

2、fatal error: interface 'psr\simplecache\cacheinterface' not found

这是因为没有psr文件,缺少simple-cache模块。如果使用composer安装的话会自动生成。没有的话可以手动下载。

github下载地址:

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值