【问题标题】:PHPExcel: Read all values (date, time, numbers) as stringsPHPExcel:将所有值(日期、时间、数字)作为字符串读取
【发布时间】:2011-12-21 00:57:32
【问题描述】:

我遇到了日期和时间方面的问题。我希望它们像出现在 Excel 工作簿中一样被阅读。

所以,我相信如果我使用 toArray() 获取工作表的所有单元格,那么我应该简单地做一些事情(一些格式转换),将所有单元格映射为字符串、日期、时间等。

或者可能有像加载这样的函数,它将工作簿中的所有数据作为字符串加载,没有任何格式或其他复杂的东西。

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    toArray() 支持以下参数:

    /**
     * @param  mixed    $nullValue          Value returned in the array entry if a cell doesn't 
     *                                      exist
     * @param  boolean  $calculateFormulas  Should formulas be calculated?
     * @param  boolean  $formatData         Should formatting be applied to cell values?
     * @param  boolean  $returnCellRef      False - Return a simple array of rows and 
     *                                      columns indexed by number counting from zero
     *                                      True - Return rows and columns indexed by their 
     *                                      actual row and column IDs
     */
    

    所以

    toArray(NULL,TRUE,TRUE);
    

    将返回工作表中的所有单元格值(计算和格式化),与它们在 Excel 本身中的显示完全相同。

    因此,日期将返回为(例如)21-Dec-2011 07:30 而不是 47239.318(取决于单元格的格式掩码)。其他数字单元格可以返回为 21,357.00(取决于该单元格的格式掩码),因此它是一把双刃剑。

    【讨论】:

    • 感谢您回答这个问题。它工作得很好。但我认为 toArray()、rangeToArray()(以及适用的所有其他人)的文档应该包括不要使用 `$objReader->setReadDataOnly(true)' 的警告。我花了一段时间才弄清楚,为什么你的建议不起作用。我必须深入研究 PHPExel 代码才能弄清楚这一点。
    • 关于 setReadDataOnly(true) 的附带条件适用于整个 PHPExcel,而不仅仅适用于 toArray() 之类的方法......在它适用的任何地方添加警告将在文档中添加数百行。但是,文档更新过程正在进行中。
    • 感谢您的回复。另一个问题:是否可以将制表符分隔的文本文件导入 PHPEXCEL 对象?
    • TSV 文件只是带有制表符而不是逗号作为分隔符的 CSV 文件......就像 fgetcsv 可以读取 tsv 以及 csv 文件一样,PHPExcel 也可以。只需实例化一个 CSV 阅读器 $objReader = new PHPExcel_Reader_CSV(),使用 $objReader->setDelimiter("\t") 和 $objPHPExcel = $objReader->load('filename.tsv')将分隔符设置为制表符>
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 2019-05-16
    • 2013-06-28
    • 2011-01-24
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多