使用PHPExcel读取Excel的内部计算值

时间:2014-09-19 08:01:58

标签: php phpexcel xlsx

我使用PHPExcel库来读取Microsoft Office Excel xlsx文件。我的xlsx只有一行:

enter image description here

我试过xlsx只是一个包含xml文件的zip文件。我解压缩了我的xlsx文件

:~> unzip w2.xlsx -d w2
Archive:  w2.xlsx
  inflating: w2/_rels/.rels
  inflating: w2/docProps/app.xml
  inflating: w2/docProps/core.xml
  inflating: w2/xl/_rels/workbook.xml.rels
  inflating: w2/xl/worksheets/sheet1.xml
  inflating: w2/xl/styles.xml
  inflating: w2/xl/workbook.xml
  inflating: w2/[Content_Types].xml

并打开w2 / xl / worksheets / sheet1.xml,其中包含下一个xml(下面显示的重要部分):

<sheetData>
  <row collapsed="false" customFormat="false" customHeight="false" hidden="false"  ht="12.1" outlineLevel="0" r="1">
    <c r="A1" s="1" t="n">
      <f aca="true">RAND()*10000/100</f>
      <v>94.5569227915257</v>
    </c>
    <c r="C1" s="1"/>
  </row>
</sheetData>

似乎Excel内部存储已计算的值。 PHPExcel库是否有一些方法来读取此内部计算的值。我知道有一些方法,比如getValue(返回公式= RAND * 10000/1000),getCalculatedValue(计算值),getFormattedValue(也计算值)

2 个答案:

答案 0 :(得分:2)

PHPExcel确实有一个方法来检索任何单元格的值:

$objPHPExcel->getActiveSheet()->getCell('A1')->getOldCalculatedValue();

请注意,这不保证....如果在MS Excel中禁用了自动计算,那么它只会与上次MS Excel实际执行计算时一样有效

答案 1 :(得分:1)

关于细胞格式。如果是一般的“数字”,excel将显示8位小数。您可以像这样为phpexcel中的每个单元格设置自定义格式。

$sheet->getStyle('A1')
    ->getNumberFormat()
    ->setFormatCode('0.0000000000');

我不完全确定格式(写下O)是否正确,暂时不能尝试。 使用 getCalculatedValue 设置自定义格式后尝试获取值。

致谢:user2131419 / so

修改 哈*。只要贝克先生变成这个你可以忽略我的帖子。他的回答显然是最正确的,一如既往。 :)