0

PHPExcel を使用して Mysql データベースに CSV ファイルをロードしたいのですが、私のコードは次のとおりです。

$inputFileName = '/tmp/charges1.csv';
            //PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_MyValueBinder());
            try {
                $inputFileType = PHPExcel_IOFactory::identify($inputFileName);


                $objReader = PHPExcel_IOFactory::createReader($inputFileType);
                if ($inputFileType == 'CSV') {
                    $objReader->setDelimiter(get_csv_delimiter($inputFileName));
                }
                $objPHPExcel = $objReader->load($inputFileName);

            } catch (Exception $e) {
                die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' . $e->getMessage());
            }

            //  Get worksheet dimensions
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow();
            $highestColumn = $sheet->getHighestColumn();

            //  Loop through each row of the worksheet in turn
            $charges = new srvmgr_charges();
            for ($row = 1; $row <= $highestRow ; $row++) {
                //  Read a row of data into an array

                $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
                    NULL,
                    TRUE,
                    FALSE);
                //  Insert row data array into your database of choice here
                $rowData = $rowData[0];
                print_r($rowData);

                if (
                    (is_double($rowData[$format->date]) && $rowData[$format->date] >= 41395) ||
                    (is_string($rowData[$format->date]) && strtotime($rowData[$format->date]) !== false)
                ) {
                    $charges->date = date('Y-m-d', (is_double($rowData[$format->date])) ? PHPExcel_Shared_Date::ExcelToPHP($rowData[$format->date]) : strtotime($rowData[$format->date]));
                    $charges->description = $rowData[$format->reference];
                    $charges->amount = $rowData[$format->amount];
                    $charges->idgroup = $idgroup;
                    $charges->SaveNew();
                }


            }

長い数字のセットである必要がある「参照」フィールドがありますが、行を取得すると、指数形式の倍精度として解釈されます。ここに print_r の結果があります。

    Array
(
    [0] => 2014-09-07
    [1] => some text
    [2] => some text
    [3] => some text
    [4] => 5,40
    [5] => some text
    [6] => some text
    [7] => some text
    [8] => some text
    [9] => some text
    [10] => 8.2014191065639E+17 ===> should be "820141910656393488"
    [11] => some text
)

この値を文字列として読み取る方法

4

0 に答える 0