2017-02-15 15 views
0

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

Я использовал пример от Adobe - http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec17cba-7f87.html

Я также посмотрел на другие примеры, но эти примеры используют комбинацию CFSPREADSHEET и пои или Java, и я предпочел бы использовать только CFSPREADSHEET, если это возможно. Любая идея, глядя на мой код ниже, где возникает проблема? Благодарю.

<cfcontent type="application/vnd.ms-excel" reset="Yes"> 

<cfquery name="GetData" datasource="#request.dsn#"> 
SELECT * 
FROM v_Occurrences 
</cfquery> 

<cfset strFileName = "OccurrenceData" & "#now().getTime()#" & "#UserID#"> 
<!--- 
<cfdump var="#GetData#"> 
---> 

<cfset filepath = "file:///...OccurenceData.xls"> 
<!--- Write the two sheets to a single file ---> 
<cfspreadsheet 
    action ="read" 
    columnnames = "Occurence_Date,Full_Name_Client" 
    columns = "2" 
     excludeHeaderRow = "false" 
    headerrow = "1" 
    query="GetData" 
    rows = "2" 
    src ="#filepath#"> 

<cfscript> 
    OccurrenceData = SpreadsheetNew("Data"); 
    Month = SpreadsheetNew("Month"); 
    Person = SpreadsheetNew("Person"); 
    SpreadsheetAddRows(occurrencedata,getdata); 
</cfscript> 

<!--- Write the two sheets to a single file ---> 
<cfspreadsheet 
    action="write" 
    filename="#filepath#" 
    name="OccurrenceData" 
    overwrite="true" 
     sheetname="Data" > 


<cfspreadsheet 
    action="Update" 
    filename="#filepath#" 
    name="Month" 
     sheetname="Month"> 

<cfspreadsheet 
    action="Update" 
    filename="#filepath#" 
     name="Person" 
     sheetname="Person" > 

<cfspreadsheet 
    action="read" 
    src="#filepath#" 
    sheetname="occurrencedata" 
    query="GetData"> 

Вот где происходит ошибка: переменная Occurrence_Data неопределен

<cfscript> 
    SpreadsheetAddRow(OccurrenceData,"Date,Name",1,1); 
    SpreadsheetAddRow(OccurrenceData, 
    "#Dateformat(Occurrence_Date,'mm/dd/yyyy')#,#Full_Name_Client#", 
    2,1,true); 
</cfscript> 

<cfspreadsheet 
    action="write" 
    autosize="true" 
    filename="#strFileName#.xls" 
    overwrite="true" 
    password="password" 
    query="GetData" 
     sheetname="Data" > 

ответ

0

Проблема № 1. Это, вероятно, приносит больше вреда, чем пользы.

<cfcontent type="application/vnd.ms-excel" reset="Yes"> 

Проблема № 2. Если вы хотите, чтобы написать два листа в один файл, вы не делаете этого:

OccurrenceData = SpreadsheetNew("Data"); 
Month = SpreadsheetNew("Month"); 

Вы делаете что-то вроде этого:

OccurrenceData = SpreadsheetNew("Data"); 
// do stuff with this sheet 
SpreadsheetCreateSheet(OccurrenceData, "Month"); 
SpreadSheetSetActiveSheetNumber(OccurrenceData, 2); 
// do stuff with this sheet 

SpreadSheetWrite(OccurrenceData, whateverYourFileNameIs); 

Я также предлагаю, чтобы вы делали одно за раз. Напишите немного кода, запустите его и посмотрите на результаты. Затем добавьте немного больше кода, запустите его и посмотрите на результаты. Это поможет вам изолировать код, вызывающий ошибку.

+0

Так что я скорректировал свой код и упростил его до нижнего уровня, и я не получаю никаких ошибок, но я также не получаю лист excel - просто пустой экран. Я знал, что мне нужно настроить строку SpreadsheetAddRow, чтобы скопировать мои данные, чтобы вы могли видеть изменения ниже: spObj = Электронная таблица Новые («Данные»); SpreadsheetAddRows (spObj, # getdata #); SpreadsheetAddRow (spObj, "Date, Name", 1,1); ТаблицаСоздание таблицы (spObj, «Месяц»); SpreadSheetSetActiveSheetNumber (spObj, 2);

+0

spObj = SpreadsheetNew ("Data"); for (i = 1; i <= GetData.recordcount; i ++) { SpreadsheetAddRow (spObj, "# Dateformat (getdata.Occurrence_Date, 'mm/dd/yyyy') #, # GetData.Full_Name_Client #", 2 , 1, правда); } SpreadSheetWrite (spObj, "# путь_к_файл ## strFileName # .xls", "да");

 Смежные вопросы

  • Нет связанных вопросов^_^