coldfusion - SpreadsheetFormatRow अचानक काम करना बंद हो जाता है




coldfusion-10 cfspreadsheet (2)

चूंकि आप सभी पंक्तियों में एक ही प्रारूप को लागू कर रहे हैं, केवल एक बार करते हैं , प्रत्येक पंक्ति में नहीं। लूप द्वारा समस्या के हल होने के बाद स्प्रेडशीटफ़ॉर्मैट सेलेल का उपयोग करना:

SpreadsheetFormatCellRange(excelSheet
                             , formatHeadingRow
                              , startRow
                              , startCol
                              , endRow
                              , endCol ); 

मुझे संदेह है कि समस्या किसी तरह Excel की अधिकतम शैली सीमाओं से संबंधित है । चूंकि सीएफ़ एक ब्लैक बॉक्स है, इसलिए यह जानना मुश्किल है कि यह वास्तव में कितनी शैलियाँ पैदा करता है या बिल्कुल कैसे वे लागू होते हैं। हालांकि, मेरे अनुभव में यह जानने के बिना भी शैली की सीमाओं को पार करना बहुत आसान है खासकर जब पुराने .xls फ़ाइल प्रारूप का उपयोग करते समय, जिनकी सीमाएं बहुत कम होती हैं यही कारण है कि मैं इसके बजाय नए .xlsx प्रारूप का उपयोग करने का सुझाव दिया।

getCustomPalette () विधि अपरिभाषित है

सही बात। यह XSSF में मौजूद नहीं है क्या आपके कारण कुछ अन्य कारणों से आपको अपने रंगों को परिभाषित करने के बजाय कस्टम पैलेट की ज़रूरत है, जैसा कि आपके दूसरे धागे में उल्लिखित है?

मैंने इस पोस्ट को देखा है, लेकिन कोई संकल्प नहीं दिखता है। वैसे भी, मैं एक एक्सेल स्प्रैडशीट उत्पन्न करने के लिए कोल्ड फ्यूजन 10 का उपयोग कर रहा हूं। हालांकि, जब मैं स्प्रेडशीटफ़ॉर्मैट रोवा () का उपयोग करता हूं और पंक्तियों में फ़ॉर्मेट करता हूं, तो यह केवल 3 के बारे में करता है और फिर अचानक बंद हो जाता है यहाँ एक उदाहरण है...

कोल्ड फ्यूजन कोड

<cfscript>

    rowCount = 1;
    headingRows = 4;

    // Create instance of new Spreadsheet
    excelSheet = SpreadsheetNew("ReportName",false); 

    // HEADING (IMAGE) ROW FORMAT
    formatHeadingRow = StructNew();
    formatHeadingRow.fgcolor="blue";        

    // Add rows to fill the header area (must add as many as we are spanning with the above image)
    for (x=0;x<headingRows;x++) {
        SpreadsheetAddRow(excelSheet,"TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST,TEST");
        SpreadsheetFormatRow(excelSheet,formatHeadingRow,rowCount);
        rowCount++;
    }

</cfscript>

<!--- stream it to the browser --->
<cfheader name="Content-Disposition" value="inline; filename=reportName.xls">
<cfcontent type="application/vnd.ms-excel" variable="#SpreadSheetReadBinary(excelSheet)#">

और यहां परिणामस्वरूप एक्सेल शीट का एक स्क्रीनशॉट है

पंक्तियों और कोशिकाओं की एक्स संख्या के बाद क्यों स्वरूपण रोक रहा है? अगर मैं एक्सएमएल फॉर्मेट का प्रयोग करके स्विच करता हूं

excelSheet = SpreadsheetNew("ReportName",true);

यह ठीक से काम करता है हालांकि मैं अपने रंगों के लिए एक कस्टम पैलेट का उपयोग कर रहा हूं इसलिए मुझे नहीं लगता कि एक्सएलएसएक्स स्वरूप में स्विच करना मेरे लिए काम करने वाला है। जब मैं कोशिश करता हूं और फिर कॉल करता हूं

palette = excelSheet.getWorkbook().getCustomPalette();

मुझे यह बताते हुए एक त्रुटि मिलती है कि GetCustomPalette () विधि अपरिभाषित है।

coldfusion.runtime.java.MethodSelectionException: The getcustompalette method was not found

क्या कोई मेरी मदद कर सकता है? धन्यवाद!!!

या इससे भी बेहतर क्योंकि यह XML प्रारूप के साथ काम करता है, क्या कोई XLSX (xml प्रारूप) के साथ कस्टम पैलेट का उपयोग कैसे कर सकता है


सीएफ से एक्सएलएस फाइलों के साथ काम करते समय यह अक्सर एक मुद्दा है; वे एक निश्चित संख्या में कोशिकाओं के बाद शैलियों को लागू करना रोकते हैं। मैं इसे आसपास के बजाय एक्सएसएलएस के लिए आउटपुट करके काम करने में सक्षम हूं। (मैं ऐसा करके अपनी समस्या को दोहराने और "ठीक" करने में सक्षम था।)

excelSheet = SpreadsheetNew("ReportName",true); 

...

<cfheader name="Content-Disposition" value="inline; filename=reportName.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        variable="#SpreadSheetReadBinary(excelSheet)#">