मैं एक्सेल वर्कशीट कॉलम पर आधारित लूप कैसे कर सकता हूं? मैंने पाया (और प्रयुक्त) वर्कशीट इटरेटर, रोइटरेटर और सेलइटरेटर लेकिन कॉलम के बारे में कुछ भी नहीं।PHPExcel कॉलम लूप
उत्तर
कोई कॉलम इटरेटर नहीं है, इसलिए आपको इसे हाथ से करना होगा।
किसी भी कार्यपत्रक के लिए:
एक स्तंभ के लिए पाश पंक्तियों के लिए:
$column = 'A';
$lastRow = $worksheet->getHighestRow();
for ($row = 1; $row <= $lastRow; $row++) {
$cell = $worksheet->getCell($column.$row);
// Do what you want with the cell
}
एक पंक्ति में पाश स्तंभों के लिए, आप PHP के पर्ल्स शैली पात्रों को बढ़ाने के लिए क्षमता का लाभ ले सकते हैं:
$row = 1;
$lastColumn = $worksheet->getHighestColumn();
$lastColumn++;
for ($column = 'A'; $column != $lastColumn; $column++) {
$cell = $worksheet->getCell($column.$row);
// Do what you want with the cell
}
ध्यान दें कि जब स्तंभ पत्र की तुलना पाश में अंतिम स्तंभ के लिए परीक्षण करने के लिए, हम बस < या < = उपयोग नहीं कर सकते क्योंकि हम स्ट्रिंग की तुलना कर रहे हैं, और "बी"> "एजेड" मानक स्ट्रिंग तुलना में, इसलिए हम एक = = तुलना का उपयोग करते हैं, जो अंत बिंदु से पहले कॉलम आईडी देने के लिए उच्चतम कॉलम मान बढ़ाता है।
तुम भी इटरेटर getIterateOnlyExistingCells अनुकरण करने के लिए getCell() (या नहीं) का उपयोग करते हुए यह तक पहुँचने() व्यवहार
से पहले पाश में
$worksheet->cellExists($column.$row);
उपयोग कर सकते हैं एक सेल के अस्तित्व के लिए परीक्षण करने के लिए Iterators वास्तव में काफी धीमी हैं, तो आप अच्छी तरह से इन सरल loops iterators का उपयोग करने से तेज हो सकता है।
अद्यतन (2015-05-06)
PHPExcel संस्करण 1.8.1 एक नया कॉलम इटरेटर शुरू की है। पंक्ति और स्तंभ iterators भी जब सीमा के रूप में
पाश कॉलम के माध्यम से पाशन आप पंक्तियों या स्तंभों पुनरावृति करने की एक सीमा निर्दिष्ट करें, और आप पिछले() और अच्छी तरह से अगले के रूप में() का उपयोग करने की अनुमति के लिए अनुमति देता
foreach (range('A', $Excel->getActiveSheet()->getHighestColumn()) as $column_key) {
}
वाह। मुझे सभी – realtebo
इसे आजमाएं! काम!
$limit = 10000;
$value='sua mensagem'
for($i=0,$j='A';$i<$limit;$i++,$j++) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue($j.$i, $value);
}
$ मूल्य में सेट करें जो आप प्रिंट करना चाहते हैं।
पर 'रेंज' नहीं पता था, अगर आप सभी कोल्स का उपयोग करना चाहते हैं तो सीमा 16.384 में सेट करें। यह एक्सेल से एक सीमा है। परिवर्तनीय $ जे है (ए ... एएएएएएएए) और $ i (1 ... 1.048.576) है, आप कॉल लेटर के लिए केवल $ जे का उपयोग कर सकते हैं और नंबर ठीक कर सकते हैं: '-> setCellValue ($ j.'1 ', $ मूल्य); ' और $ मूल्य आप मूल्यों को पॉप्युलेट करने के लिए एक और लूप बना सकते हैं या डेटाबेस और/या डेटा फ़ाइल से डेटा डाल सकते हैं। –
यह छोटा स्निपेट स्तंभों की पंक्तियों के माध्यम से लूप प्रदान करता है। यह पिछले गैर खाली कॉलम (और इसकी पंक्ति) और सूचकांक में लूप की अनुक्रमणिका प्राप्त करता है, इसलिए एक्सेल में भूल गए मानों से अवगत रहें।
कोड स्तंभ A का सोचा पंक्तियों लूप होता है, तो स्तंभ बी की पंक्तियों ...
$objReader = new PHPExcel_Reader_Excel2007();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
{
$worksheetTitle = $worksheet->getTitle();
$highestColumn = $worksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
// expects same number of row records for all columns
$highestRow = $worksheet->getHighestRow();
for($col = 0; $col < $highestColumnIndex; $col++)
{
// if you do not expect same number of row records for all columns
// get highest row index for each column
// $highestRow = $worksheet->getHighestRow();
for ($row = 1; $row <= $highestRow; $row++)
{
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getValue();
// do what you want with cell value
}
}
}
यह पुनरावर्ती विधि डिजाइन किया गया था कॉलम का "पत्र", जो कुछ भी स्तंभों की संख्या प्राप्त करने के लिए अनुमति देता है आप , 'ए' से करने के लिए है "ZZZZZZZZZ ...":
function getColumnLetter($number)
{
$prefix = '';
$suffix = '';
$prefNum = intval($number/26);
if($prefNum > 25)
{
$prefix = getColumnLetter($prefNum);
}
$suffix = chr(fmod($number, 26)+65);
return $prefix.$suffix;
}
तो तुम पाश इंडेक्स नंबर पर एक PHP सरणी के स्तंभ और यह पत्र के एक सूत्र के PHPExcel तरीकों में बदलने और उपयोग कर सकते हैं यह, की तरह "setCellValue" ... लेकिन यदि आप उपयोग कर सकते हैं तो ऊपर दिए गए समाधान निश्चित रूप से तेज़ हैं उन्हें !
PHPExcel के पास पहले से ही PHPExcel_Cell :: stringFromColumnIndex() – dctucker
हां, 3 अक्षरों की सीमा के साथ एक सहायक विधि है। https://github.com/PHPOffice/PHPExcel/blob/1.8/Classes/PHPExcel/Cell.php लाइन 790 –
मुझे लगता है कि तीन-अक्षर सीमा व्यावहारिक सीमाओं से संबंधित है जैसे एक्सेल वर्कशीट में अधिकतम कॉलम (16,384)। तीन अक्षरों ए-जेड उस सीमा को कवर कर सकते हैं और फिर कुछ। क्या आप एक ऐसे केस की पहचान कर सकते हैं जहां चार-अक्षर कॉलम नाम आवश्यक है? – dctucker
यह अंतिम संदेश की getColumnLetter विधि के लिए ठीक है, यह आप स्तंभों की "पत्र", जो कुछ भी स्तंभों की संख्या आप
function getColumnLetter($number){
$prefix = '';
$suffix = '';
$prefNum = intval($number/26);
if($number > 25){
$prefix = getColumnLetter($prefNum - 1);
}
$suffix = chr(fmod($number, 26)+65);
return $prefix.$suffix;
}
- 1. phpExcel कॉलम आकार के मुद्दों
- 2. PHPExcel
- 3. PHPExcel
- 4. PHPExcel
- 5. PHPExcel कैसे ऑटो-कॉलम चौड़ाई सेट करें
- 6. PHPExcel
- 7. PHPExcel
- 8. PHPExcel
- 9. phpexcel
- 10. phpexcel
- 11. PHPExcel और टेक्स्ट रैपिंग
- 12. PHPExcel टिप्पणी
- 13. PHPExcel: स्ट्रिंग्स
- 14. PHPExcel CSV
- 15. PHPExcel एकाधिक वर्कशीट
- 16. PHPExcel मेमोरी इश्यू
- 17. कॉलम द्वारा एएसपीनेट एसक्यूएल डाटाएडर लूप
- 18. PHPExcel पहली पंक्ति बोल्ड
- 19. PHPExcel पिछले $ उच्चतम रो
- 20. सीएसवी निर्यात/PHPExcel
- 21. PHPExcel mysql तालिका
- 22. PHPExcel फ़ाइल स्वरूप
- 23. PHPExcel - पाठ बोल्ड
- 24. PHPExcel: फ़ॉन्ट आकार सेट करना?
- 25. PHPExcel - प्रकोष्ठों पढ़ना और MYSQL
- 26. PHPExcel पूरी तरह से उत्पादन
- 27. आरसीपीपी मैट्रिक्स: पंक्तियों पर लूप, एक समय में एक कॉलम
- 28. कोल्डफ्यूजन में क्वेरी कॉलम के माध्यम से लूप कैसे करें
- 29. ग्रिड SharedSizeGroup - कॉलम बाउंसिंग कर रहे हैं, अनंत लूप
- 30. रिक्त कक्षों को अनदेखा करें PHPExcel
मैं एक अंकीय पाने के लिए कोशिश कर रहा था है पाने के लिए अनुमति देता है कॉलम के लिए मूल्य। मैं PHP की चरित्र वृद्धि सुविधा को अवगत नहीं था। समाधान और इस साफ टिप के लिए धन्यवाद! – Hazar
$ lastColumn = $ वर्कशीट-> getHighestColumn(); वापस आ रहा है बी एंड बी आखिरी भरा कॉलम है कृपया मदद करें। – Bugfixer
ठीक है अगर 'बी' अंतिम भरा कॉलम है, तो आप 'getHighestColumn()' वापस आने की क्या अपेक्षा करते हैं? ऐसा लगता है कि –