1. 程式人生 > >PHPExcel設定頁邊距 格式 顏色 大小等

PHPExcel設定頁邊距 格式 顏色 大小等

這篇為phpexcel的中文翻譯版,基本涵蓋了你想要做的任何東西,主要是別人寫的東西,又加了一些自己經過實踐過的,僅供參考

PHPExcel開發者文件

1.目錄
2. 4先決條件
2.1。軟體要求4
2.2。安裝說明4
2.3。入門4
2.4。有用的連結和工具4
2.4.1。的OpenXML / SpreadsheetML中4
2.4.2。常見問題5
2.4.3。 6教程
3.建築7
3.1。 7示意性
3.2。延遲載入器7
3.3。電子表格在記憶體中7
3.4。讀者和作家7
3.5。流利的介面8
4.建立電子表格10
4.1。該PHPExcel 10級
4.1.1。從檔案載入10工作簿
4.1.2。建立一個新的工作簿10
4.2。配置設定10
4.2.1。電池快取10
4.2.2。語言/區域設定12
4.3。從記憶體中清除13工作簿
4.4。 13工作表
4.4.1。新增一個新的工作表14
4.4.2。複製工作表14
4.4.3。刪除工作表14
4.5。訪問單元14
4.5.1。通過座標14設定單元格值
4.5.2。通過座標15檢索細胞
4.5.3。通過行和列15設定單元格值
4.5.4。由列和行15檢索細胞
4.5.5。迴圈單元15
4.5.6。使用值粘合劑,以方便資料錄入16
4.6。 PHPExcel 17食譜
4.6.1。設定電子表格的元資料17
4.6.2。設定電子表格的活動板17
4.6.3。寫日期或時間到單元格17
4.6.4。寫了公式的單元格18
4.6.5。對式19區域設定
4.6.6。寫在單元格中換行字元“\ n”(ALT +“回車”)20
4.6.7。明確設定單元格的資料型別20
4.6.8。一個細胞變成可點選的URL 20
4.6.9。設定工作表的頁面方向和大小20
4.6.10。頁面設定:縮放選項21
4.6.11。頁邊距22
4.6.12。水平中心頁/垂直22
4.6.13。設定工作表22的列印頁首和頁尾
4.6.14。在一行或一列24設定列印中斷
4.6.15。列印時24顯示/隱藏網格線
4.6.16。設定行/列頂部重複/左24
4.6.17。指定印刷面積24
4.6.18。設定單元格24
4.6.19。數字格式26
4.6.20。校準和自動換行26
4.6.21。設定一個工作簿27的預設樣式
4.6.22。造型單元格邊框27
4.6.23。條件格式的單元格28
4.6.24。註釋新增到單元格28
4.6.25。應用自動篩選單元格區域29
4.6.26。在電子表格29設定安全
4.6.27。在電池30設定資料驗證
4.6.28。設定列寬30
29年4月6日。顯示/隱藏列31
4.6.30。集團/勾勒出列31
31年4月6日。設定行高31
4.6.32。顯示/隱藏行31
33年4月6日。集團/勾勒出一個排32
34年4月6日。合併/分開單元32
35年4月6日。插入行/列32
36年4月6日。圖形新增到工作表32
37年4月6日。從表33讀取圖片
38年4月6日。豐富的文字新增到一個小區34
39年4月6日。定義一個名為範圍34
40年4月6日。輸出重定向到客戶端的Web瀏覽器34
41年4月6日。設定預設列寬35
42年4月6日。設定預設行高35
43年4月6日。新增GD繪圖到工作表35
44年4月6日。設定工作表的縮放級別36
45年4月6日。工作表標籤顏色36
46年4月6日。在工作​​簿中建立36工作表
47年4月6日。隱藏的工作表(表州)36
48年4月6日。從右到左的工作表36
5.執行公式計算37
5.1。使用PHPExcel計算引擎37
5.2。已知限制38
5.2.1。運算子優先順序38
5.2.2。涉及數字和文字38公式
6.讀取和寫入到檔案39
6.1。 PHPExcel_IOFactory 39
6.1.1。使用PHPExcel_IOFactory 39建立PHPExcel_Reader_IReader
6.1.2。使用PHPExcel_IOFactory 39建立PHPExcel_Writer_IWriter
6.2。 Excel 2007中(SpreadsheetML中)檔案格式39
6.2.1。 PHPExcel_Reader_Excel2007 40
6.2.2。 PHPExcel_Writer_Excel2007 40
6.3。 Excel中5(BIFF)檔案格式41
6.3.1。 PHPExcel_Reader_Excel5 41
6.3.2。 PHPExcel_Writer_Excel5 42
6.4。 Excel 2003中的XML檔案格式42
6.4.1。 PHPExcel_Reader_Excel2003XML 42
6.5。符號連結(SYLK)43
6.5.1。 PHPExcel_Reader_SYLK 43
6.6。開啟/自由辦公室(的.ods)43
6.6.1。 PHPExcel_Reader_OOCalc 43
6.7。 CSV(逗號分隔值)44
6.7.1。 PHPExcel_Reader_CSV 44
6.7.2。 PHPExcel_Writer_CSV 45
6.8。 HTML 46
6.8.1。 PHPExcel_Reader_HTML 46
6.8.2。 PHPExcel_Writer_HTML 46
6.9。 PDF 47
6.9.1。 PHPExcel_Writer_PDF 47
6.10。從模板(讀取,修改,寫)49生成Excel檔案
7.現金50
附錄A:風格applyFromArray有效的陣列鍵()51
2.先決條件

2.1。軟體要求

下列軟體需要使用PHPExcel擴充套件:

»PHP版本5.2.0或更高版本
»PHP擴充套件php_zip啟用*)
»PHP擴充套件php_xml啟用
»PHP擴充套件php_gd2啟用(如果沒有編譯)

php_zip僅由PHPExcel_Reader_Excel2007,PHPExcel_Writer_Excel2007和PHPExcel_Reader_OOCalc需要的。換句話說,如果你需要PHPExcel處理的.xlsx或.ods檔案檔案,你需要壓縮擴充套件,但否則不是。
您可以刪除此依賴寫的Excel2007檔案(儘管還沒有讀)通過使用捆綁PHPExcel的PCLZip庫。請參閱本文件(2.4.2)有關此資訊的FAQ部分。 PCLZip確實有被啟用了PHP的zlib的擴充套件的依賴。

 

