Ошибка при создании раскрывающегося списка проверки в электронной таблице с помощью ColdFusion

Я просто создаю раскрывающийся список проверки в электронной таблице из запроса к базе данных, используя ColdFusion. Но я получаю следующую ошибку

"строковые литералы в формулах не могут быть больше 255 символов ASCII"

Может ли кто-нибудь помочь исправить это, так как мне срочно нужна эта функция.

<cfset pop_array = ArrayNew(1)>
<cfset provider_name_array = ArrayNew(1)>
<h1>Hello</h1>
<cfquery name="qryGetPOP" datasource="webalc">
    select distinct center_code from alc_pop<!--- where rownum<=10 --->
</cfquery>
<!--- Convert the qryGetPOP to an array. --->
<cfloop query="qryGetPOP">
    <cfset arrayAppend(pop_array, center_code)>
</cfloop>

<cfquery name="qryGetProviderName" datasource="webalc">
    select distinct telcoofficialname from cmt_access_provider where rownum<=10
</cfquery>

<h1>Hello1</h1>
<!--- Convert the qryGetProviderName to an array. --->
<cfloop query="qryGetProviderName">
    <cfset arrayAppend(provider_name_array, telcoofficialname)>
</cfloop>

<cfdump var="‪#‎qryGetPOP‬#">
<cfdump var="‪#‎pop_array‬#">
<cfdump var="‪#‎provider_name_array‬#">

<cfscript>
    //Create New Spreadsheet
    SpreadsheetObj = spreadsheetNew("testsheet");
        SpreadSheetAddRow(spreadsheetObj,'Request_ID,Requested_Services,Target_Cost,MRC_cost,NRC_Cost,MRC_Margin,NRC_Margin,Carrier_On_Net,Currency_information,Access_Technology,Speed,CSAID,Provider_Name,Centre_Code,Need_for_optimization,Contract_Duration,Budgetary_OR_Firm,Carrier_Quote_Reference,Quote_Received_Date,Optimization_Cost_From,Quote_Validity_Days,Expiry_Term_Date,Comments_to_Sales');
    //Get Workbook object
    workbook = SpreadsheetObj.getWorkBook();

    //Get sheet by name where you liek to add list validation
    sheet = workbook.getSheet("testsheet");


    //Create object of required class
    dvconstraint = createObject("java","org.apache.poi.hssf.usermodel.DVConstraint");
    cellRangeList = createObject("java","org.apache.poi.ss.util.CellRangeAddressList");
    dataValidation = createObject("java","org.apache.poi.hssf.usermodel.HSSFDataValidation");


    //Define cell list rowstart, rowend, column start, column end for pop list
    addressList = cellRangeList.init(1, 50, 0, 0);//First 10 rows in first column
    dvConstraint = dvconstraint.createExplicitListConstraint(pop_array); //set contraint value
    dataValidation = dataValidation.init(addressList, dvConstraint); //apply validation on address list
    dataValidation.setSuppressDropDownArrow(false);//Enable/disable dropdown arrow.
    sheet.addValidationData(dataValidation);//Add validation to sheet.

    //Create object of required class for provider
    dvconstraint_provider = createObject("java","org.apache.poi.hssf.usermodel.DVConstraint");
    cellRangeList_provider = createObject("java","org.apache.poi.ss.util.CellRangeAddressList");
    dataValidation_provider = createObject("java","org.apache.poi.hssf.usermodel.HSSFDataValidation");
    //Define cell list rowstart, rowend, column start, column end for provider list
    addressList_provider = cellRangeList.init(1, 50, 1, 1);//First 10 rows in first column
    dvConstraint_provider = dvconstraint_provider.createExplicitListConstraint(provider_name_array); //set contraint value
    dataValidation_provider = dataValidation_provider.init(addressList_provider, dvConstraint_provider); //apply validation on address list
    dataValidation_provider.setSuppressDropDownArrow(false);//Enable/disable dropdown arrow.
    sheet.addValidationData(dataValidation_provider);//Add validation to sheet.

    //write spreadsheet object
    spreadsheetwrite(SpreadsheetObj,"‪#‎expandpath‬('./downloadsheet.xls')#",true);
</cfscript>
<cfoutput>Done</cfoutput>

person user3313928    schedule 15.02.2014    source источник


Ответы (2)


Сообщение об ошибке довольно ясно. Некоторые из значений, которые вы пытаетесь добавить в список проверки, длиннее, чем максимальная длина, разрешенная Excel, 255 символов. Либо сократите значения, либо попробуйте предложение по использованию скрытых диапазонов для обхода ограничения.

person Leigh    schedule 15.02.2014
comment
ключевое слово function отсутствует в объявлении FUNCTION. Компилятор CFML обрабатывал: Оператор скрипта, начинающийся с HSSFWorkbook в строке 32, столбец 1. Оператор скрипта, начинающийся с function в строке 31, столбце 9. Тег cfscript, начинающийся в строке 30, столбец 2. Я получаю эту ошибку. Пожалуйста, помогите мне исправить это. - person user3313928; 17.02.2014
comment
Эта ошибка не исходит из кода, который вы разместили. Если это новая проблема, вам следует открыть отдельную тему. В противном случае отредактируйте свой вопрос, чтобы добавить код и полное сообщение об ошибке. - person Leigh; 17.02.2014

Не уверен, что это поможет. Это даст вам очень простой раскрывающийся список «да» или «нет» в ячейке.

Обратите внимание... это для xssf, а не для hssf (формат файла .xlsx)

<!--- Create an instance of a new spreadsheet --->
<cfset local.spreadsheet = spreadsheetNew("My Spreadsheet", true)>

<!--- we need all this so we can have dropdowns --->
<cfset local.workbook = local.spreadsheet.getWorkBook()>
<cfset local.worksheet = local.workbook.getSheet("My Spreadsheet")>
<cfset local.dataValidationConstraint = createObject("java","org.apache.poi.xssf.usermodel.XSSFDataValidationConstraint")>
<cfset local.cellRangeList = createObject("java","org.apache.poi.ss.util.CellRangeAddressList")>
<cfset local.dataValidationHelper = createObject("java","org.apache.poi.xssf.usermodel.XSSFDataValidationHelper").init(local.worksheet)>

<!--- Define cell list rowstart, rowend, column start, column end --->
<cfset local.list = local.cellRangeList.init(0, 1, 1, 1)>
<cfset local.dvconstraint = local.dataValidationHelper.createExplicitListConstraint(["YES","NO"])>
<cfset local.dataValidation = local.dataValidationHelper.createValidation(local.dvconstraint, local.list)>
<cfset local.dataValidation.setSuppressDropDownArrow(true)>

<!--- add it to the spreadsheet --->
<cfset local.worksheet.addValidationData(dataValidation)>
person Ben Summerhayes    schedule 06.04.2016