2019年10月11日14:09:40

配置设定

将PhpSpreadsheet文件包含在脚本中之后,但是在实例化Spreadsheet对象或加载工作簿文件之前,可以设置许多配置选项,这些配置选项将影响脚本的后续行为。

单元格收集缓存

默认情况下,PhpSpreadsheet将所有单元格对象保留在内存中,但是您可以指定替代方法来以降低速度为代价来减少内存消耗。阅读有关内存节省的更多信息。

为了使细胞缓存,您必须提供自己的实现,像这样的缓存:

$cache = new MyCustomPsr16Implementation();

\PhpOffice\PhpSpreadsheet\Settings::setCache($cache);

语言/地区

PhpSpreadsheet中已包含一些本地化元素。您可以通过更改设置来设置语言环境。要将语言环境设置为巴西葡萄牙语,请使用:

$locale = 'pt_br';
$validLocale = \PhpOffice\PhpSpreadsheet\Settings::setLocale($locale);
if (!$validLocale) {
echo 'Unable to set locale to ' . $locale . " - reverting to en_us" . PHP_EOL;
}
  • 如果巴西葡萄牙语文件不可用,则将启用葡萄牙语
  • 如果没有葡萄牙语文件,则该setLocale()方法将返回错误,并且将始终使用美式英语(en_us)设置。

设置语言环境后,可以使用可用功能的更多详细信息,包括当前支持的语言和语言环境列表,可以在“公式的语言环境设置”中找到。

工作表

工作表是单元格,公式,图像,图形等的集合。它包含代表电子表格工作表所需的所有数据。

当您从电子表格文件加载工作簿时,它将与所有现有工作表一起加载(除非您指定仅应加载某些工作表)。从非电子表格文件(例如CSV或HTML文件)或无法通过名称识别工作表的电子表格格式(例如SYLK)加载时,将创建一个名为“ WorkSheet1”的工作表,其中包含来自该文件。

当您实例化一个新的工作簿时,PhpSpreadsheet将使用一个名为“ WorkSheet1”的工作表来创建它。

getSheetCount()方法将告诉您工作簿中工作表的数量。而该getSheetNames()方法将返回工作簿中所有工作表的列表,并按在MS Excel(或其他适当的Spreadsheet程序)中打开时其“选项卡”出现的顺序编制索引。

可以通过名称或在工作簿中的索引位置访问各个工作表。索引位置代表在MS Excel(或其他适当的电子表格程序)中打开工作簿时显示每个工作表“标签”的顺序。要通过工作表的索引访问工作表,请使用getSheet()方法。

// Get the second sheet in the workbook
// Note that sheets are indexed from 0
$spreadsheet->getSheet(1);

还存在允许您在工作簿中对工作表进行重新排序的方法。

要按名称访问工作表,请使用getSheetByName()方法,指定要访问的工作表的名称。

// Retrieve the worksheet called 'Worksheet 1'
$spreadsheet->getSheetByName('Worksheet 1');

或者,一个工作表始终是当前活动的工作表,您可以直接访问该工作表。当前活动的工作表是在MS Excel(或其他适当的Spreadsheet程序)中打开工作簿时将处于活动状态的工作表。

// Retrieve the current active worksheet
$spreadsheet->getActiveSheet();

您可以使用setActiveSheetIndex()setActiveSheetIndexByName()方法通过索引或名称更改当前活动的工作表 。

添加一个新的工作表

您可以使用对象的createSheet() 方法向工作簿中添加一个新的工作表Spreadsheet。默认情况下,它将被创建为新的“最后”工作表;但您也可以将索引位置指定为参数,然后工作表将插入该位置,从而将集合中所有后续工作表拖到一个位置。

$spreadsheet->createSheet();

使用此方法创建的新工作表将被调用 Worksheet<n>,其中where <n>是保证标题唯一的最低编号。

或者,您可以实例化一个新的工作表(将标题设置为您选择的名称),然后使用该addSheet()方法将其插入工作簿中 。

// Create a new worksheet called "My Data"
$myWorkSheet = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'My Data'); // Attach the "My Data" worksheet as the first worksheet in the Spreadsheet object
$spreadsheet->addSheet($myWorkSheet, 0);

如果未将索引位​​置指定为第二个参数,则新工作表将添加到最后一个现有工作表之后。

复制工作表

可以通过创建要复制的工作表的副本,然后使用addSheet()将该副本插入工作簿的方法来复制同一工作簿中的工作表。

$clonedWorksheet = clone $spreadsheet->getSheetByName('Worksheet 1');
$clonedWorksheet->setTitle('Copy of Worksheet 1');
$spreadsheet->addSheet($clonedWorksheet);

您还可以将工作表从一个工作簿复制到另一个工作簿,尽管这更加复杂,因为PhpSpreadsheet还必须在两个工作簿之间复制样式。addExternalSheet()为此提供了该方法。

$clonedWorksheet = clone $spreadsheet1->getSheetByName('Worksheet 1');
$spreadsheet->addExternalSheet($clonedWorksheet);

在这两种情况下,开发人员都有责任确保工作表名称不重复。如果您尝试复制将导致名称重复的工作表,则PhpSpreadsheet将引发异常。