2.2。安裝說明
安裝是很容易的:Classes資料夾中的內容複製到你的應用程式源目錄中的任何位置。

例:
如果您的Web根目錄是/ var / WWW /你可能要建立一個名為/ var / WWW /類子/和檔案複製到該資料夾​​,所以你最終獲得的檔案:

/var/www/Classes/PHPExcel.php
/var/www/Classes/PHPExcel/Calculation.php
/var/www/Classes/PHPExcel/Cell.php

 

2.3。入門
上手的好方法是執行一些包括在下載的測試。

“Examples”資料夾複製旁邊的“類”Classes,所以你最終獲得的資料夾:

/var/www/ Examples/01simple.php
/var/www/ Examples/02types.php

 


啟動您的瀏覽器指向測試指令碼執行測試

http://example.com/ Examples/01simple.php
http://example.com/ Examples/02types.php

注意:可能需要修改包括/需要在每個測試指令碼如果從上方的“類”的資料夾被不同地命名的開始語句。

2.4。有用的連結和工具
還有一些連結和工具使用PHPExcel開發時,這是非常有用的。請參考PHPExcel CodePlex上頁為下面的列表的更新版本。
2.4.1。的OpenXML / SpreadsheetML中
»檔案格式的文件
http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm

 

»OpenXML的解釋電子書
http://openxmldeveloper.org/articles/1970.aspx

»Microsoft Office相容包的Word,Excel和PowerPoint 2007檔案格式
http://www.microsoft.com/downloads/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en

»OpenXML的包瀏覽器
http://www.codeplex.com/PackageExplorer/
2.4.2。經常問的問題
向上最新F.A.Q.對於PHPExcel頁面可以http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=FAQ&referringTitle=Requirements找到。
似乎有與字元編碼問題...
它必須使用UTF-8編碼的PHPExcel所有文字。如果指令碼使用不同的編碼方式,那麼你可以將PHP的的iconv()或mb_convert_encoding()函式的文字。
PHP抱怨ZipArchive未找到
確保您滿足所有要求,尤其是php_zip擴充套件應該啟用

讀取或寫入使用Zip壓縮(Excel2007中和oocalc裡)格式時,ZipArchive類時才需要。因為1.7.6版本PCLZip庫已經捆綁PHPExcel作為替代ZipArchive類。

這可以通過呼叫啟用:
PHPExcel_Settings :: setZipClass(PHPExcel_Settings :: PCLZIP);
之前呼叫Excel2007中作家的儲存方法。

您可以恢復使用ZipArchive致電:
PHPExcel_Settings :: setZipClass(PHPExcel_Settings :: ZIPARCHIVE);

目前,這種只允許你寫的Excel2007檔案,而不需要ZipArchive(不讀的Excel2007或oocalc裡)
Excel 2007中無法開啟通過PHPExcel_Writer_2007在Windows上生成的檔案
“創先爭優發現'*的.xlsx”無法讀取內容。你想恢復此工作簿的內容?如果您信任該工作簿的來源,請單擊是。“

建立ZIP檔案時,某些舊版本的Windows上的5.2.x php_zip擴充套件包含一個錯誤。可在http://snaps.php.net/win32/php5.2-win32-latest.zip找到的版本應該在任何時候都工作。

此外,升級到至少5.2.9 PHP應該解決的問題。

如果你無法找到ZipArchive的全新副本,那麼你就可以寫的Excel2007檔案時,如上所述使用PCLZip庫作為替代。
致命錯誤:用盡XXX位元組允許記憶體大小(試圖分配YYY位元組)ZZZ線上AAA
PHPExcel持有電子表格的“記憶體”的顯示,所以它是由PHP的記憶體限制的約束。提供給PHP記憶體可以提高編輯您的php.ini檔案中memory_limit的指令的值,或使用的ini_set('memory_limit的','128M')你的程式碼中(ISP許可)。

一些讀者和作家比別人快,他們也使用的記憶體量不同。你可以找到的相對效能和記憶體使用為不同的讀者和作家的一些跡象表明,在不同版本的PHPExcel,在討論板。

如果您已經增加了記憶體到最大,還是不能改變你的記憶體限制,那麼在董事會的討論描述了一些可用於減少使用PHPExcel指令碼的記憶體使用的方法。
保護我的工作不工作?
當你使用任何的工作表保護功能(例如,小區範圍內的保護,禁止刪除行,...),請確保您啟用工作表的安全性。這可以例如進行這樣的:

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);

特徵X不是與PHPExcel_Reader_Y / PHPExcel_Writer_Z工作
並非PHPExcel的所有功能在所有的讀/寫器類中實現的。這主要是由於底層庫不支援特定的功能,或者不執行有一個特定的功能。

例如自動篩選不在PEAR Spreadsheet_Excel_writer,這是我們Excel5作家的基礎上實現的。

我們正在逐步建立的功能列表,用不同的讀者和作家來支援他們在一起,在/文件資料夾中的“功能交叉Reference.xls”檔案。
似乎公式不使用相容包在Excel2003中計算?
這是相容包的正常行為,Excel2007中正確顯示這一點。使用PHPExcel_Writer_Excel5如果你真的需要計算值,或力Excel2003中重新計算。
設定列寬是不是100%準確
試圖設定列寬,我遇到一個問題。當我在Excel中開啟檔案時,實際寬度為0.71低於它應該是。

簡短的回答是,PHPExcel使用,其中包括填充的措施。請參見:“設定列寬”的更多細節。
如何使用PHPExcel與我的框架
»有關於Joomla的留言板上使用PHPExcel與Joomla一些指令
»諮詢頁面上的Yii框架使用PHPExcel
»麵包店有一定的輔助類的閱讀和內與CakePHP的寫作PHPExcel
»整合PHPExcel到Kohana的http://www.flynsarmy.com/2010/07/phpexcel-module-for-kohana-3/和ИнтеграцияPHPExcelиKohana的框架
»使用PHPExcel用TYPO3
自動載入的Joomla干擾PHPExcel自動裝彈機
由於peterrlynch針對以下意見的PHPExcel自動載入機和Joomla自動載入磁帶機之間解決問題

