Я пытаюсь загрузить CSV со списком товаров и количеств на мою веб-страницу.Но когда CSV загружается в phpexcel, он сбрасывает ведущие нули на идентификаторы продуктов.Как сохранить начальные нули для одного столбца для разных размеров CSV.Я также использую createReader ('CSV')
Я пытался использовать setFormatCode, но получаю сообщение об ошибке, в котором говорится, что функция не существует.Даже после того, как я включу файлы.Я также пытался использовать setCellValueExplicit, но он по-прежнему сбрасывает начальный ноль.
Вот обрабатываемые заголовки:
$objPHPExcel = $objReader->load($uploadFile);
$sheet = $objPHPExcel->getActiveSheet();
$validateDelimiter = $sheet->getCell('A1')->getValue();
И это то, где обрабатываются строки не заголовки:
//process rows
if(isset($headers['asin/upc']) || isset($headers['asin']) || isset($headers['barcode/asin'])) {
foreach($sheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
foreach($cellIterator as $cell) {
if(!$S_EW_Errors->Errors()) {
//Set useful vars
$column = $cell->getColumn();
$columnIndex = PHPExcel_Cell::columnIndexFromString($column);
$rowIndex = $row->getRowIndex();
//grab header detail details
if($rowIndex > 1) {
//This code throws an error
//$sheet->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('0000000000');
//This code doesn't preserve leading zeros
//$sheet->setCellValueExplicit('A'.$rowIndex, $sheet->getCell($asinColumn.$rowIndex)->getValue(), PHPExcel_Cell_DataType::TYPE_STRING);
$asin = trim($sheet->getCell($asinColumn.$rowIndex)->getValue());
//see if this needs explored or not
$detailArr[$asin]['explored'] = $PoMgr->asinExists($asin);
if(isset($columnMappings[$column])) {
if($columnMappings[$column] == 'asin' || $columnMappings[$column] == 'asin/upc' || $columnMappings[$column] == 'barcode/asin') {
//stringify asin
$detailArr[$asin][$columnMappings[$column]] = trim($sheet->getCell($column.$rowIndex)->getValue());
} else if ($columnMappings[$column] == 'unit_price' || $columnMappings[$column] == 'buy cost') {
//replace $ values
$detailArr[$asin]['unit_price'] = trim(str_replace('$', '', $sheet->getCell($column.$rowIndex)->getValue()));
} else if ($columnMappings[$column] == 'quantity') {
if(isset($detailArr[$asin]['quantity'])) {
$detailArr[$asin]['quantity'] += trim($sheet->getCell($column.$rowIndex)->getValue());
} else {
$detailArr[$asin][$columnMappings[$column]] = trim($sheet->getCell($column.$rowIndex)->getValue());
}
} else if ($columnMappings[$column] == 'title') {
$detailArr[$asin]['name'] = trim($sheet->getCell($column.$rowIndex)->getValue());
} else {
//special case for android csv
if (!isset($asin) && $columnMappings[$column] == 'productid') {
$asin = trim($sheet->getCell('G'.$rowIndex)->getValue());
}
$detailArr[$asin][$columnMappings[$column]] = trim($sheet->getCell($column.$rowIndex)->getValue());
}
}
} //index > 1
} //no errors
} //foreach as cell
if($rowIndex > 1) {
if(!empty($vendorId)) $detailArr[$asin]['vendor_id'] = $vendorId;
if(!empty($affiliateId)) $detailArr[$asin]['affiliate_id'] = $affiliateId;
if(!empty($accountId)) $detailArr[$asin]['account_id'] = $accountId;
if(!empty($userId)) $detailArr[$asin]['user_id'] = $userId;
}
} //foreach as row
}
Я прокомментировал строки, которые я пробовал ранее.
Все идентификаторы - 10 символов, так что именно этого ожидает веб-страница, и она должна быть точной для создания планов отгрузки.Но если они начинаются с 0, то на странице создаются планы с 9-значными идентификаторами.