2012-05-20 14 views
5

मैं एक क्वेरी ऑब्जेक्ट में शीट पढ़ने के लिए पढ़ा गया एक सीएफस्प्रेडशीट का उपयोग कर रहा हूं।एकाधिक कॉलम के साथ क्वेरी कॉलम तक कैसे पहुंचे?

<cfspreadsheet action="read" src="TestExcel.xls" sheet="1" query="spreadsheetData" headerrow="1" excludeHeaderRow="true"> 

समस्या यह है कि कुछ शीर्षकों में एक से अधिक शब्द होते हैं। तो मैं इस तरह एक सा एक प्रश्न के साथ अंत:

ID Name Start Date End Date 
3 Test 1/1/2009 1/1/2013 
17 Test 2 11/11/2010 11/11/2012 

अगर मैं स्तंभ नाम पर एक जगह है में से एक तक पहुँचने का प्रयास, मैं कोई त्रुटि मिलती है।

<cfoutput query="spreadsheetData"> 
    #start date# 
</cfoutput> 

मैंने #[start date]# भी कोशिश की है, लेकिन यह काम नहीं किया। मैं प्राप्त एक्सेल शीट के प्रारूप को नियंत्रित नहीं कर सकता। क्या एकाधिक-वर्ड-हेडर कॉलम तक पहुंचने का कोई तरीका है?

उत्तर

13

ब्रैकेट अंकन का उपयोग करते समय सामग्री स्ट्रिंग के रूप अंत करना होगा, ताकि:

<cfoutput query="spreadsheetData"> 
    #spreadsheetData['start date'][CurrentRow]# 
</cfoutput> 


आप उद्धरण का उपयोग नहीं करते हैं, तो आप एक चर, जो इतनी तरह से किया जाता है में से गुजर रहे हैं:

<cfset ColumnName = 'start date' /> 

<cfoutput query="spreadsheetData"> 
    #spreadsheetData[ColumnName][CurrentRow]# 
</cfoutput> 


ध्यान दें कि आप कोष्ठक से पहले क्वेरी नाम का उपयोग करना चाहिए - अगर आप बस [ColumnName] बारे में तो यह इनलाइन सरणी निर्माण अंकन, चर तक पहुँचने नहीं है।

इसके अलावा, अगर एक प्रश्न पाश के इस बाहर का उपयोग करते हुए (यानी नहीं भीतर cfoutput/क्वेरी विशेषता के साथ cfloop), आप भी गुंजाइश के लिए CurrentRow चर, यानी

spreadsheetData[ColumnName][spreadsheetData.CurrentRow] 

जरूरत है (या अपने स्वयं प्रदान स्पष्ट संख्या/चर)।


लेह के रूप में नीचे नोट cfspreadsheet विशेष व्यवहार के लिए, तुम भी कुछ सीधे पहुँचा जा सकता है, उदाहरण के लिए स्तंभ का नाम बदलने के columnnames विशेषता निर्दिष्ट कर सकते हैं,

<cfspreadsheet query=".." columnNames="Foo,Bar,StartDate,Etcetera" ..> 
+1

पीटर जवाब के अलावा, यह ध्यान रखें कि आप भी इस्तेमाल कर सकते हैं 'columnNames' आप यानी' '। – Leigh

+0

@ पीटर - जब मैं अपना पहला नमूना कोड आज़माता हूं तो मुझे त्रुटि मिलती है "जटिल ऑब्जेक्ट प्रकार को सरल मानों में परिवर्तित नहीं किया जा सकता है।" – froadie

+1

@ पीटर - यह कोड हालांकि काम करता है - ' # स्प्रेडशीटडाटा ['प्रारंभ दिनांक'] [currentRow] #'। मेरी इच्छा है कि ऐसा करने के लिए एक कम स्पष्ट तरीका था ... – froadie