[英]Spreadsheet::ParseExcel module in perl
當我處理類和對象時,我總是感到困惑。 當我試圖了解Spreadsheet::ParseExcel
模塊時,我對其類和對象有一些疑問:
我的疑問是:
使用$parser= Spreadsheet::ParseExcel->new();
,我們將為Spreadsheet::ParseExcel
創建一個對象,此后,我們將為Spreadsheet::ParseExcel::Workbook
創建對象。
為什么我們不能直接為Spreadsheet::ParseExcel::Workbook
創建對象並開始解析?
謝謝
為什么我們不能直接為Spreadsheet :: ParseExcel :: Workbook創建對象並開始解析
這是一個合理的問題,在較舊版本的Spreadsheet :: ParseExcel中,有一個Spreadsheet::ParseExcel::Workbook->Parse()
方法可以做到這一點。 (*)
用戶傾向於僅將Excel文件視為工作簿。 但是,文件格式還包含與工作簿數據分開的數據,例如元數據(作者,創建日期等)和vba宏。
這樣,解析器從工作簿中進行邏輯划分的原因可能是文件中數據的物理划分。
或者可能是允許報告文件解析錯誤,而不僅僅是返回未定義的工作簿對象。
無論哪種方式,其他人可能都選擇了對接口進行建模的不同方式,但這就是原始作者選擇的方式。 它不是完全直觀,但可以。
(*)此方法現在已棄用,因為它不允許對文件進行錯誤檢查。
考慮一下Spreadsheet::ParseExcel
和Spreadsheet::ParseExcel::Workbook
就像它們只是標量的不同類型一樣,例如整數和字符串,但是,盡管它們在某些情況下可以交互,但不能說它們相乘。 例如,應用到string的length()
給出了字符串的整數長度。 以同樣的方式, Spreadsheet::ParseExcel::parse()
為您提供Spreadsheet::ParseExcel::Workbook
。 它們受公共命名空間的約束,但它們完全不同, Spreadsheet::ParseExcel
是解析器,而Spreadsheet::ParseExcel::Workbook
是工作簿。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.