phpspreadsheet 中文文檔(八)讀寫文件+讀取文件

2019年10月11日14:09:40php

配置設定

將PhpSpreadsheet文件包含在腳本中以後,可是在實例化Spreadsheet對象或加載工做簿文件以前,能夠設置許多配置選項,這些配置選項將影響腳本的後續行爲。緩存

單元格收集緩存

默認狀況下,PhpSpreadsheet將全部單元格對象保留在內存中,可是您能夠指定替代方法來以下降速度爲代價來減小內存消耗。閱讀有關內存節省的更多信息spa

爲了使細胞緩存,您必須提供本身的實現,像這樣的緩存:code

$cache = new MyCustomPsr16Implementation(); \PhpOffice\PhpSpreadsheet\Settings::setCache($cache); 

語言/地區

PhpSpreadsheet中已包含一些本地化元素。您能夠經過更改設置來設置語言環境。要將語言環境設置爲巴西葡萄牙語,請使用:orm

$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」的工做表來建立它。ip

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); 

若是刪除了當前活動的工做表,則位於前一個索引位置的工做表將成爲當前活動的工做表。

相關文章
相關標籤/搜索