zoukankan      html  css  js  c++  java
  • phpspreadsheet 中文文档(八)读写文件+读取文件

    2019年10月11日14:09:40

    配置设定

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

    单元格收集缓存

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

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

    $cache = new MyCustomPsr16Implementation();
    
    PhpOfficePhpSpreadsheetSettings::setCache($cache);
    

    语言/地区

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

    $locale = 'pt_br';
    $validLocale = PhpOfficePhpSpreadsheetSettings::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 PhpOfficePhpSpreadsheetWorksheetWorksheet($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);
    

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

  • 相关阅读:
    poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
    poj 2060 Taxi Cab Scheme (最小路径覆盖)
    poj 2728 Desert King (最小比例生成树)
    poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
    poj 3463 Sightseeing( 最短路与次短路)
    研究生flag
    插入排序和堆排序
    根据二叉树的中序遍历和层次遍历还原二叉树
    关于AVL实现的代码记录
    回文数猜想(与6174问题很像)
  • 原文地址:https://www.cnblogs.com/zx-admin/p/11653867.html
Copyright © 2011-2022 走看看