0

PHPExcel を使用して、Excel ファイルからデータを取得し、次のコードを使用して MySql データベースに保存しようとしています。

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$i=0;

$arr =array("","","","","","","");

for ($row = 1; $row <= $highestRow; $row++) 
{
 //  Read a row of data into an array
 $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
 foreach($rowData[0] as $k=>$v)
 {
    if(PHPExcel_Shared_Date::isDateTime($v))
    {
        $arr[$i] = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($InvDate));
    }
    else
        $arr[$i] = $v;
    $i++;
}

このコードでは、次のエラーが発生します。

キャッチ可能な致命的なエラー: PHPExcel_Shared_Date::isDateTime() に渡される引数 1 は、倍精度で指定され、呼び出される PHPExcel_Cell のインスタンスである必要があります。

次のように列を読むと:

foreach($rowData[0] as $k=>$v)
{
    $arr[$i] = $v;
    $i++;
}

セルの書式設定を Excel で日付に設定しても、日付列は通常のテキストとして読み取られます。全体として、Excel ファイルの各レコードに 3 つの日付列があり、日付が含まれているか、空白になっている可能性があります。

Excel の日付列には、dmY の形式の日付があります。可能であれば「Ymd」の形式で取得したいのですが、それ以外の場合は、展開して手動で変換する必要があります。日付は最終的に mysql の日付型列に格納されます。

私もstackoverflowでいくつかの記事を読みましたが、完璧な解決策を得ることができませんでした.

4

1 に答える 1