2011-08-23 16 views
15

का उपयोग करके एक MySQL तालिका को खिलाने के लिए एक एक्सएलएसएक्स शीट पढ़ना मैंने PHPExcel लाइब्रेरी को PHP फ़ाइलों (पढ़ने, लिखने, आदि) के साथ Excel फ़ाइलों में हेरफेर करने के लिए शानदार पाया।PHPExcel

लेकिन दस्तावेज में कहीं नहीं समझाया गया है कैसे एक XLSX कार्यपत्रक एक MySQL तालिका को खिलाने के लिए ...

इस मूर्खतापूर्ण सवाल के लिए खेद है पढ़ने के लिए, लेकिन मैं अपने काम के लिए इसकी आवश्यकता है और पर कोई जवाब नहीं मिला वेब।

एक छोटा सा उदाहरण बहुत उपयोगी हो सकता है।

बहुत बहुत धन्यवाद।

UPDATED:

मैं सटीक मेरे सवाल:

मैं प्रलेखन में पाया कोड का ही हिस्सा है कि मुझे मदद कर सकता है Excel फ़ाइल पढ़ सकते हैं और एक 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";` 

मैं मैं अपने MySQL तालिका को खिलाने के लिए पाश का उपयोग कर सकते हैं, लेकिन मैं नहीं जानता कि कैसे ... मैं OOP में बारे में पता नहीं कर रहा हूँ ...

क्या कोई मेरी मदद कर सकता है, कृपया?

+1

आपका प्रश्न बहुत व्यापक है। PHPExcel दस्तावेज़ में MySQL के बारे में कुछ क्यों शामिल होना चाहिए? – Jacob

उत्तर

6

पहले for पंक्तियों के माध्यम से loops, और दूसरा कॉलम के माध्यम से loops। तो, आपकी "समस्या" के बहुत सारे समाधान हैं।

उदाहरण के लिए, आप एक सरणी बना सकते हैं और प्रत्येक पंक्ति के लिए एक सम्मिलन कथन बना सकते हैं। निम्नलिखित के रूप में:

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

जाहिर है, इस कोड को सुधारा जा सकता है।

+0

धन्यवाद इमाद। यह अच्छी तरह से काम करता है। आपकी व्याख्या ने मेरी मदद की। – mlh

+0

@mlh क्या आप अपना समाधान पोस्ट कर सकते हैं? मुझे एक ही समस्या है और मैं इसे हल करने में सक्षम नहीं हूं – Fahad

+0

यह कोड आपको "स्केलर मान ..." त्रुटि देता है? संपादित करें: मुझे अभी त्रुटि मिली है। कोड सही –

5

यहाँ कोड

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

?> 

मैं कोशिश की है mysql_query ("अपलोड में डालने (col1, col2) मान ($ पंक्तियों [1], $ पंक्तियों [2])") है; साथ ही काम नहीं किया। तालिका खाली रहती है

+0

से नीचे के उत्तर के रूप में पोस्ट करूंगा, मैं 'echo implode (' ', $ पंक्तियों) के साथ mysql_query को प्रतिस्थापित कर सकता हूं; और यह स्प्रेडशीट में मान देता है। – Fahad

+0

इस 'mysql_query ("अपने_टेबल मूल्यों में शामिल करें ('" $ पंक्तियां [1]। "','" $ पंक्तियां [2]। "')"); ' – ItShine