extjs 表格数据重新加载_卓象程序员:电子表格导入PhpSpreadsheet

一、介绍

用纯 php 编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式。

支持格式

9999a9b75fd60f32c22f3ebf7d2c6eb3.png

环境要求

php 5.6 及以上

php_zip 支持并启用

php_xml 支持并启用

php_gd2 支持并启用

安装

> composer require phpoffice/phpspreadsheet

hello world

require 'vendor/autoload.php';

use PhpOfficePhpSpreadsheetSpreadsheet;

use PhpOfficePhpSpreadsheetWriterXlsx;

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);

$writer->save('hello world.xlsx')

实例

包中带了实例代码,位置 vendor/phpoffice/phpspreadsheet/samples 下

> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples


二、读取

无需关心文件类型加载,用到了 IOFactory

// 文件路径

$inputFileName = './sampleData/example1.xls';

$spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load($inputFileName)

注意:

这不是加载文件的最有效方法, 并且它缺乏在将文件实际读入 Spreadsheet 对象之前以任何方式配置加载器的灵活性。

知道文件类型,可以自己决定使用哪种读取器

// 文件路径

$inputFileName = './sampleData/example1.xls';

/** 创建读取器 **/

$reader = new PhpOfficePhpSpreadsheetReaderXls();

// $reader = new PhpOfficePhpSpreadsheetReaderXlsx();

// $reader = new PhpOfficePhpSpreadsheetReaderXml();

// $reader = new PhpOfficePhpSpreadsheetReaderOds();

// $reader = new PhpOfficePhpSpreadsheetReaderSlk();

// $reader = new PhpOfficePhpSpreadsheetReaderGnumeric();

// $reader = new PhpOfficePhpSpreadsheetReaderCsv();

$spreadsheet = $reader->load($inputFileName)

当只要读取数据,不要格式时,实例读取器中 readDataOnly 属性,如下

$inputFileType = 'Xls';

$inputFileName = './sampleData/example1.xls';

$reader = PhpOfficePhpSpreadsheetIOFactory::createReader($inputFileType);

/** 只要数据 **/

$reader->setReadDataOnly(true);

$spreadsheet = $reader->load($inputFileName);

注意:csv 读取器没有这个属性

多个文件合并为一个对象

$inputFileType = 'Csv';

$inputFileNames = [

'./sampleData/example1.csv',

'./sampleData/example2.csv'

'./sampleData/example3.csv'

];

$reader = PhpOfficePhpSpreadsheetIOFactory::createReader($inputFileType);

/** 拿到第一个 **/

$inputFileName = array_shift($inputFileNames);

$spreadsheet = $reader->load($inputFileName);

$spreadsheet->getActiveSheet()

->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));

/** 循环读取 **/

foreach($inputFileNames as $sheet => $inputFileName) {

/** 重新设置工作表索引 **/

$reader->setSheetIndex($sheet+1);

/** 把文件当做一个新的工作表载入 **/

$reader->loadIntoExisting($inputFileName,$spreadsheet);

/** 设置工作表标题 **/

$spreadsheet->getActiveSheet()

->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));

}

注意:对多个工作表使用相同的工作表索引不会将文件附加到同一工作表中,而是覆盖先前加载的结果。您无法将多个 CSV 文件加载到同一工作表中。

转为数组

文件最后会载入到一个对象中,我称为 spreadsheet 工作表对象,这个对象中存放着所以工作表集合的信息(数据信息和格式信息、工作表信息等)

$spreadsheet = PhpOfficePhpSpreadsheetIOFactory::load("new.xls");

$data = $spreadsheet

->getSheet(0) // 指定第一个工作表为当前

->toArray(); // 转为数组

// 或者得到全部工作表的数据数组

$cells=array();

// 工作表对象有迭代器实现

foreach ( $spreadsheet->getWorksheetIterator() as $data ) {

$cells = $data->toArray();

}


结语

PhpSpreadsheet 是非常不错的 php 的电子表格处理工具类,后续有时间在补上写入和导出。

12159980116124289b5c9d6b83d81876.gif
0c44e3032bfaa8dc36efe9f382c14b61.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值