2013-10-30 9 views
24

का उपयोग कर एक्सेल से दिनांक कैसे प्राप्त करें I PHPExcel का उपयोग करके एक्सेल से दिनांक प्राप्त करने का प्रयास कर रहा हूं। लेकिन मुझे तारीख नहीं मिल रही है, मुझे स्ट्रिंग वैल्यू मिल रही है जो 1 9 70 से सेकंड नहीं है।PHPExcel लाइब्रेरी

कोड मैं कोशिश की है

$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue()); 

उत्तर

49

कोशिश उपयोग

$cell = $excel->getActiveSheet()->getCell('B' . $i); 
$InvDate= $cell->getValue(); 
if(PHPExcel_Shared_Date::isDateTime($cell)) { 
    $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
} 

पी.एस. है

@DiegoDD: उल्लेख करना चाहिए कि $ प्रारूप तिथि के लिए वांछित प्रारूप है। उदा .:

$InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
+1

केवल अगर मैं इसे 2 महीने पहले पा सकता हूं! धन्यवाद! – rafi

+0

उत्कृष्ट :) धन्यवाद – mrfazolka

+0

धन्यवाद पिछले कुछ दिनों से यह ठीक काम कर रहा है –

9

एक तिथि के लिए, getValue() एक नाव है, जो कि दिनांक/समय के लिए Excel धारावाहिक टाइमस्टैम्प मूल्य है लौटना चाहिए ... मुझे लगता है कि यह आपके ट्रिम() कि स्ट्रिंग के लिए यह कास्टिंग है। वास्तविक मान 1/1/1900 (या 1/1/1904 के बाद से दिन की संख्या है जो स्प्रेडशीट का उपयोग कर रहे कैलेंडर के आधार पर) है।

कॉलिंग getFormattedValue() या getCalculatedValue() प्राप्त करने के बजाय getalue() को सेल के संख्याformatmask के अनुसार मानव-पठनीय स्ट्रिंग के रूप में स्वरूपित दिनांक वापस करना चाहिए।

वैकल्पिक रूप से, सर्गेई का समाधान परीक्षण करता है यदि सेल में दिनांक/समय संख्या प्रारूप है और एक्सेल सीरियलाइज्ड टाइमस्टैम्प को यूनिक्स टाइमस्टैम्प में परिवर्तित करने के लिए उचित सहायक विधि को कॉल करता है, तो सामान्य PHP दिनांक फ़ंक्शन का उपयोग इसे मानव पठनीय के रूप में प्रारूपित करने के लिए करता है $ प्रारूप का मूल्य। वहाँ एक समान सहायक विधि PHPExcel_Shared_Date :: ExcelToPHPObject() कि एक PHP दिनांक समय वस्तु

0

लिए एक एक्सेल धारावाहिक टाइमस्टैम्प परिवर्तित कर देंगे पुस्तकालय, PhpOffice के नए संस्करण में है, समारोह है कि इस संभालती excelToDateTimeObject है तो नए कोड प्रारूप चाहिए हो:

$cell = $excel->getActiveSheet()->getCell('B' . $i); 
$InvDate= $cell->getValue(); 
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) { 
    $InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate); 
}