2.4.3。教程
»英語PHPExcel教程
http://openxmldeveloper.org
»法國PHPExcel教程
http://g-ernaelsten.developpez.com/tutoriels/excel2007/
»俄羅斯PHPExcel部落格文章
http://www.web-junior.net/sozdanie-excel-fajjlov-s-pomoshhyu-phpexcel/
»在日語介紹PHPExcel http://journal.mycom.co.jp/articles/2009/03/06/phpexcel/index.html

 

3.體系結構
3.1。概要



3.2。延遲載入器
PHPExcel實現一個自動裝載機或“懶惰​​裝載機”,這意味著它是不必要的,包括內PHPExcel每個檔案。它是隻需要包括初始PHPExcel類檔案,然後自動載入器將包括其他類檔案有需要時,

所以只有那些實際上是由你的指令碼需要這些檔案將被載入到記憶體中的PHP。這樣做的主要好處是,它減少了PHPExcel本身的記憶體佔用,因此,它使用較少的記憶體PHP。

如果自己的指令碼已經定義了一個自動載入功能,那麼這可能是由PHPExcel自動載入功能覆蓋。例如,如果您有:

function __autoload($class) {
...
}

Do this instead:

function myAutoload($class) {
...
}
spl_autoload_register('myAutoload');

自動載入機將然後PHPExcel自動載入機並存。
3.3。電子表格在記憶體
PHPExcel的結構是建立在一種方式,它可作為一個記憶體中的電子表格。這意味著,如果一個人會想建立一個與PHPExcel的物件模型進行通訊的電子表格的基於Web的看法,他將只需要編寫前端程式碼。

就像桌面電子表格軟體,PHPExcel表示含有一個或多個表,其中包含與資料,公式,影象的細胞的電子表格,...
3.4。讀者和作家
就其本身而言PHPExcel不提供的功能從讀取或寫入到一個持久的電子表格(在磁碟上或在資料庫中)。為了提供該功能,閱讀器和可以使用作家。

預設情況下,PHPExcel包提供了一些讀者和作家,包括一個用於Open XML電子表格格式(又名Excel 2007檔案格式)。

你是不是僅限於預設的讀者和作者,因為你可以自由地實現自定義類的PHPExcel_Writer_IReader和PHPExcel_Writer_IWriter介面



 

3.5。流利的介面
PHPExcel支援大多數地區的流暢介面。這意味著你可以很容易地“產業鏈”,而不需要一個新的PHP語句呼叫特定的方法。例如,以下面的程式碼:

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");

 

這可以被改寫為:

$objPHPExcel->getProperties()
->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");

使用流利的介面並不需要
流利的介面已經實施提供了方便的程式設計API。它們的使用不是必需的,但可以讓你的程式碼更易於閱讀和維護。它也可以提高效能,因為你是減少呼叫PHPExcel方法的總數量。

至於為什麼翻譯成"流利的介面"這個翻譯並不好,目前沒有找到比較好的翻譯,後面更新

4.建立電子表格
4.1。該PHPExcel類
該PHPExcel類是PHPExcel的核心。它包含的工作表所載,文件的安全性設定,引用和檔案元資料。

為了簡化PHPExcel概念:PHPExcel類代表工作簿。
通常情況下,你會在以下兩種方式之一,無論是從電子表格檔案載入它,或手動建立它建立一個工作簿。第三個選擇,雖然不常用,被克隆已使用前兩種方法之一建立的現有工作簿。
4.1.1。從檔案載入工作簿
提供給他們讀入PHPExcel物件所支援的不同的電子表格格式和選項的詳細資訊將在充分說明“PHPExcel使用者文件 - 讀電子表格檔案”的檔案。

 

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

/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

4.1.2。建立一個新的工作簿
如果你想建立一個新的工作簿,而不是裝載一個來自檔案,然後你只需要例項化它作為一個新的PHPExcel物件。


/ **建立一個新的PHPExcel物件** /
$ objPHPExcel =新PHPExcel();


新工作簿總是會用一個工作表中建立。
4.2。配置設定
一旦你已經包含在指令碼中的PHPExcel檔案,但例項化一個物件PHPExcel或載入工作簿檔案之前,有一些可設定的配置選項,這將影響到指令碼的後續行為。
4.2.1。細胞快取
PHPExcel使用大約1K /單元的平均工作表中的,那麼大的工作簿會很快用完可用記憶體。細胞快取提供了一種機制,允許PHPExcel保持的儲存器中的較小尺寸的單元的物件,在磁碟上,或在APC,記憶體快取或WINCACHE,而不是在PHP儲存器。這使您可以減少大量的工作簿的記憶體使用量,雖然以速度為代價來訪問單元格資料。
預設情況下,PHPExcel仍持有記憶體中的所有單元格物件,但您可以指定替代方案。為了使細胞快取,必須呼叫PHPExcel_Settings :: setCacheStorageMethod()方法,傳遞您希望使用快取記憶體方法。

$ cacheMethod = PHPExcel_CachedObjectStorageFactory :: cache_in_memory;
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod);

setCacheStorageMethod()將(如果試圖未啟用時APC快取,以APC為例)返回成功一個布林值真,假失敗。

一個單獨的快取保持每個工作表,在工作表的基礎上的快取記憶體方法和設定您已經配置例項化時自動建立。一旦你開始讀一工作簿或已經建立了第一個工作表,不能更改配置設定。

目前,以下快取記憶體方法是可用的。