删除工作表

您可以使用以下removeSheetByIndex()方法从工作簿中删除工作表,该工作表由其索引位置标识

$sheetIndex = $spreadsheet->getIndex(
$spreadsheet->getSheetByName('Worksheet 1')
);
$spreadsheet->removeSheetByIndex($sheetIndex);

如果删除了当前活动的工作表,则位于前一个索引位置的工作表将成为当前活动的工作表。

phpspreadsheet 中文文档(八)读写文件+读取文件的更多相关文章

  1. phpspreadsheet 中文文档 粗翻版

    2019年10月11日09:32:33 官方使用文档  https://phpspreadsheet.readthedocs.io/en/stable/topics/accessing-cells/ ...

  2. phpspreadsheet 中文文档(六)读写文件+读取文件

    2019年10月11日14:05:58 读写文件 从体系结构您已经知道,使用基本PhpSpreadsheet类无法对持久性存储进行读写.为此,PhpSpreadsheet提供读者和作家,这是实现\Ph ...

  3. phpspreadsheet 中文文档(七)技巧和诀窍

    2019年10月11日14:08:35 以下页面为您提供了一些使用广泛的PhpSpreadsheet食谱.请注意,这些文件没有提供有关特定PhpSpreadsheet API函数的完整文档,而只是一个 ...

  4. phpspreadsheet 中文文档(四) 创建电子表格+档案格式

    2019年10月11日14:01:48 该Spreadsheet班 该Spreadsheet班是PhpSpreadsheet的核心.它包含对所包含工作表,文档安全性设置和文档元数据的引用. 为了简化P ...

  5. phpspreadsheet 中文文档(三) 计算引擎

    2019年10月11日13:59:52 使用PhpSpreadsheet计算引擎 执行公式计算 由于PhpSpreadsheet表示内存中的电子表格,因此它还提供公式计算功能.单元格可以是值类型(包含 ...

  6. phpspreadsheet 中文文档(二) 结构+自动筛选

    2019年10月11日13:55:41 原理图 自动加载器 PhpSpreadsheet依赖于Composer自动加载器.因此,在独立使用PhpSpreadsheet之前,请确保先运行composer ...

  7. phpspreadsheet 中文文档(一) 访问单元格

    2019年10月11日11:45:09 访问单元格 访问电子表格中的单元格应该非常简单.本主题列出了一些访问单元的选项. 通过坐标设置单元格值 可以使用工作表的setCellValue()方法来按坐标 ...

  8. phpspreadsheet 中文文档(五)节约内存+PHPExcel迁移

    2019年10月11日14:03:31 节省内存 PhpSpreadsheet在工作表中平均每个单元格使用约1k,因此大型工作簿可以迅速用尽可用内存.单元缓存提供了一种机制,使PhpSpreadshe ...

  9. Django 1.10中文文档-第一个应用Part6-静态文件

    本教程上接Part5 .前面已经建立一个网页投票应用并且测试通过,现在主要讲述如何添加样式表和图片. 除由服务器生成的HTML文件外,网页应用一般还需要提供其它必要的文件——比如图片.JavaScri ...

随机推荐

  1. 项目Beta冲刺(团队)--6/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...

  2. Zipkin 的 Docker 镜像使用

    1.Zipkin 在 dockerhub 上网址:https://hub.docker.com/r/openzipkin/zipkin 2.下载镜像 docker pull openzipkin/zi ...

  3. 记CSP2019

    给出题人倒杯茶好吧,出题人给你倒一杯卡布奇诺.给出题人倒一杯卡布奇诺! 开始你的炫技秀,搞CCF.漂亮! 六道题你能秒我?你能秒杀我?!你今天能六道题把李某秒了,我!当!场!就把这个电脑屏幕吃掉!! ...

  4. PHP memcache 环形队列

    <?php   /**  * PHP memcache 环形队列类  * 因业务需要只保留的队列中的Pop和Push,修改过期时间为0即永久  */ class MQueue {     pub ...

  5. GAME-BASED LEARNING

    https://collegestar.org/modules/game-based-learning Introduction   Appalachian State University Game ...

  6. 安装单机es

    1.安装JDK(1.8)2.上传解压Elasticsearch-5.4.33.创建一个普通用户,然后将对于的目录修改为普通用户的所属用户和所属组4.修改配置文件config/elasticsearch ...

  7. cc2530的第二次实验,用按键控制流水灯

    按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar ...

  8. 封装好的observer.js,用于非父子组件传值,直接调用$on和$emit方法

    const eventList = {} const $on = (eventName,callback)=>{ if(!eventList[eventName]){ eventList[eve ...

  9. System.NotSupportedException:“No data is available for encoding 1252. For information on defining a custom encoding

    最近搞 .net项目,Dapper连接Mysql时,运行报错: System.NotSupportedException:“No data is available for encoding 1252 ...

  10. R = [obj for obj in recs[imagename] if obj['name'] == classname] KeyError: '007765'

    在用RFBNet做测试的时候,好几次总是遇到 R = [obj for obj in recs[imagename] if obj['name'] == classname]  KeyError: ' ...