2011-08-23 40 views
15

Tôi đã tìm thấy thư viện PHPExcel xuất sắc để thao tác các tệp Excel bằng PHP (đọc, viết, vv).Đọc một bảng XLSX để nạp một bảng MySQL bằng cách sử dụng PHPExcel

Nhưng nơi nào trong tài liệu được giải thích làm thế nào để đọc một bảng XLSX để nuôi một bảng MySQL ...

Xin lỗi vì câu hỏi ngớ ngẩn này, nhưng tôi cần nó cho công việc của tôi và không tìm thấy câu trả lời trên web.

Ví dụ nhỏ có thể rất hữu ích.

Cảm ơn rất nhiều.

CẬP NHẬT:

tôi chính xác câu hỏi của tôi:

Phần duy nhất của mã tôi tìm thấy trong tài liệu có thể giúp tôi là để đọc một tập tin Excel và hiển thị nó trong một bảng 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";` 

tôi biết tôi có thể sử dụng vòng lặp để nuôi bảng MySQL của tôi, nhưng tôi không biết làm thế nào ... tôi không biết trong OOP ...

Ai đó có thể giúp tôi được không?

+1

Câu hỏi của bạn quá rộng. Tại sao một tài liệu PHPExcel bao gồm một cái gì đó về MySQL? – Jacob

Trả lời

6

Vòngđầu tiên thông qua các hàng và đường vòng thứ hai lặp qua các cột. Vì vậy, có rất nhiều giải pháp cho "vấn đề" của bạn.

Ví dụ: bạn có thể điền một mảng và tạo câu lệnh chèn cho mỗi hàng. Như sau:

$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])"); 
} 

Rõ ràng, mã này có thể được cải thiện.

+0

Cảm ơn bạn Imad. Điều đó hoạt động tốt. Lời giải thích của bạn đã giúp tôi. – mlh

+0

@mlh bạn có thể vui lòng đăng giải pháp của mình không? Tôi có cùng một vấn đề và tôi đã không thể giải quyết nó – Fahad

+0

Mã này cung cấp cho bạn lỗi "giá trị vô hướng ..."? EDIT: Tôi vừa tìm thấy lỗi. Đã sửa mã. –

5

Đây là mã

$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])"); 
} 

?> 

Tôi đã thử mysql_query ("INSERT INTO upload (col1, col2) VALUES ($ hàng [1], $ hàng [2])"); nhưng cũng không hiệu quả. Bảng vẫn để trống

+0

Tôi có thể thay thế mysql_query bằng 'echo implode ('', $ rows);' và nó trả về các giá trị trong bảng tính. – Fahad

+0

thử 'mysql_query (" INSERT INTO your_table VALUES ('". $ Rows [1]."', '". $ Rows [2]."') ");' – ItShine

Các vấn đề liên quan