PHPExcel_CachedObjectStorageFactory :: cache_in_memory;
預設。如果不初始化任何快取記憶體的方法,則這是PHPExcel將使用的方法。 Cell物件保持在PHP記憶體截至目前。
PHPExcel_CachedObjectStorageFactory :: cache_in_memory_serialized;
使用這種快取記憶體方法,將細胞在PHP儲存器保持為序列化物件的陣列,從而降低了以最小的效能開銷的儲存器佔用。
PHPExcel_CachedObjectStorageFactory :: cache_in_memory_gzip;
像cache_in_memory_serialized,此方法包含在PHP儲存單元作為序列化物件的陣列,但gzip壓縮以減少儲存器的使用仍進一步,雖然訪問讀或寫一個單元是稍微慢一些。
PHPExcel_CachedObjectStorageFactory :: cache_igbinary;
使用PHP的igbinary副檔名(如果可用)將序列號儲存單元的物件。這通常是速度更快,使用比標準的PHP序列化更少的記憶體,但在大多數主機環境提供。
PHPExcel_CachedObjectStorageFactory :: cache_to_discISAM;
當使用cache_to_discISAM所有單元都在一個臨時磁碟檔案舉行,只有一個索引到它們的位置中保持在PHP儲存器該檔案。這比任何的cache_in_memory方法慢,但是顯著減少了儲存器佔用。預設情況下,將PHPExcel使用PHP的臨時目錄快取檔案,但你可以初始化cache_to_discISAM時指定一個不同的目錄。
$ cacheMethod = PHPExcel_CachedObjectStorageFactory :: cache_to_discISAM;
$cacheSettings = array( 'dir' => '/usr/local/tmp'
);
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod,$ cacheSettings);
當你的指令碼終止臨時磁碟檔案被自動刪除。
PHPExcel_CachedObjectStorageFactory :: cache_to_phpTemp;
像cache_to_discISAM,使用cache_to_phpTemp當所有的細胞都保持在php://臨時I / O流,只有一個索引來保持在PHP的記憶體其位置。在PHP,PHP的:在儲存器//儲存器封裝儲存資料:PHP://溫度行為類似,但使用的臨時檔案儲存中的資料達到一定儲存器限制時。預設值是1 MB,但初始化cache_to_phpTemp時,你可以改變這一點。
$ cacheMethod = PHPExcel_CachedObjectStorageFactory :: cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize' => '8MB'
);
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod,$ cacheSettings);
PHP的:當你的指令碼終止//臨時檔案被自動刪除。
PHPExcel_CachedObjectStorageFactory :: cache_to_apc;
當使用cache_to_apc,細胞的物件被保持在APC與只在PHP儲存器保持以確定細胞存在的指標。預設情況下,600秒的APC快取超時使用時,應該是足夠對於大多數應用:雖然有可能初始化cache_to_APC當改變這一點。
$ cacheMethod = PHPExcel_CachedObjectStorageFactory :: cache_to_APC;
$cacheSettings = array( 'cacheTime' => 600
);
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod,$ cacheSettings);
當指令碼終止所有條目將來自APC被清除,而不管cacheTime值的,因此,使用這個機制,它不能被用於持久儲存。
PHPExcel_CachedObjectStorageFactory :: cache_to_memcache
當使用cache_to_memcache,細胞的物件被保持在記憶體快取僅在PHP儲存器保持以確定細胞存在的指標。
預設情況下,PHPExcel查詢本地主機上一個記憶體快取伺服器在埠11211.它還設定為600秒記憶體快取超時限制。如果您在不同的伺服器或埠上執行的memcache,那麼您可以在初始化cache_to_memcache修改這些預設值:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;
$cacheSettings = array( 'memcacheServer' => 'localhost',
'memcachePort' => 11211,
'cacheTime' => 600
);
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod,$ cacheSettings);
當指令碼終止所有條目將從記憶快取被清除,而不管cacheTime值的,因此,使用這個機制,它不能被用於持久儲存。
PHPExcel_CachedObjectStorageFactory :: cache_to_wincache;
當使用cache_to_wincache,細胞的物件被保持在WINCACHE僅在PHP儲存器保持以確定細胞存在的指標。預設情況下,600秒WINCACHE快取超時使用時,應該是足夠對於大多數應用:雖然有可能初始化cache_to_wincache當改變這一點。
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_wincache;
$cacheSettings = array( 'cacheTime' => 600
);
PHPExcel_Settings :: setCacheStorageMethod($ cacheMethod,$ cacheSettings);
當指令碼終止所有條目將從WINCACHE被清除,而不管cacheTime值的,因此,使用這個機制,它不能被用於持久儲存。
PHPExcel_CachedObjectStorageFactory :: cache_to_sqlite;
使用一個SQLite 2記憶體資料庫快取單元格資料。不像其他的快取記憶體方法,既不是細胞,也不是指數保持在PHP的記憶體 - 索引資料庫表,就沒有必要持有PHP記憶體中的任何指標 - 使這個最記憶體效率的電池快取記憶體方法。
PHPExcel_CachedObjectStorageFactory :: cache_to_sqlite3;
使用一個SQLite 3記憶體資料庫快取單元格資料。不像其他的快取記憶體方法,既不是細胞,也不是指數保持在PHP的記憶體 - 索引資料庫表,就沒有必要持有PHP記憶體中的任何指標 - 使這個最記憶體效率的電池快取記憶體方法。

4.2.2。語言/區域設定
一些本土化元素都被列入PHPExcel。您可以通過更改設定設定一個區域。以區域設定為葡萄牙語(巴西),需要使用:

$locale = 'pt_br';
$validLocale = PHPExcel_Settings::setLocale($locale);
if (!$validLocale) {
echo 'Unable to set locale to '.$locale." - reverting to en_us<br />\n";
}

如果巴西葡萄牙語語言檔案不可用,那麼葡萄牙將代替啟用:如果葡萄牙語言檔案不可用,那麼的setLocale()方法會返回一個錯誤,和美國英語(EN_US)設定將在整個使用。
可用一旦一個區域的功能的更多細節已定,包括語言,目前支援的語言環境的列表,可以在公式4.5.5節的區域設定來找到。
4.3。清除從記憶體工作簿
該PHPExcel物件包含迴圈引用(例如,工作簿連結到工作表和工作表連結到其父母的工作簿),這會導致出現問題時,PHP將試圖從記憶體中清除的物件時,他們都沒有設定(),或在年底當他們在本地範圍內的功能。這樣做的結果是“記憶體洩漏”,它可以很容易地使用大量的PHP有限的記憶體。
這隻能以手動方式解決:如果您需要取消設定一個工作簿,然後你還需要“破”在這樣做之前,這些迴圈引用。 PHPExcel為此提供的disconnectWorksheets()方法。

$objPHPExcel->disconnectWorksheets();
unset($objPHPExcel);

4.4。工作表
有一個工作表單元格,公式的,影象,圖形的集合,......它擁有必要的表示為電子表格的工作表的所有資料。

