在php中使用simplexlsx阅读excel xlsx文件

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在php中使用simplexlsx阅读excel xlsx文件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用simplexlsx.class.PHP来读取xlsx文件类型.当文件在excel文件中包含日期字段时会出现问题.

样品输出

文件数据中:

日期
2012年2月2日星期四
2012年3月2日星期五

程序输出

日期

星期四40941
星期五40942

这不是正确的日期

<?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] : '&amp;nbsp;' ).'</td>';

    }
    echo '</tr>';
}
echo '</table>';
}

?>
<h1>Upload</h1>
<form method="post" enctyPE="multipart/form-data">
*.XLSX <input type="file" name="file"  />&nbsp;&nbsp;<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

所以看起来像对我有

脚本宝典总结

以上是脚本宝典为你收集整理的在php中使用simplexlsx阅读excel xlsx文件全部内容,希望文章能够帮你解决在php中使用simplexlsx阅读excel xlsx文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。