gpt4 book ai didi

php - 在 php 中使用 simplexlsx 读取 excel xlsx 文件

转载 作者:可可西里 更新时间:2023-10-31 22:47:07 28 4
gpt4 key购买 nike

我正在使用 simplexlsx.class.php 读取 xlsx 文件类型。当文件在 Excel 文件中包含日期字段时会出现问题。

示例输出:

在文件数据中:

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

程序输出:

日期

星期四 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] : '&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 - 在 php 中使用 simplexlsx 读取 excel xlsx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com