當您從電子表格檔案載入的工作簿,將其所有現有工作表被載入(除非指定只有特定的表應該被載入)。當您從非電子表格檔案載入(如CSV或HTML檔案),或從電子表格格式,不要被名稱(如SYLK)確定工作表,然後一個名為“工作表”一個工作表將建立一個包含從資料該檔案。
當你例項化一個新的工作簿,PHPExcel將與所謂的“工作表”一個工作表中建立它。
該getSheetCount()方法會告訴你在工作簿的工作表數;而getSheetNames()方法將返回工作簿中的所有工作表,在其中他們的“標籤”將在MS Excel(或其他適當的電子表格程式)開啟時顯示的順序索引列表。

單個的工作表可以通過名稱來訪問,或通過在工作簿中的索引位置。索引位置表示當工作簿在MS Excel(或其他適當的電子表格程式)中開啟每個工作表“標籤”顯示的順序。為了通過它的索引訪問片,使用getSheet()方法。
//獲取工作簿中的第二板
//注意紙張從0索引
$ objPHPExcel-> getSheet(1);

如果不指定表的索引,那麼第一個工作表將被退回。

方法也存在讓您重新排序工作表在工作簿中。

要通過名稱訪問表,使用getSheetByName()方法,指定您要訪問的工作表的名稱。
//獲得所謂的“工作表1”工作表

$objPHPExcel->getSheetByName('Worksheet 1');

另外,一個工作表總是在當前活動工作表,您可以直接訪問。當前活動工作表是一個當工作簿在MS Excel(或其他適當的電子表格程式)開啟,這將是積極的。
//獲得當前活動工作表

$objPHPExcel->getActiveSheet();

使用此方法建立一個新的工作表將被稱為“工作表”或“工作表<N>”,其中“<N>”是最低數量可以保證,標題是獨一無二的。

或者,您可以例項化一個新的工作表(設為不管你選擇的名稱),然後將其插入到使用addSheet()方法,您的工作簿。
//建立一個名為“我的資料”的新的工作表

$myWorkSheet = new PHPExcel_Worksheet($objPHPExcel, 'My Data');


//附加“我的資料”工作作為PHPExcel物件中的第一個工作表


$objPHPExcel->addSheet($myWorkSheet, 0);
如果不指定為第二個引數的索引位置,則新的工作表將在最後一個現有工作表後新增。
4.4.2。複製工作表
同一工作簿中的表可以通過建立要複製工作表的副本,然後使用addSheet()方法插入克隆到工作簿中進行復制。

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

在這兩種情況下,這是開發商的責任,確保工作表名稱不重複。如果您嘗試複製工作表會導致重複名稱PHPExcel會丟擲異常。
4.4.3。刪除工作表
您可以從一個工作簿,其索引位置確定刪除工作表,使用removeSheetByIndex()方法

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

如果當前活動工作表被刪除,則表在先前索引位置將成為當前活動工作表。

4.5。訪問單元格

在PHPExcel工作訪問單元應該是非常簡單的。本主題列出了一些選項來訪問一個單元格。
4.5.1。通過設定座標單元格值
通過設定座標單元格值可以使用工作表的setCellValue方法來實現。
$objPHPExcel->getActiveSheet()->setCellValue('B8', 'Some value');
4.5.2。通過檢索協調細胞
檢索的小區的值,細胞應首先從使用getCell方法的工作表中檢索。單元格的值可以再次使用下面的程式碼行閱讀:
$objPHPExcel->getActiveSheet()->getCell('B8')->getValue();

如果你需要一個單元格的計算值,使用下面的程式碼。這是在35年4月4日進一步解釋。


$objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue();


4.5.3。通過行和列設定單元格值
通過設定座標單元格值可以使用工作表的setCellValueByColumnAndRow方法來實現。
//設定單元格B8
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 8, 'Some value');
4.5.4。由列和行中檢索的小區
檢索的小區的值,細胞應首先從使用getCellByColumnAndRow方法的工作表中檢索。單元格的值可以再次使用下面的程式碼行閱讀:
//獲取小區B8
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();

如果你需要一個單元格的計算值,使用下面的程式碼。這是在35年4月4日進一步解釋
//獲取小區B8

$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getCalculatedValue();

 

 4.5.4。由列和行中檢索的小區

檢索的小區的值,細胞應首先從使用getCellByColumnAndRow方法的工作表中檢索。單元格的值可以再次使用下面的程式碼行閱讀:

//獲取小區B8

$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();

 

如果你需要一個單元格的計算值,使用下面的程式碼。這是在35年4月4日進一步解釋

//獲取小區B8

$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getCalculatedValue();

 

 

4.5.4。由列和行中檢索的小區
檢索的小區的值,細胞應首先從使用getCellByColumnAndRow方法的工作表中檢索。單元格的值可以再次使用下面的程式碼行閱讀:
//獲取小區B8
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();

如果你需要一個單元格的計算值,使用下面的程式碼。這是在35年4月4日進一步解釋
//獲取小區B8
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getCalculatedValue();

 

4.5.5。迴圈細胞
使用迭代器迴圈細胞
迴圈細胞的最簡單方法是使用迭代器。使用迭代器,可以使用的foreach迴圈的工作表,行和單元格。

下面是我們讀到的工作表中所有的值,並在表中顯示它們的例子。

<?php
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
echo '<tr>' . "\n";

$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
// even if it is not set.
// By default, only cells
// that are set will be
// iterated.
foreach ($cellIterator as $cell) {
echo '<td>' . $cell->getValue() . '</td>' . "\n";
}

echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>


請注意,我們已經設定單元格迭代器的setIterateOnlyExistingCells()為false。這使得這個迴圈的所有單元格,即使他們沒有之前設定。

 

細胞迭代將返回null作為細胞如果未在工作表中設定。
設定單元格迭代器的setIterateOnlyExistingCells()設定為false將迴圈在工作表中,可以在那一刻可用的所有單元格。這將需要來建立新的細胞,提高記憶體的使用!只使用它,如果它被用於迴圈是可能可用的所有細胞。
使用索引迴圈細胞
人們可以使用的可能性由列和行索引等(0,1)來訪問元值而不是“A1”用於讀取和在迴圈中寫單元值。

 

注意:在PHPExcel列索引,而行的索引是基於1從零開始。這意味著'A1'〜(0,1)

 

下面是我們讀到的工作表中所有的值,並在表中顯示它們的例子。

<?php
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

objPHPExcel=

objReader->load("test.xlsx");
objWorksheet=

objPHPExcel->getActiveSheet();

highestRow=

