2014-10-12 27 views
5

Sto cercando di importare i dati dal foglio Excel (.xlsx). Ho trovato PHPExcel per i dati di importazione ma dopo aver scaricato il documento e il codice sorgente sono confuso quale file è importante per me. Ho anche provato a trovare un documento su quel sito ma non ho trovato la strada.Come leggere i dati da Excel utilizzando PHPExcel

Informazioni sul mio compito: Leggere i dati del foglio excel dal foglio selezionato e inserire i dati nella tabella del mio database.

Quindi sono davvero grato se mi guiderai come usarlo.

Grazie.

risposta

12

È possibile utilizzare la libreria PHPExcel per leggere un file Excel e inserire i dati in un database.

Il codice di esempio è di seguito.

// Include PHPExcel_IOFactory 
include 'PHPExcel/IOFactory.php'; 

$inputFileName = 'sample.xls'; 

// Read your Excel workbook 
try { 
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $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 
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 database here using your own structure 
+0

Una risposta migliore del trasferimento dell'intero foglio di lavoro in un array PHP; scorrere su ogni riga a turno in modo da lavorare solo con una piccola serie di dati e non intasare il limite di memoria di PHP –

+0

Nel caso in cui si conosca il formato dei dati prima della mano, ad es. un utente che carica, puoi impostare '$ highestColumn' sull'ultima colonna di dati come' $ highestColumn = 'E'' nel mio caso. Questo è utile in quanto il tuo database avrà generalmente colonne fisse. – seyisulu

0

Prova questo in modo da poter saltare l'inizio del processo di sviluppo:

include '.... /PHPexcel/Classes/PHPExcel.php'; 
    $dataFfile = "C:/tmp/test_data.xls"; 
    $objPHPExcel = PHPExcel_IOFactory::load($dataFfile); 
    $sheet = $objPHPExcel->getActiveSheet(); 
    $data = $sheet->rangeToArray('A2:AB5523'); 
    echo "Rows available: " . count($data) . "\n"; 
    foreach ($data as $row) { 
     print_r($row); 
    } 

sostituire il percorso includere con l'percorso del PHPExcel.php
Sostituire $dataFile con il vostro file excel
regolare anche la intervallo delle celle che si desidera importare

8

Da una rapida occhiata alla documentazione, utilizzare IOFactory per determinare automaticamente t lui formato di file.

include 'path/to/PHPExcel/IOFactory.php'; 

// Let IOFactory determine the spreadsheet format 
$document = PHPExcel_IOFactory::load('path/to/spreadsheet.xls'); 

// Get the active sheet as an array 
$activeSheetData = $document->getActiveSheet()->toArray(null, true, true, true); 

var_dump($activeSheetData); 
Problemi correlati