0

クラスとオブジェクトを扱うとき、私はいつも混乱します。モジュールを理解しようとしているので Spreadsheet::ParseExcel、そのクラスとオブジェクトに疑問があります。

私の疑問は:

を使用して、の$parser= Spreadsheet::ParseExcel->new();オブジェクトをSpreadsheet::ParseExcel作成し、その後、のオブジェクトを作成しますSpreadsheet::ParseExcel::Workbook。オブジェクトを直接作成して解析を開始
できないのはなぜ ですか?Spreadsheet::ParseExcel::Workbook

ありがとう

4

2 に答える 2

4

Spreadsheet :: ParseExcel::Workbookのオブジェクトを直接作成して解析を開始できないのはなぜですか

これは合理的な質問であり、Spreadsheet :: ParseExcelの古いバージョンには、Spreadsheet::ParseExcel::Workbook->Parse()まさにそれを実行するメソッドがありました。(*)

ユーザーは、Excelファイルをブックとしてのみ表示する傾向があります。ただし、ファイル形式には、ワークブックデータとは別のメタデータ(作成者、作成日など)やvbaマクロなどのデータも含まれています。

そのため、ワークブックからのパーサーの論理的な分割は、ファイル内のデータの物理的な分割が原因で発生した可能性があります。

または、未定義のブックオブジェクトを返すだけでなく、ファイル解析エラーのレポートを許可した可能性があります。

いずれにせよ、他の人がインターフェースを別の方法でモデル化することを選択したかもしれませんが、それは元の作者が選択したものです。完全に直感的ではありませんが、機能します。

(*)このメソッドは、ファイルのエラーチェックを許可しないため、非推奨になりました。

于 2012-09-18T12:22:59.557 に答える
2

整数と文字列のように、どちらもスカラーであるだけの異なるタイプであるとSpreadsheet::ParseExcel考えてください。ただし、場合によっては相互作用することはできますが、乗算することはできません。Spreadsheet::ParseExcel::Workbookたとえばlength()、文字列に適用すると、整数の長さの文字列が得られます。同じように、あなたにSpreadsheet::ParseExcel::parse()与えますSpreadsheet::ParseExcel::Workbook。それらは共通の名前空間にバインドされていますが、完全に異なり、Spreadsheet::ParseExcelパーサーでSpreadsheet::ParseExcel::Workbookあり、ワークブックです。

于 2012-09-18T09:44:05.257 に答える