2017-02-14 15 views
3

Я хочу импортировать данные из xlsx-файла в мою базу данных для этой библиотеки phpexcel, чтобы преобразовать xls или xlsx-файл в csv, а затем прочитать данные. Этот код работает правильно, чтобы преобразовать файл xls в csv на локальном и сервере, но преобразование xlsx в csv выполняется только на локальном хосте. вот мой код:преобразование xlsx в csv не работает на сервере

function convertXLStoCSV($infile,$outfile) 
{ 

$fileType = PHPExcel_IOFactory::identify($infile); 

$objReader = PHPExcel_IOFactory::createReader($fileType); 

$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($infile);  

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV'); 
$objWriter->save($outfile); 


} 

и вызвать эту функцию с помощью:

if($ext == 'xls' or $ext == 'xlsx') 
{ 

    $new_doc_name = time() . "." .$ext; 

    $target_path = "../../uploaded_files/"; 
    $target_path = $target_path . $new_doc_name ; 

     if ($_FILES["CSV_file"]["type"] == "application/xls" or $_FILES["CSV_file"]["type"] == "application/xlsx" or $_FILES["CSV_file"]["type"] == "application/vnd.ms-excel" or $_FILES["CSV_file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"){ 

     if(move_uploaded_file($_FILES['CSV_file']['tmp_name'], $target_path)) { 


     convertXLStoCSV($target_path,'output.csv'); 
     if(($handle = fopen("output.csv" , "r")) !== FALSE) 

пожалуйста, помогите

+0

Так проверить логи сервера; убедитесь, что версия PHP на сервере соответствует версии, которую вы используете на локальном хосте, со всеми необходимыми расширениями –

ответ

2

Попробуйте

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
    $objPHPExcel = $objReader->load($uploadFIle); 

    $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 
    $highestRow = $objWorksheet->getHighestRow(); 
    $highestColumn = $objWorksheet->getHighestColumn(); 

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');  
$index = 0; 
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { 

     $objPHPExcel->setActiveSheetIndex($index); 

     // write out each worksheet to it's name with CSV extension 
     $outFile = str_replace(array("-"," "), "_", $worksheet->getTitle()) .".csv"; 

     $objWriter->setSheetIndex($index); 
     $objWriter->save($outFile); 

     $index++; 
    } 
+0

нет, ее не работает. Нет ошибки. Также.my-код работает на локальном хосте правильно, но не на сервере. –