【发布时间】:2022-07-02 04:39:30
【问题描述】:
我必须从 CSV 文件中检索数据,并显示以字符串格式编写的日期的月份和年份。我运行代码,它显示了一个非格式正确的数值遇到错误。我还尝试了其他转换方法日期,我得到每个日期的 1900 年。
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
require('php_library/spreadsheet-reader-master/php-excel-reader/excel_reader2.php');
require('php_library/spreadsheet-reader-master/SpreadsheetReader.php');
if(isset($_FILES["filename"]))
{
$file = $_FILES["filename"]["tmp_name"];
$file_open = fopen($file,"r");
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->load($file);
$sheetData = $spreadsheet->getActiveSheet()->toArray();
foreach ($sheetData as $i=>$Row)
{
foreach($Row as $j=>$column)
{
// echo $Row[$j].", ";
if($i == 0)
{
if($Row[$j] == "Codice cliente")
$column1 = $j;
if($Row[$j] == "Data emissione")
{
$column2 = $j;
// echo $j;
}
}
}
}
foreach ($sheetData as $i=>$row)
{
if($i!=0){
json_encode(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row[$column2])->format('Y'));
}
【问题讨论】:
-
不要截断或解释错误消息 - 这对于那些试图诊断问题的人来说真的没有帮助。这就像告诉你的医生“很痛”,但没有指向你身体的某个地方。 edit 您的问题是为了显示准确、完整的错误消息,并告诉我们您的代码的哪一行抛出了它。还请展示您在发生这种情况时尝试处理的数据示例。我们需要问题的minimal reproducible example,而不是一些无法解释的代码和半条错误消息。另见How to Ask。请记住,我们并没有越过你的肩膀。谢谢:-)
-
除了您描述的问题之外,为什么您重复两次
foreach而不是两次都使用第一次? -
另外请在使用前阅读标签说明。 “web”标签的描述以“不要使用这个标签”开头......!可能一个 phpspreadsheet 标记将是有用的,也许日期时间。您也可以在编辑时重新标记它。
-
不要只告诉我们错误消息的行号。通过评论或其他内容向我们展示导致崩溃的行。而且,如果您可以使用调试器安装 IDE,那么您就可以逐步完成这类事情并检查您的实际数据是否符合您的期望。
-
请edit向我们展示
$row[$column2]的文本内容,或者print_r( $row[$column2] )的输出。
标签: php spreadsheet phpoffice-phpspreadsheet