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


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

如果刪除了當前活動的工作表,則位於前一個索引位置的工作表將成為當前活動的工作表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM