Неправильный формат даты в PHP EXCEL - PullRequest
0 голосов
/ 23 мая 2019

Я прочитал файл Excel с помощью PHP Excel.

Но этот файл Excel содержит некоторую дату (формат времени). PHP Excel возвращает неправильные значения для этого случая

        $allowedExtensions = array("xls","xlsx");
                $ext = pathinfo('uploads/APP_abeesycs_ew.xlsx', PATHINFO_EXTENSION);
                if(in_array($ext, $allowedExtensions)) {
                    $file_size = "uploads/APP_abeesycs_ew.xlsx"/ 1024;
                    if($file_size < 50000) {
                        error_reporting(E_ALL);
                        $file = 'uploads/APP_abeesycs_ew.xlsx';

                        $isUploaded = copy('uploads/APP_abeesycs_ew.xlsx', $file);

                            include("Classes/PHPExcel/IOFactory.php");
                            try {
                                //Load the excel(.xls/.xlsx) file
                                $objPHPExcel = PHPExcel_IOFactory::load($file);
                            } catch (Exception $e) {
                                die('Error loading file "' . pathinfo($file, PATHINFO_BASENAME). '": ' . $e->getMessage());
                            }
                            ini_set('memory_limit','3072M');
                                $cacheSettings = array( ' memoryCacheSize ' => '8MB');


                            $sheet = $objPHPExcel->getSheet(0);

                            $total_rows = $sheet->getHighestRow();

                            $highest_column = $sheet->getHighestColumn();

                             '<h4>Data from excel file</h4>';
                            $query = "insert into `complaindetail` (`Tno` ,`ComplNo` ,`ComplDate` ,`InvNo` ,`CustName` ,`CustAddress` ,`CustArea` ,`CustNo` ,`SrNo` ,`ProductCode` ,`ItemName` ,`Qty`,`Rate`,`Amount`,`Noofservice`,`ServiceType`,`ProblemSummery`,`UserName`,`UserDate`,`UserTime`,`Slocation`,`ODUSrno`,`IDUSrno`,`ProductType`,`BrandName`,`Capacity`,`EngineerName`,`ComplainStatus`) VALUES ";

                            for($row =1; $row <= $total_rows; $row++) {

                                $single_row = $sheet->rangeToArray('A' . $row . ':' . $highest_column . $row, NULL, TRUE, FALSE);
                                //echo "<tr>";
                                //Creating a dynamic query based on the rows from the excel file
                                $query .= "(";
                                //Print each cell of the current row
                                foreach($single_row[0] as $key=>$value) {
                                    //echo "<td>".$value."</td>";
                                    $query .= "'".mysqli_real_escape_string($con, $value)."',";
                                }
                                $query = substr($query, 0, -1);
                                $query .= "),";
                            }
                            $query = substr($query, 0, -1);
                            mysqli_query($con, $query);
                            if(mysqli_affected_rows($con) > 0) {
                                echo "ledgerbalancedetailreport";

                            } else {
                                echo '<span class="msg">Can\'t update ledgerbalancedetailreport</span>';
                            }

                    } else {
                        echo '<span class="msg">Maximum file size should not cross 50 KB on size!</span>';  
                    }
                } else {
                    echo '<span class="msg">This type of file not allowed!</span>';
                }

В этом может помочь любой. У вас есть особая функция для этого случая в PHPExcel.

Мой входной файл Excel находится ниже

2013-12-12, 2013-12-13

Мой вывод ниже

41621, 41631

У вас есть какой-нибудь метод для преобразования выходных данных в формате даты?

1 Ответ

0 голосов
/ 23 мая 2019

Excel хранит даты в количестве дней с 1900 года. Просто добавьте 41621/41631 день к 1900 году, используя что-то вроде:

https://www.php.net/manual/en/datetime.add.php

...