2011-08-23 8 views
15

znalazłem biblioteki PHPExcel genialny manipulować plików Excel w PHP (czytać, pisać, i tak dalej).Czytanie arkusza XLSX do paszy tabeli MySQL za pomocą PHPExcel

Ale nigdzie w dokumentacji wyjaśnia jak czytać arkusza XLSX karmić tabeli MySQL ...

przepraszam za to głupie pytanie, ale muszę je dla mojej pracy i nie znaleźli odpowiedzi na sieć.

Mała Przykładem może być bardzo pomocne.

Wielkie dzięki.

AKTUALIZACJA:

I precyzyjny moje pytanie:

Jedyną częścią kodu znalazłem w dokumentacji, które mogłyby mi pomóc to odczytać plik programu Excel i wyświetlić go w tabeli HTML:

`require_once 'phpexcel/Classes/PHPExcel.php'; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 

$objPHPExcel = $objReader->load("edf/equipement.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

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

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

echo '<table border="1">' . "\n"; 
for ($row = 1; $row <= $highestRow; ++$row) { 
    echo '<tr>' . "\n"; 

    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>' . "\n"; 
    } 

    echo '</tr>' . "\n"; 
} 
echo '</table>' . "\n";` 

wiem, że można korzystać z pętli karmić moje tabeli MySQL, ale nie wiem jak ... nie jestem świadomy w OOP ...

Czy ktoś może mi pomóc, proszę?

+1

Twoje pytanie jest zbyt szerokie. Dlaczego dokumentacja PHPExcel powinna zawierać coś o MySQL? – Jacob

Odpowiedz

6

Pierwsze for pętle poprzez wiersze, a drugi pętle przez kolumny. Istnieje wiele rozwiązań dla twojego "problemu".

Można na przykład wypełnić tablicę i złożyć oświadczenie insert dla każdego wiersza. jak:

$rows = array(); 
for ($row = 1; $row <= $highestRow; ++$row) { 
    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    $rows[$col] = mysql_real_espace_string($objWorksheet->getCellByColumnAndRow($col, $row)->getValue()); 
    } 

    mysql_query("INSERT INTO your_table (col1,col2) VALUES ($rows[1],$rows[2])"); 
} 

Oczywiście, kod ten może ulec poprawie.

+0

Dziękuję Imad. To działa dobrze. Twoje wyjaśnienie mi pomogło. – mlh

+0

@mlh Czy możesz opublikować swoje rozwiązanie? Mam ten sam problem i nie mogłem go rozwiązać – Fahad

+0

Ten kod daje błąd "wartość skalarna ..."? EDYCJA: Właśnie znalazłem błąd. Poprawiono kod. –

5

Oto kod

$inputFileName = $upload_path . $filename; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($inputFileName); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
$rows = array(); 
for ($row = 1; $row <= $highestRow; ++$row) { 
    for ($col = 0; $col <= $highestColumnIndex; ++$col) { 
    $rows[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue(); 
    } 
    mysql_query("INSERT INTO upload (`item_number`,`qty_sold`,`cost_home`) VALUES ($rows[1],$rows[2],$rows[3])"); 
} 

?> 

Próbowałem mysql_query ("INSERT INTO przesłania (col1, col2) VALUES ($ wiersze [1], $ wiersze [2])"); również, ale nie działa. Stół pozostaje pusty

+0

mogę zastąpić mysql_query z 'echo implode (””, $ wiersze);' i zwraca wartości w arkuszu kalkulacyjnym. – Fahad

+0

spróbować tej 'mysql_query ("INSERT INTO your_table VALUES ('" " '" $ wiersze [2]. "')" $ Wiersze [1]..');' – ItShine

Powiązane problemy