objWorksheet->getHighestRow(); // e.g. 10
highestColumn=

objWorksheet->getHighestColumn(); // e.g 'F'

highestColumnIndex=PHPExcelCell::columnIndexFromString(

highestColumn); // e.g. 5

echo '<table>' . "\n";
for (row=1;

row <= highestRow;++

row) {
echo '<tr>' . "\n";

for (col=0;

col <= highestColumnIndex;++col) {
echo '<td>' . objWorksheet−>getCellByColumnAndRow(

col, $row)->getValue() . '</td>' . "\n";
}

echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>

 

 

4.5.6。使用值粘合劑,以方便資料錄入
在內部,PHP​​Excel使用預設PHPExcel_Cell_IValueBinder實現(PHPExcel_Cell_DefaultValueBinder),以確定使用細胞的setValue()方法輸入的資料的資料型別。

或者,PHPExcel的預設行為可以被修改,使用者可以方便地輸入資料。例如,一個PHPExcel_Cell_AdvancedValueBinder類是否存在。它會自動轉換輸入為字串格式是否正確,還設定單元格的樣式資訊百分比和日期。下面的例子演示瞭如何設定的值粘結劑PHPExcel:

 

/** PHPExcel */
require_once 'PHPExcel.php';

/** PHPExcel_Cell_AdvancedValueBinder */
require_once 'PHPExcel/Cell/AdvancedValueBinder.php';

/** PHPExcel_IOFactory */
require_once 'PHPExcel/IOFactory.php';

// Set value binder
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

 

//新增一些資料,類似一些不同的資料型別

$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Percentage value:');
$objPHPExcel->getActiveSheet()->setCellValue('B4', '10%');
 //轉換為0.1,並設定個單元格樣式
$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Date/time value:');
$objPHPExcel->getActiveSheet()->setCellValue('B5', '21 December 1983');

       //轉換為日期,並設定日期格式的單元格樣式

 

建立自己的價值粘結劑是容易的。
當需要先進值繫結,可以實現PHPExcel_Cell_IValueBinder介面或延長PHPExcel_Cell_DefaultValueBinder或PHPExcel_Cell_AdvancedValueBinder類。
4.6。 PHPExcel食譜
以下幾頁為您提供一些廣泛使用的PHPExcel食譜。請注意,這些不提供具體的PHPExcel API函式的完整文件,而只是一個凸點,讓你開始。如果您需要特定的API函式,請​​參閱API文件。

例如,4.4.7設定工作表的頁面方向和大小覆蓋設定頁面方向為A4。其他紙張格式,如美國信,都沒有包括在本文件中,但PHPExcel API文件中獲得。
4.6.1。設定電子表格的元資料
PHPExcel允許一種簡單的方法來設定電子表格中的元資料,使用文件屬性訪問。電子表格的元資料可以在一個檔案儲存庫或文件管理系統中查詢特定的文件非常有用。例如微軟SharePoint使用文件元資料搜尋在其文件列表特定文件。

設定電子表格的元資料方法如下:

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");

 

4.6.2。設定電子表格的活動表
下面的程式碼行設定活動工作表索引到第一頁:
$ objPHPExcel-> setActiveSheetIndex(0);
4.6.3。寫日期或時間進入細胞
在Excel中,日期和時間儲存為計數自1900-01-01經過的天數數值。例如,日期“2008-12-31”表示為39813.您可以通過在單元格中輸入該日期,之後換號格式為“一般”,所以真正的數值表現在​​Microsoft Office Excel中驗證這一點。同樣,“凌晨3:15”表示為0.135417。

PHPExcel可與UST(國際標準時間)日期和時間值,但不執行內部轉換;所以它是由開發者確保傳遞到日期/時間轉換函式值是UST。

在單元格中寫入一個日期值由2行程式碼。選擇適合你的最好的方式。這裡有些例子:

/* PHPExcel_Cell_AdvanceValueBinder required for this sample */
require_once 'PHPExcel/Cell/AdvancedValueBinder.php';

// MySQL-like timestamp '2008-12-31' or date string
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
$objPHPExcel->getActiveSheet()
->setCellValue('D1', '2008-12-31');
$objPHPExcel->getActiveSheet()
->getStyle('D1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH)

// PHP-time (Unix time)
$time = gmmktime(0,0,0,12,31,2008); // int(1230681600)
$objPHPExcel->getActiveSheet()
->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel($time));
$objPHPExcel->getActiveSheet()
->getStyle('D1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH)

// Excel-date/time
$objPHPExcel->getActiveSheet()
->setCellValue('D1', 39813)
$objPHPExcel->getActiveSheet()
->getStyle('D1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH)

 

用於輸入日期的所有上述方法得到相同的結果。 PHPExcel_Style_NumberFormat提供了大量的預定義的日期格式。

該PHPExcel_Shared_Date :: PHPToExcel()方法也將與PHP DateTime物件工作。

同樣,時間(或日期和時間值),可以以同樣的方式輸入:只記得使用適當的格式程式碼。

筆記:
1.請參見“使用值粘合劑,以方便資料錄入”來了解更多關於在第一個例子中使用的AdvancedValueBinder。

2.在以前的版本中PHPExcel的直至幷包括1.6.6,當一個細胞有個約會般的數字格式程式碼,它有可能直接進入使用整數PHP時間日期無須轉換到Excel日期格式。與PHPExcel 1.6.7起這已不再支援。

3. Excel中也可以在基於1904年日曆(預設工作簿儲存在Mac)進行操作。通常情況下,你不必使用PHPExcel時,擔心這個。

 

4.6.4。寫了公式的單元格
裡面的Excel檔案,公式總是儲存它們將出現在英文版本的Microsoft Office Excel中,並在內部PHPExcel處理所有的公式在這種格式。這意味著下面的規則成立:
•小數分隔符為“。” (期)
•函式引數的分隔符是','(逗號)
•矩陣行分隔符是“;” (分號)
•英語函式名稱必須使用
這是無論哪個Microsoft Office Excel中的語言版本可能已被用於建立Excel檔案。

當最終簿被使用者開啟,Microsoft Office Excel中將會顯示根據應用語言式照顧。轉換由應用程式照顧!

下面的程式碼行寫入公式“=IF(C4>500,"profit","loss")”進入小區B8。需要注意的是公式必須以“=”開始進行PHPExcel承認這是一個公式。

如果你想要寫一個字串用“=”的小區開始,那麼你應該使用setCellValueExplicit()方法。

$objPHPExcel->getActiveSheet()
->setCellValueExplicit('B8',
'=IF(C4>500,"profit","loss")',
PHPExcel_Cell_DataType::TYPE_STRING
);

單元格的公式可以再次使用下面的程式碼行閱讀

 

formula=

objPHPExcel->getActiveSheet()->getCell('B8')->getValue();

如果你需要一個單元格的計算值,使用下面的程式碼。這是在in 4.4.35.進一步解釋。

value=

objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue();

4.6.5。為公式區域設定
一些本土化元素都被列入PHPExcel。您可以通過更改設定設定一個區域。設定本地化俄羅斯可以使用:

$locale = 'ru';
validLocale=PHPExcelSettings::setLocale(

locale);
if (!$validLocale) {
echo 'Unable to set locale to '.$locale." - reverting to en_us<br />\n";
}

如果俄語檔案不可用,給setlocale()方法會返回一個錯誤,和英語的設定將在整個使用。

一旦您設定一個區域,你可以翻譯從其內部英語編碼的公式。

formula=

objPHPExcel->getActiveSheet()->getCell('B8')->getValue();
$translatedFormula =
PHPExcel_Calculation::getInstance()->_translateFormulaToLocale($formula);

您也可以使用函式名和適當的定義的區域設定引數分割建立一個公式;然後設定單元格值之前它翻譯成英文:

$formula = '=ДНЕЙ360(ДАТА(2010;2;5);ДАТА(2010;12;31);ИСТИНА)';
$internalFormula =
PHPExcel_Calculation::getInstance()->translateFormulaToEnglish($formula);
objPHPExcel−>getActiveSheet()−>setCellValue(′B8′,

internalFormula);

 

目前,公式翻譯只轉換函式名,常量真假,以及函式引數分隔符。

 

目前,下列區域設定的支援:

Language

 

Locale Code

Czech

Čeština

cs

Danish

Dansk

da

German

Deutsch

de

Spanish

Español

es

Finnish

Suomi

fi

French

Français

fr

Hungarian

Magyar

hu

Italian

Italiano

it

Dutch

Nederlands

nl

Norwegian

Norsk

no

Polish

Język polski

pl

Portuguese

Português

pt

Brazilian Portuguese

Português Brasileiro

pt_br

Russian

русский язык

ru

Swedish

Svenska

sv

Turkish

Türkçe

tr

4.6.6。在單元格中寫換行符“\ n”(ALT +“回車”)
在Microsoft Office Excel您通過點選ALT +“Enter”鍵得到一個細胞一個換行符。當你這樣做,它會自動開啟“自動換行”的單元格。

下面是如何在PHPExcel實現這一點:

 

$objPHPExcel->getActiveSheet()->getCell('A1')->setValue("hello\nworld");
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);


瞭解更多關於使用getStyle()的其他地方設定單元格。

AdvancedValuebinder.php會自動開啟“自動換行”,為細胞時,它看到了,你是在單元格中插入一個串一個換行符。就像微軟Office Excel中。嘗試這個:

require_once 'PHPExcel/Cell/AdvancedValueBinder.php';
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );

$objPHPExcel->getActiveSheet()->getCell('A1')->setValue("hello\nworld");

 

瞭解更多關於AdvancedValueBinder.php別處。

 

4.6.7。明確設定單元格的資料型別
您可以通過使用細胞的setValueExplicit方法或工作表的方法setCellValueExplicit明確設定單元格的資料型別。下面是一個例子:

$objPHPExcel->getActiveSheet()->getCell('A1')->setValueExplicit('25', PHPExcel_Cell_DataType::TYPE_NUMERIC);

4.6.8。一個細胞變成可點選網址
您可以通過設定超連結屬性使細胞中的可點選的網址:

$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net');
$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net');

 

如果你想使一個超連結到另一個工作表/單元格,使用下面的程式碼:

$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net');
$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl(“sheet://'Sheetname'!A1”);

4.6.9。設定一個工作表的頁面方向和大小
設定工作表的頁面方向和大小可以用下面的程式碼行來完成:

$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

 

請注意,有可用的附加頁面設定。請參考API文件所有可能的選擇。
4.6.10。頁面設定:縮放選項
如圖所示的插圖PHPExcel的頁面設定縮放選項直接關係到在“頁面設定”對話方塊中的縮放選項。

如圖插圖PHPExcel預設值對應於MS Office Excel中的預設值

thod

initial value

calling method will trigger

Note

setFitToPage(...)

false

-

 

setScale(...)

100

setFitToPage(false)

 

setFitToWidth(...)

1

setFitToPage(true)

value 0 means do-not-fit-to-width

setFitToHeight(...)

1

setFitToPage(true)

value 0 means do-not-fit-to-height

舉例

下面是如何高大無限頁面以適應1頁寬:

$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1);
$objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0);

