2

在我的 php 项目中,我需要导入一个 excel 文件并将所有值插入到表中。我正在使用phpExcelReader导入文件。在 y excel 文件中,有一列用于以 d/m/Y 格式存储日期值。但是当我读到这些值时,它不是正确的敌人示例,我将日期指定为“ 25/02/2013”,它会导致TueTue/FebFeb/2013201320132013

查看代码

require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
//echo $target_path;
$data->read('uploads/initiativeData/'.$uploadFile);     
$startDate=trim(mysql_escape_string($data->sheets[0]['cells'][$i][5]));

这里 $startDate 是存储日期字段值的变量

我需要得到价值02-25-2013..有人知道吗

请回复

谢谢

4

5 回答 5

2

这为我解决了这个问题:

$data->sheets[$sheetNumber]['cellsInfo'][$rowNumber][$cellNumber]['raw'];

它将以时间戳格式为您提供日期,其中:

$data = new Spreadsheet_Excel_Reader();
$data->read("YourFile.xls");
于 2016-04-09T18:06:16.003 回答
0

尝试strtotime,它应该能够解析您的日期字符串。之后,您可以使用date将其转换为您想要的任何格式。例如:

$yourData = date('d.m.Y', strtotime(trim($data->sheets[0]['cells'][$i][5])));

编辑:

$yourData = date('d.m.Y', strtotime(str_replace('/', '-', trim($data->sheets[0]['cells'][$i][5]))));
于 2013-02-01T09:15:09.720 回答
0

PHPExcel中有 2 个不同的函数来获取字段的值。

$value  = $objPHPExcel->setActiveSheetIndex(0)->getCell('B12')->getValue();
$value2 = $objPHPExcel->setActiveSheetIndex(0)->getCell('B12')->getCalculatedValue();

我不确定您正在使用的 phpExcelReader 库中是否也存在不同的功能,但值得研究。

进一步看,这是在文档中:

Accessing Cell Values

It is recommended that the public API functions be used to access data rather than relying on the underlying data structure, which may change between releases.

Retrieve the formatted value of a cell (what is displayed by Excel) on the first (or only) worksheet:

    $data->val($row,$col) 

You can also use column names rather than numbers:

    $data->val(10,'AZ') 

Access data on a different sheet:

    $data->val($row,$col,$sheet_index) 

所以尝试使用 val() 函数来获取值,而不是你正在使用的方法。

于 2013-08-27T12:04:50.637 回答
0

PHP 有一个DateTime::createFromFormat()函数,它会做你想要的。

$date = DateTime::createFromFormat('d/m/Y', '25/02/2013');  //import with the specified format...
echo $date->format('Y-m-d');   //...and now you can output it in whatever format you want.
于 2013-02-01T09:48:16.507 回答
0

Spreadsheet_Excel_Reader 类

替换此功能:

function createDate($numValue) {
        if ($numValue > 1) {
            $utcDays = $numValue - ($this->nineteenFour ? SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904 : SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS);
            $utcValue = round(($utcDays) * SPREADSHEET_EXCEL_READER_MSINADAY);

            $this->curformat = strtolower($this->curformat);
            //echo $this->curformat; echo "<br>";
            if ($this->curformat == 'mm/dd/yyyy' || $this->curformat == 'i/dd/yyyy') {
                $this->curformat = 'Y-m-d';
            }

            $string = date($this->curformat, $utcValue);
            $raw = $utcValue;
        } else {
            $raw = $numValue;
            $hours = floor($numValue * 24);
            $mins = floor($numValue * 24 * 60) - $hours * 60;
            $secs = floor($numValue * SPREADSHEET_EXCEL_READER_MSINADAY) - $hours * 60 * 60 - $mins * 60;
            $string = date($this->curformat, mktime($hours, $mins, $secs));
        }

        return array($string, $raw);
    }
于 2013-08-28T08:59:30.603 回答