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
)
この値を文字列として読み取る方法