正如你所看到的,這是沒有必要呼叫setFitToPage(真),因為setFitToWidth(...)和setFitToHeight(...)觸發此。

如果使用setFitToWidth(),你應該在一般還指定setFitToHeight()顯式地像例子。小心依靠初始值。如果你是從PHPExcel 1.7.0升級到1.7.1凡適合到高度和適合與寬度的預設值改為0到1,這是尤其如此。
4.6.11。頁邊距
要設定頁邊距為工作表,使用此程式碼:

// 設定邊距為0.5釐米 (1英寸 = 2.54釐米)
$margin = 0.5 / 2.54;   //phpexcel 中是按英寸來計算的,所以這裡換算了一下

$objPHPExcel->getActiveSheet()->getPageMargins()->setTop($margin);
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight($margin);
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft($margin);
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom($margin);

$objPHPExcel->getPageSetup()->setFitToWidth('1');//自動填充到頁面的寬度
//$objPHPExcel->getPageSetup()->setFitToHeight('1');//自動填充到頁面的高度

注意,邊緣值在英寸指定。

4.6.12。水平中心頁/垂直
水平居中頁/垂直,可以使用下面的程式碼:

 

$objPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);
$objPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(false);

4.6.13。設定工作表的列印頁首和頁尾
設定工作表的列印頁首和頁尾可以用下面的程式碼行來完成:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&C&HPlease treat this document as confidential!');
objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' .

objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');

 

替代和格式化程式碼(從&)可以在裡面頁首和頁尾中使用。沒有在其中這些程式碼必須出現要求的順序。

以下程式碼中第一次出現輪番格式ON,第二次出現再次將其關閉:

» Strikethrough
» Superscript
» Subscript

標和下標不能同時在同一時間開啟。以先到者為準勝其他被忽略,而第一接通。

下面的程式碼由Excel2007的支援:

 

 

&L

Code for "left section" (there are three header / footer locations, "left", "center", and "right"). When two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the order of appearance, and placed into the left section.

&P

Code for "current page #"

&N

Code for "total pages"

&font size

Code for "text font size", where font size is a font size in points.

&K

Code for "text font color"

 

»      RGB Color is specified as RRGGBB

»      Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade value, NN is the tint/shade value.

&S

Code for "text strikethrough" on / off

&X

Code for "text super script" on / off

&Y

Code for "text subscript" on / off

&C

Code for "center section". When two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the order of appearance, and placed into the center section.

&D

Code for "date"

&T

Code for "time"

&G

Code for "picture as background"

 

Please make sure to add the image to the header/footer:

$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing();

$objDrawing->setName('PHPExcel logo');

$objDrawing->setPath('./images/phpexcel_logo.gif');

$objDrawing->setHeight(36);

objPHPExcel−>getActiveSheet()−>getHeaderFooter()−>addImage(

objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);

&U

Code for "text single underline"

&E

Code for "double underline"

&R

Code for "right section". When two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the order of appearance, and placed into the right section.

&Z

Code for "this workbook's file path"

&F

Code for "this workbook's file name"

&A

Code for "sheet tab name"

&+

Code for add to page #

&-

Code for subtract from page #

&"font name,font type"

Code for "text font name" and "text font type", where font name and font type are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font name, it means "none specified". Both of font name and font type can be localized values.

&"-,Bold"

Code for "bold font style"

&B

Code for "bold font style"

&"-,Regular"

Code for "regular font style"

&"-,Italic"

Code for "italic font style"

&I

Code for "italic font style"

&"-,Bold Italic"

Code for "bold italic font style"

&O

Code for "outline style"

&H

Code for "shadow style"

 

 

提示
碼上表似乎勢不可擋您第一次試圖找出如何寫一些頁首或頁尾。幸運的是,還有一個更簡單的方法。讓Microsoft Office Excel中做的工作適合你。

例如,在Microsoft Office Excel中建立,你作為使用程式自身的介面所需插入​​頁首和頁尾XLSX檔案。將檔案儲存為test.xlsx。現在,採取這一檔案,並讀出用PHPExcel如下值:

$objPHPexcel = PHPExcel_IOFactory::load('test.xlsx');
objWorksheet=objPHPexcel->getActiveSheet();
var_dump($objWorksheet->getHeaderFooter()->getOddFooter());
var_dump($objWorksheet->getHeaderFooter()->getEvenFooter());
var_dump($objWorksheet->getHeaderFooter()->getOddHeader());
var_dump($objWorksheet->getHeaderFooter()->getEvenHeader());

這揭示了奇/偶頁首和頁尾的程式碼。有經驗的使用者可能會發現更容易重新命名為test.xlsx為test.zip,將它解壓縮,並直接查閱有關XL /工作表/ sheetX.xml的內容找到頁首/頁尾中的程式碼。

 

 

4.6.14。在一行或一列設定列印符
要設定列印斷線,使用下面的程式碼,它設定在10排一排休息。

$objPHPExcel->getActiveSheet()->setBreak( 'A10' , PHPExcel_Worksheet::BREAK_ROW );

下面的程式碼行設定在D列的列印突破:

$objPHPExcel->getActiveSheet()->setBreak( 'D10' , PHPExcel_Worksheet::BREAK_COLUMN );

4.6.15。列印時,顯示/隱藏網格線
顯示/隱藏網格線列印時,使用下面的程式碼:

$objPHPExcel->getActiveSheet()->setShowGridlines(true);

4.6.16。設定行/列頂部重複/左


PHPExcel可以重複特定的行/頂部/左細胞頁面。以下程式碼是如何重複行1至5中的特定的工作表的每一列印頁上的例子:

 

$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);

4.6.17。指定列印區域
要指定一個工作表的列印區域,使用下面的程式碼:

$objPHPExcel->getActiveSheet()->getPageSetup()->setPrintArea('A1:E5');

 

此外,還可以在一個工作表中的多個印刷方面:

$objPHPExcel->getActiveSheet()->getPageSetup()->setPrintArea('A1:E5,G4:M20');

 

4.6.18。設定單元格
一個單元可以用字型,邊框,填充,...樣式資訊進行格式化。例如,可以設定為紅色單元格的前景色,靠右對齊,並且邊框為黑色,粗邊框樣式。讓我們做到這一點的單元格B2:

 

$objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

$objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

$objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->getStartColor()->setARGB('FFFF0000');

Starting with PHPExcel 1.7.0 getStyle() also accepts a cell range as a parameter. For example, you can set a red background color on a range of cells:

$objPHPExcel->getActiveSheet()->getStyle('B3:B7')->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()->setARGB('FFFF0000');

 

提示
建議風格多個單元格一次,例如使用的getStyle('A1:M500“),而不是在一個迴圈中個別樣式的細胞。這相對於通過細胞迴圈和個別造型要快得多。

此外,還有一個替代的方式來設定的樣式。下面的程式碼設定單元格的風格字型加粗,右對齊,上邊框薄,漸變填充:


$styleArray = array(
'font' => array(
'bold' => true,
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
),
'borders' => array(
'top' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
),
),
'fill' => array(
'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
'rotation' => 90,
'startcolor' => array(
'argb' => 'FFA0A0A0',
),
'endcolor' => array(
'argb' => 'FFFFFFFF',
),
),
);

objPHPExcel−>getActiveSheet()−>getStyle(′A3′)−>applyFromArray(

styleArray);

 

或單元格區域:

objPHPExcel−>getActiveSheet()−>getStyle(′B3:B7′)−>applyFromArray(

styleArray);

使用陣列這種替代方法應該是更快,只要你設定多個樣式屬性執行方面。但不同的可能幾乎是可測量的,除非你有工作