// はじめに
LibXL PHP Extensionを使って、Excelに入力されたデータを読み取るシステムを開発していた時、数式が入力されているセルで、read(row, column)を使うと数式だけが読み取られてしまって苦戦したので備忘録です。
// 参考資料
解決方法の調査に半日ほどかけた結果、公式(?)ドキュメントみたいなものに辿り着けました。(リンク先で、ctrl+fで検索バーを出して「public function read」で検索してみてください。)
// 概念の説明
以下、ドキュメントを私なりに解釈したものになります。
controller.php
read($row, // 0から始まる行数
$column, // 0から始まる列数
&$format = null, // フォーマット(参照渡しに設定されている)
$read_formula = true // ←これが重要。デフォルトでtrue = 数式を拾う設定になっているので、
// これをfalseにすれば値を取ってくるようになる
)
// 使用方法
controller.php
// ↓ この部分は一例です。各記法に従ってください
$excelBook = new \ExcelBook();
$excelSheet = $excelBook->getSheet(0); //この0はsheet1
// ~略~
// シートから文字列を読み取る
$excelSheet->read(1, 2, $format, false); //falseに設定する
このように、read()の最後をfalseに設定することで、数式ではなく文字列を読み取ることができました。
// おわりに
お読みいただきありがとうございました。参考になったらうれしいです!