2015-10-30 5 views
6

पर लिखते समय मानों की गणना करने के लिए PHPExcel को रोकें कक्षा PHPExcel के साथ Excel फ़ाइल में अपना डेटा लिखते समय।फ़ाइल

यह जब लेखक काम करता हो रहा है, जब नहीं कोशिकाओं $this->sheet->setCellValue()

Fatal error: Uncaught exception 'PHPExcel_Calculation_Exception' with message 'Adressen!AF20955 -> Formula Error: Unexpected operator '>'' in \Cell.php:300 Stack trace: 
#0 \PHPExcel\Worksheet.php(754): PHPExcel_Cell->getCalculatedValue() 
#1 \PHPExcel\Writer\Excel2007\Worksheet.php(373): PHPExcel_Worksheet->calculateColumnWidths() 
#2 \PHPExcel\Writer\Excel2007\Worksheet.php(80): PHPExcel_Writer_Excel2007_Worksheet->_writeCols(Object(PHPExcel_Shared_XMLWriter), Object(PHPExcel_Worksheet)) 
#3 \PHPExcel\Writer\Excel2007.php(304): PHPExcel_Writer_Excel2007_Worksheet->writeWorksheet(Object(PHPExcel_Worksheet), Array, false) 
#4 \excel.php(131): PHPExcel_Writer_Excel2007->save('...') 
#5 \excel. in \PHPExcel\Cell.php on line 300 

करने के लिए डेटा जोड़ने मैं समारोह PHPExcel_Cell->getCalculatedValue() का उपयोग कभी नहीं मेरी एक्सेल में लेकिन केवल $this->sheet->setCellValue('A1', $value) लेखन।

मुझे अपनी एक्सेल फ़ाइल में किसी भी सूत्र की गणना करने की आवश्यकता नहीं है। बस इस फ़ाइल में डीबी 2 डेटा निर्यात।

यह स्पष्ट रूप से संभव है कि $value= + - > < तरह सूत्र वर्ण हैं है (के रूप में सेल AF20955> साथ घातक त्रुटि पैदा किया था), लेकिन इस सूत्र के रूप में व्याख्या नहीं की जानी चाहिए, लेकिन केवल स्ट्रिंग के भाग के रूप में। मैं समस्या को कैसे हल कर सकता हूँ!

+0

आपको यह त्रुटि मिलने पर '$ value' में वास्तव में क्या है? –

+0

कोई विचार नहीं, यह एक डेटाबेस फ़ील्ड है, यह पता लगाने में बहुत मुश्किल है कि यह वास्तव में क्या है .... यदि इसकी आवश्यकता है तो मैं मूल्य – Perocat

+0

के लिए खोज कर सकता हूं, फिर लिखने के कॉल को आजमाएं/पकड़ें और पकड़ें जो भी '$ मूल्य उस बिंदु पर था। –

उत्तर

8

PHPExcel गणना इंजन डिफ़ॉल्ट रूप से कहा जाता है जब आप को बचाने, लेकिन आप कॉल करने से पहले

$objWriter->setPreCalculateFormulas(false); 

बुला


को बचाने के लिए जब आप सेट से इसे लागू करने के लिए नहीं लेखक बता सकते हैं setCellValue() या इसी तरह के कॉल के साथ एक सेल मान, PHPExcel डेटाटाइप की पहचान करने और मूल्य बाइंडर का उपयोग करके उचित रूप से आंतरिक रूप से (एमएस एक्सेल के समान ही) सेट करने का प्रयास करेगा। पहले वर्ण के रूप में = वाले कक्षों को इसके द्वारा सूत्रों के रूप में माना जाएगा।

यदि आप यह सुनिश्चित करना चाहते हैं कि उन्हें सूत्रों के बजाय स्ट्रिंग के रूप में माना जाता है, तो सबसे आसान तरीका setCellValueExplicit() का उपयोग करना है।

+1

धन्यवाद! 'SetCellValueExplicit() 'का उपयोग करना अच्छी तरह से काम कर रहा है। मैंने केवल '$ objWriter-> setPreCalculateFormulas (false) का उपयोग करने का प्रयास किया; 'लेकिन त्रुटि बनी रहती है! – Perocat

+2

यदि आप ऑटोविड्थ कॉलम का उपयोग कर रहे हैं, तो PHPExcel को किसी भी सूत्र को निष्पादित करने की आवश्यकता है, भले ही setPreCalculateFormulas कॉलम चौड़ाई की गणना करने के लिए गलत पर सेट हो, क्योंकि यह वास्तविक स्वरूपित, सेल –

+0

के लिए प्रदर्शित मूल्य पर आधारित है धन्यवाद आदमी! एक्सएलएस मॉडल फ़ाइल का उपयोग करते समय यह मेरी सभी समस्याओं का समाधान करता है। –