我使用PHPExcel库来读取Microsoft Office Excel xlsx文件。我的xlsx只有一行:
我试过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(也计算值)
答案 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 设置自定义格式后尝试获取值。
修改强> 哈*。只要贝克先生变成这个你可以忽略我的帖子。他的回答显然是最正确的,一如既往。 :)