2

私のphpプロジェクトでは、Excelファイルをインポートし、すべての値をテーブルに挿入する必要があります。私はphpExcelReaderファイルをインポートするために使用しています。yExcelファイルには、日付値を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を試してください。日付文字列を解析できるはずです。その後、日付を使用して任意の形式に変換できます。例えば:

$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

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 に答える