2012-06-06 14 views
14

का उपयोग कर पंक्तियों और स्तंभों द्वारा एक्सेल में कोशिकाओं को विलय करना मुझे पंक्तियों द्वारा एक्सेल (xlsx) में कोशिकाओं को विलय करने और PHPExcel का उपयोग करके कॉलम द्वारा फिर से मर्ज करने की आवश्यकता है। मैंने निम्नलिखित की कोशिश की।PHPExcel

$sheet->mergeCells("G".($row_count+1).":G".($row_count+4));    
$sheet->mergeCells("H".($row_count+1).":H".($row_count+4));    
$sheet->mergeCells("I".($row_count+1).":I".($row_count+4));  

कहाँ चर $row_count 25, 50, 75 और इतने पर (कोई नियमित पैटर्न) जैसे कुछ अप्रत्याशित गतिशील मूल्य है।

enter image description here

यह कोशिकाओं के रूप में पूर्ववर्ती snap shot में दिखाया गया है नोट सेल से ठीक नीचे देखा जा सकता है विलीन हो जाती है। पंक्तियों द्वारा इन कोशिकाओं को विलय करने के बाद, मैं उन्हें निम्नानुसार स्तंभों से विलय करने की कोशिश कर रहा हूं।

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));    

लेकिन यह काम नहीं करता है। जब मैं एक्सेल फ़ाइल खोलने का प्रयास करता हूं, तो यह एक पुष्टिकरण (एक पुष्टिकरण बॉक्स के साथ) पूछता है

एक्सेल को 'report.xlsx' में अपठनीय सामग्री मिली। क्या आप इस कार्यपुस्तिका की सामग्री को पुनर्प्राप्त करना चाहते हैं? यदि आप इस कार्यपुस्तिका के स्रोत पर भरोसा करते हैं, तो हाँ पर क्लिक करें।

एक्सेल में पंक्तियों और स्तंभों द्वारा कोशिकाओं को एक साथ कैसे मर्ज करें?

उत्तर

20

बस विलय A1 तरह कोशिकाओं का एक मान्य श्रेणी की आवश्यकता है: बी 2, तो अपने

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1)); 

किसी भी समस्या के बिना काम करना चाहिए।

आप नहीं साबित करने के लिए आप एक समस्या पैदा कर रहा है कि यह एक सरल परीक्षण मामले के साथ प्रयोग कर सकते हैं कृपया, और कुछ और अपनी स्क्रिप्ट

संपादित

में अपने प्रश्न फिर से पढाना के बाद: आपकी समस्या हो सकता है हो सकता है कि आप उन पंक्तियों को मर्ज करने की कोशिश कर रहे हैं जो प्रत्येक पंक्ति को विलय करने के बजाय मर्ज रेंज का हिस्सा हैं, फिर कॉलम द्वारा विलय करने का प्रयास कर रहे हैं, पूर्ण श्रेणी में एक बार विलय करने का प्रयास करें।

$sheet->mergeCells("G".($row_count+1).":I".($row_count+4));    
+0

यह अपेक्षा के अनुसार काम करता था। धन्यवाद। – Tiny

+0

@markBaker, मैंने पहले से ही PHPExcel का उपयोग किया है और मेरे पास इस लाइब्रेरी के बारे में बताने के लिए केवल सहकारी हैं।अब मैं एक जावा परियोजना के लिए Aspose के साथ काम कर रहा हूं और इस पुस्तकालय के लिए एक सीमा है कि ऐसा लगता है कि PHPExcel भी है .. हम पहले से ही विलय वाले कोशिकाओं को एक नए के साथ विलय नहीं कर सकते हैं। तुम जानते हो क्यों? – periback2

+0

मुख्य रूप से क्योंकि कोड में संभालना दर्दनाक है, और प्रत्येक मर्ज के लिए ओवरहेड जोड़ता है, परीक्षण करता है कि यह किसी भी मौजूदा विलय का हिस्सा है और यदि दोनों है तो इसे दोबारा जोड़ना ... और जब यह –

2

मैं कोल्स और पंक्ति द्वारा विलय करने के लिए कैल्क कोशिकाओं को एक सरल कार्य करता हूं।

function cellsToMergeByColsRow($start = NULL, $end = NULL, $row = NULL){ 
    $merge = 'A1:A1'; 
    if($start && $end && $row){ 
     $start = PHPExcel_Cell::stringFromColumnIndex($start); 
     $end = PHPExcel_Cell::stringFromColumnIndex($end); 
     $merge = "$start{$row}:$end{$row}"; 

    } 

    return $merge; 
} 

और फोन

$sheet->mergeCells(cellsToMergeByColsRow($col, $col+5, $row)); 

धन्यवाद @Mark बेकर

+0

करता है तो कोई प्रतिक्रिया नहीं दे सकता हो सकता है कि आप अंतर्निहित सहायक कार्यों का उपयोग PHPExcel_Cell :: columnIndexFromString() और PHPExcel_Cell :: stringFromColumnIndex() को अपने स्वयं के chr/floor/etc की बजाय उपयोग करना चाहें क्योंकि वे पहले ही निर्मित हैं –

+0

इन सहायकों का उल्लेख करने के लिए धन्यवाद – jashk

3
function cellsToMergeByColsRow($start = -1, $end = -1, $row = -1){ 
    $merge = 'A1:A1'; 
    if($start>=0 && $end>=0 && $row>=0){ 
     $start = PHPExcel_Cell::stringFromColumnIndex($start); 
     $end = PHPExcel_Cell::stringFromColumnIndex($end); 
     $merge = "$start{$row}:$end{$row}"; 
    } 
    return $merge; 
} 

मामले के अलावा:

$objPHPExcel->getActiveSheet()->mergeCells(cellsToMergeByColsRow(0,2,3)) 
8

सेल विलय

के लिए एक और विधि नहीं है
/** 
* Set merge on a cell range by using numeric cell coordinates 
* 
* @param int $pColumn1 Numeric column coordinate of the first cell 
* @param int $pRow1  Numeric row coordinate of the first cell 
* @param int $pColumn2 Numeric column coordinate of the last cell 
* @param int $pRow2  Numeric row coordinate of the last cell 
* @throws Exception 
* @return PHPExcel_Worksheet 
*/ 
    public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)