0

ファイルを読み取るために PHPExcel を使い始めました。

私の最初のステップでは、ファイルの一部を取得します。これは、役に立たない別のファイルがあるためです。rangeToArray 関数がこれに役立つことがわかりました。

試しに、A12行目からY25行目まで取得してみました。

$sheetData = $objPHPExcel->getActiveSheet()->rangeToArray('A12:Y25');

これは次のようなものを返します。

array (size=14)
  0 => 
    array (size=25)
      0 => float 258500
      1 => string '#REF!' (length=5)
      2 => string 'Nº equivocado' (length=14)
      3 => string 'Nº equivocado' (length=14)
      4 => boolean false
      5 => boolean false
      6 => boolean false
      7 => boolean false
      8 => boolean false
      9 => boolean false
      10 => null
      11 => boolean false
      12 => string '#DIV/0!' (length=7)
      13 => string '166,056' (length=7)
      14 => float 0
      15 => string '11,070' (length=6)
      16 => string '1,510' (length=5)
      17 => string '12,580' (length=6)
      18 => string 'Transferencia' (length=13)
      19 => string 'Cheque' (length=6)
      20 => string '1/1/2016' (length=8)
      21 => string '1/31/2016' (length=9)
      22 => null
      23 => null
      24 => string 'EL COSTO ANUAL ES 10% SUPERIOR AL MENSUAL X 12, DEBIDO AL 10% DE COMISION DE FASCIOLI' (length=85)

しかし実際には、配列内の一部の値は、一部のセルを含む値と一致しません。

行は画像キャプチャで選択されています。これは、 rangeToArray 関数に取得しようとしているものです。

配列によって返された値が、Excel のセルである文字列と正確に一致しないことがわかったので、その特定のセルを取得しようとしました。

$sheetData = $objPHPExcel->getActiveSheet()->getCell('E12');

そして、セルの内容が変数呼び出し「calculatedValue」に格納されていることがわかりました。

object(PHPExcel_Cell)[3121]
  private 'value' => string '=IF($A12=$B12,VLOOKUP($A12,#REF!,2))' (length=36)
  private 'calculatedValue' => string 'PRINA EDIFICIO                ' (length=30)
  private 'dataType' => string 'f' (length=1)
  private 'parent' =>

次に、rangeToArray 関数を使用したセルの値が getCell 関数で「boolean false」を返し、private 'calculatedValue' => string 'PRINA EDIFICIO' (長さ = 30) として返されることがわかりました。

また、これらのセルが別の Excel から収集された値で満たされていることも確認できました。

=SI($A12=$B12;CONSULTAV($A12;'C:\wamp\www\PHPExcel\Documentation\Examples\Reader\sampleData\[BASE_RETENIDOS.xls]BASE DE DATOS'!$B$5:$I$729;2))

そのため、私の質問は、他のExcelに依存せずに取得した場合、値を文字列形式で取得できるかどうかです。

ありがとう

![Excel ファイル、取得する行] 1

4

1 に答える 1

0

PHPExcel が外部スプレッドシートまたは外部ファイルのデータにアクセスできる方法はありません。これらのデータは、Web サーバーからアクセスできる場合とできない場合があります。

関数はこれをチェックしませんgetOldCalculatedValue()が、セルには「フォールバック」オプションがあります。toArray()

getOldCalculatedValue()は、MS Excel 自体でそのセルに対して最後に計算が実行されたときの数式を含むセルから値を返します。もちろん、スプレッドシートが作成されたときに、MS Excel で計算を無効にすることができます (その場合、データが入力されていないか、計算で使用されていた可能性のある現在のデータを反映していない古い値が含まれています。また、外部ファイルのデータに依存している場合は、正確な計算結果ではなくなり、信頼性が非常に低くなる可能性があります。

calculatedValueこれは、セルのプロパティに格納される値です。

于 2016-01-14T19:45:25.557 に答える