简单的XLSX分析器:日期输出

时间:2014-04-07 14:42:26

标签: php excel parsing xlsx

嘿日

我的问题基于该主题:
Read excel xlsx file using simplexlsx in php

是否有可能在simplexlsx.class中捕获日期格式问题?

因为我使用这个脚本动态xlsx到数据库脚本,我几乎不能说我在哪里使用日期格式或更好的单元格有日期格式。

那么如何在一段时间内或for循环中将unixstamp($ excelDateTime)用于未知列?

function value( $cell ) {
        // Determine data type
        $dataType = (string) $cell['t'];
            switch ($dataType) {

那是值类的开头......是否可以为数据类型“Date”添加一个switch case?如果是的话怎么样?

示例:

我有3张桌子:
1:ID,col1,col2,col3
2:ID,col1,日期,col3
3:ID,col1,col2,日期

我有一个<选择>选择哪一个是需要的,但是错过了列的类型,我想显示其中一个正确的日期而不是“41928”UNIX-DATE?

到目前为止 问候

1 个答案:

答案 0 :(得分:0)

识别单元格中日期/时间值的唯一方法是查看数字格式掩码。

几乎完全取自PHPExcel的函数:

function isDateTimeFormatCode($pFormatCode = '') {
    // General contains an epoch letter 'e', so we trap for it explicitly here
    if (strtolower($pFormatCode) === 'general')
        return FALSE;
    // Typically number, currency or accounting (or occasionally fraction) formats
    if ((substr($pFormatCode,0,1) == '_') || (substr($pFormatCode,0,2) == '0 ')) {
        return FALSE;
    }
    // Try checking for any of the date formatting characters that don't appear within square braces
    if (preg_match('/(^|\])[^\[]*[eymdHs]/i',$pFormatCode)) {
        // We might also have a format mask containing quoted strings...
        //    we don't want to test for any of our characters within the quoted blocks
        if (strpos($pFormatCode,'"') !== FALSE) {
            $segMatcher = FALSE;
            foreach(explode('"',$pFormatCode) as $subVal) {
                // Only test in alternate array entries (the non-quoted blocks)
                if (($segMatcher = !$segMatcher) &&
                    (preg_match('/(^|\])[^\[]*[eymdHs]/i',$subVal))) {
                    return TRUE;
                }
            }
            return FALSE;
        }
        return TRUE;
    }

    // No date...
    return FALSE;
}