關於「PHPOffice」的使用範例 [論壇 - Ubuntu 程式設計]
正在瀏覽:
1 名遊客
關於「PHPOffice」的使用範例 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 35
HP : 172 / 861
![]() |
## PHPOffice / PhpSpreadsheet
昨天參與下面這個討論 * https://www.facebook.com/groups/ubuntu.zh.hant/permalink/2553986081323365/ 想到這之前相關的討論 * https://www.facebook.com/groups/ubuntu.zh.hant/permalink/2480940128627961/ * https://www.facebook.com/groups/ubuntu.zh.hant/permalink/2486647224723918/ 那時候有寫一些範例,放在「GitHub」上, 剛討論的時候,想到有些使用技巧,可以整理過來,給有類似需求的人一個參考和探索的起點。 之前寫的「PHPOffice/PhpSpreadsheet」範例,是放在「demo-php-office / demo-php-spreadsheet 剛討論的時候,又寫另一個範例在「demo-case/filter-some-row/use-php-office」。 ================================================================================ 後記: 2019-10-03 為了回覆「使用LibreOffice Calc來編輯中文詞彙接龍的可能性?」, 寫了另一個範例「demo-php-office-for-read-dict-db」。
2019/4/14 0:43
|
||||||||||
![]() |
回覆: 關於「PHPOffice」的使用範例 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 35
HP : 172 / 861
![]() |
一開始從下面這個討論
https://www.facebook.com/groups/ubuntu.zh.hant/permalink/2480940128627961/ 了解到有「localc --convert-to」這個功能 以下提到的範例,可以在「demo-php-office/demo-convert-to/demo-ods-to-csv-filter-options」找到 ================================================================================ ## 範例: 從 ods 轉成 csv
之前寫在「test-0010.sh」。 ================================================================================ ## 範例: 從 csv 轉成 ods
之前寫在「test-0020.sh」。 ================================================================================ 接著在下面的討論中,了解到從「ods」轉「csv」可以保留公式 * https://www.facebook.com/groups/ubuntu.zh.hant/permalink/2486647224723918/ 一開始我用「LibreOffice」的圖形界面操作,發現是可以的, 後來就在想指令要怎麼下, 所以我又做了一點探索,發現到「Filter Options」。 所以要保留公式的下法如下
之前寫在「test-0060.sh」。 ================================================================================ 其他的範例,就請參考「demo-php-office/demo-convert-to/demo-ods-to-csv-filter-options/*.sh」。 另外還有一些範例,是先轉成「csv」,對「csv」做一些合併或過濾,然後再轉回「ods」。 可以在下面兩個地方找到 * demo-php-office/demo-case/filter-some-row * demo-php-office/demo-convert-to ================================================================================ 待續...
2019/4/14 0:46
|
||||||||||
![]() |
回覆: 關於「PHPOffice」的使用範例 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 35
HP : 172 / 861
![]() |
在討論的時候,
有提到另一種方式,不是透過「PHPOffice / PhpSpreadsheet」處理「ods」。 而是先透過「localc --convert-to」, 先將「ods」轉成「csv」,然後處理「csv」,最後再將「csv」轉回「ods」。 在處理csv資料時,其中有一種方式是採用「awk」來操作, 可以當作案例學習,當作學習「awk」的起點,所以特別提出來。 但要注意的是,要採用「awk」的方式,下面我寫的範例,有個前提是「儲存格資料」不能有「,」。 * demo-php-office/demo-case/filter-some-row/use-awk/main.sh * demo-php-office/demo-case/filter-some-row/use-awk/main.awk 處理「csv」,還有其他種方式,其他的方式案例,請參考下面的網址 * demo-php-office/demo-case/filter-some-row * demo-php-office/demo-convert-to ![]() ## awk 相關討論 * #3 回覆: grep 獲取 字串
2019/4/14 1:02
|
||||||||||
![]() |
回覆: 關於「PHPOffice」的使用範例 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 35
HP : 172 / 861
![]() |
更早以前
在另一個討論「#7 回覆: Unicode9.0字元一覽有感(如何透過unzip確認ODF是否有內嵌字型)」。 裡面提到的關於「odf」的操作,也可以用來操作「ods」。 先下載範例檔
================================================================================ 接著執行
顯示 Archive: demo.ods Length Date Time Name --------- ---------- ----- ---- 46 2019-04-13 05:37 mimetype 2271 2019-04-13 05:37 Thumbnails/thumbnail.png 0 2019-04-13 05:37 Configurations2/toolpanel/ 0 2019-04-13 05:37 Configurations2/menubar/ 0 2019-04-13 05:37 Configurations2/statusbar/ 0 2019-04-13 05:37 Configurations2/progressbar/ 0 2019-04-13 05:37 Configurations2/images/Bitmaps/ 0 2019-04-13 05:37 Configurations2/floater/ 0 2019-04-13 05:37 Configurations2/toolbar/ 0 2019-04-13 05:37 Configurations2/popupmenu/ 0 2019-04-13 05:37 Configurations2/accelerator/ 7296 2019-04-13 05:37 content.xml 843 2019-04-13 05:37 meta.xml 9292 2019-04-13 05:37 styles.xml 899 2019-04-13 05:37 manifest.rdf 7649 2019-04-13 05:37 settings.xml 1068 2019-04-13 05:37 META-INF/manifest.xml --------- ------- 29364 17 files ================================================================================ 也可以執行下面指令解開
顯示 Archive: demo.ods extracting: demo/mimetype extracting: demo/Thumbnails/thumbnail.png creating: demo/Configurations2/toolpanel/ creating: demo/Configurations2/menubar/ creating: demo/Configurations2/statusbar/ creating: demo/Configurations2/progressbar/ creating: demo/Configurations2/images/Bitmaps/ creating: demo/Configurations2/floater/ creating: demo/Configurations2/toolbar/ creating: demo/Configurations2/popupmenu/ creating: demo/Configurations2/accelerator/ inflating: demo/content.xml inflating: demo/meta.xml inflating: demo/styles.xml inflating: demo/manifest.rdf inflating: demo/settings.xml inflating: demo/META-INF/manifest.xml ================================================================================ 執行
顯示 demo ├── Configurations2 │ ├── accelerator │ ├── floater │ ├── images │ │ └── Bitmaps │ ├── menubar │ ├── popupmenu │ ├── progressbar │ ├── statusbar │ ├── toolbar │ └── toolpanel ├── content.xml ├── manifest.rdf ├── META-INF │ └── manifest.xml ├── meta.xml ├── mimetype ├── settings.xml ├── styles.xml └── Thumbnails └── thumbnail.png 13 directories, 8 files ================================================================================ 其他的操作,就不再贅述了,可以參考之前的討論「#7 回覆: Unicode9.0字元一覽有感(如何透過unzip確認ODF是否有內嵌字型)」。 ================================================================================ 另外之前還有一個相關的討論「#23 回覆: [自製注音輸入法表格分享]全字庫注音2016年08月份版本」 裡面有提到「phpoffice/phpexcel」,之前有些寫了一些簡單的範例:[1],[2],[3],[4] 這個應該是之前的版本,可以看到「GitHub」上的「PHPOffice/PHPExcel」是「ARCHIVED」。 還有「README.md」的說明。 現在應該要改用「PHPOffice/PhpSpreadsheet」。 也是「#1」一開始提到的。 ================================================================================ 有一個輔助工具「xmllint」,要特別一提的 可以執行
可以執行
================================================================================ 參考 https://unix.stackexchange.com/questions/56822/how-do-i-parse-namespaces-from-an-xml-file-using-xmllint-and-bash 因為「namespace」的關係,使用另外一個輔助工具「xmlstarlet」,搭配「XPath」來找資料,比較好操作。 執行
顯示
可以執行
若是使用「xmllint」, 執行
顯示
================================================================================ 另外還有一個工具「xpath」,也可以搭配「XPath」來找資料。 可以執行
顯示
可以執行
================================================================================ 而「xmllint」也可以搭配「XPath」來找資料。 舉例:
會下載一個檔案「index.html」 先執行
可以抓到,但開頭會有些parse錯誤。 但那些錯誤是在「stderr」, 下面指令會將「stdout」導向「list.txt」,所以就暫時不用理會那些錯誤訊息。
接著就可以執行下面指令,觀看「list.txt」。
================================================================================ 而「php」也有類似的工具,就請自行探索了 * https://www.php.net/manual/en/class.domxpath.php 可以搭配閱讀 * https://github.com/PHPOffice/PhpSpreadsheet/blob/master/src/PhpSpreadsheet/Reader/Ods.php * https://github.com/PHPOffice/PhpSpreadsheet/blob/master/src/PhpSpreadsheet/Reader/Csv.php ================================================================================ 以上提供參考,讓想要深究的人,有一個探索的起點 報告完畢 ![]()
2019/4/14 1:35
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.