在php中使用simplexlsx阅读excel xlsx文件
发布时间:2020-12-13 16:35:39 所属栏目:PHP教程 来源:网络整理
导读:我使用simplexlsx.class.php来读取xlsx文件类型.当文件在excel文件中包含日期字段时会出现问题. 样品输出: 在文件数据中: 日期 2012年2月2日星期四 2012年3月2日星期五 程序输出: 日期 星期四40941 星期五40942 这不是正确的日期 ?phpif (isset($_FILES['
我使用simplexlsx.class.php来读取xlsx文件类型.当文件在excel文件中包含日期字段时会出现问题.
样品输出: 在文件数据中: 日期 程序输出: 日期 星期四40941 这不是正确的日期 <?php if (isset($_FILES['file'])) { require_once "simplexlsx.class.php"; $xlsx = new SimpleXLSX( $_FILES['file']['tmp_name'] ); echo '<h1>Parsing Result</h1>'; echo '<table border="1" cellpadding="3" style="border-collapse: collapse">'; list($cols,) = $xlsx->dimension(); foreach( $xlsx->rows() as $k => $r) { if ($k == 0) continue; // skip first row echo '<tr>'; for( $i = 0; $i < $cols; $i++) { echo '<td>'.( (isset($r[$i])) ? $r[$i] : ' ' ).'</td>'; } echo '</tr>'; } echo '</table>'; } ?> <h1>Upload</h1> <form method="post" enctype="multipart/form-data"> *.XLSX <input type="file" name="file" /> <input type="submit" value="Parse" />
那些是正确的日期,只是Excel的内部格式:1900年1月1日以后的天数(允许1900年是闰年).显然,在simplexlsx类中,将xlsx日期值转换为Excel内部格式.
我以前没有遇到过simplexlsx(令我惊讶的是我以为我知道PHP的所有Excel文件读取器/写程序库)…但代码中的某个地方必须有一种处理该转换的方法,所以我会假设还有一个反向的方法(将Excel时间戳转换为PHP) 编辑 你想要的方法是在代码中: function unixstamp( $excelDateTime ) { $d = floor( $excelDateTime ); // seconds since 1900 $t = $excelDateTime - $d; return ($d > 0) ? ( $d - 25569 ) * 86400 + $t * 86400 : $t * 86400; } 我不保证这是准确的 编辑进一步 function unixstamp( $excelDateTime ) { $d = floor( $excelDateTime ); // seconds since 1900 $t = $excelDateTime - $d; return ($d > 0) ? ( $d - 25569 ) * 86400 + $t * 86400 : $t * 86400; } $dateVal = 40941; $unixDateVal = unixstamp($dateVal); var_dump($unixDateVal); echo date('d-M-Y',$unixDateVal); 给 float 1328140800 这看起来非常像在今年的正确范围内的unix时间戳值,并且确实如此: 02-Feb-2012 所以看起来像对我有用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |