Formatação de Célula de Planilha

Editar no final

Alguém pode ver o que estou fazendo errado? Estas são minhas expectativas e observações:

Espero que uma planilha chamada Search Parameters tenha a célula a1 em fonte vermelha em negrito. Eu consigo o que espero.

Eu espero uma planilha chamada "4D, CCCU, SDAU" que tem dados começando na linha 3. Eu entendo isso.

Espero que a linha 3 tenha o texto "fonte em negrito 3 verde verdadeiro" e esteja em fonte verde em negrito. Eu recebo o texto, mas recebo uma fonte vermelha em negrito, que corresponde à célula a1 na outra planilha. Na verdade, a formatação nessa célula sempre corresponderá à célula a1 da outra planilha.

Espero que as células restantes tenham um valor como "fonte normal 4 blue true" e esteja em fonte em negrito azul. Eu obtenho os valores, mas sem formatação.

Meus writedumps sempre me mostram os valores que eu espero.

O código está abaixo. AddNewRow é um udf.

Para reiterar, a questão é: por que as células não estão formatando como eu esperava?

    <cfscript>
    FileName = "d:\dw\dwweb\work\Antibiotics.xls";

    SearchParameters = QueryNew("Item,Value","varchar,varchar");
    AddNewRow(SearchParameters, "Item,Value","Date Range,#DateRange#");

    SearchParametersSheet = Spreadsheetnew("SearchParameters");
    SpreadSheetAddRows(SearchParametersSheet, SearchParameters);
    SheetNumber = 1;
    DrugsByCategory = QueryNew("Item,font","varchar,varchar");
    format1 = StructNew();
    format1.bold = true;
    format1.color = "red";
    SpreadsheetFormatCell(SearchParametersSheet, format1, 1, 1); 
    </cfscript>

    <cfspreadsheet action="write" filename="#FileName#"
                name="SearchParametersSheet"  
    sheet=1 sheetname="Search Parameters" overwrite=true>

    <cfoutput query="AllDrugs" group="CategoryName">
    <cfset AddNewRow(DrugsByCategory,"Item#Chr(30)#font"
                 ,"#CategoryName##Chr(30)#bold",Chr(30))>
    <cfoutput>
    <cfset AddNewRow(DrugsByCategory,"Item#Chr(30)#font"
                 ,"#StandardSpelling##Chr(30)#normal",Chr(30))>
    </cfoutput>
    </cfoutput>


    <cfquery name="units" dbtype="query">
    select distinct unit
    from initialresults
    </cfquery>

    <cfloop query="units">
    <cfscript>
    SheetNumber ++;
    ThisSpreadSheet = SpreadSheetNew(unit);
    RowNumber = 3;

    for (i = 1; i <= DrugsByCategory.recordcount; i ++) {
    // note that the data might contain commas, so we have to use two commands 
    SpreadsheetAddRow(ThisSpreadSheet, "", RowNumber, 1);
    SpreadSheetSetCellValue(ThisSpreadSheet, DrugsByCategory.Item[i], RowNumber, 1);

    if (DrugsByCategory.font[i] == "bold"){
    format1.bold = true;
    format1.color = "green";
    writedump(var="#format1#" label="#RowNumber#");

    SpreadSheetSetCellValue(ThisSpreadSheet
                , "bold font #Rownumber# #format1.color# #format1.bold#"
                , RowNumber, 1);
    SpreadsheetFormatCell(ThisSpreadSheet, format1, RowNumber, 1); 


    }
    else {
    format1.color = "blue";
    format1.bold = true;
    writedump(var="#format1#" label="#RowNumber#");
    SpreadSheetSetCellValue
                 (ThisSpreadSheet, "normal font 
                  #Rownumber# #format1.color# #format1.bold#"
                , RowNumber, 1);
    SpreadsheetFormatCell(ThisSpreadSheet, format1, RowNumber, 1); 
    }
    RowNumber ++;

    }

    </cfscript>
    <cfspreadsheet action="update" filename="#FileName#" name="ThisSpreadSheet"  
        sheet=#SheetNumber# sheetname="#unit#" >

    </cfloop>

Editar começa aqui

Este é o código auto-contido que Leigh sugeriu. A sugestão de Travis para os métodos de formatação é comentada, mas quando os usei, os resultados não mudaram.

<cfscript>
Sheet1 = Spreadsheetnew("Sheet1");
SpreadSheetAddRow(Sheet1, "fred");
SheetNumber = 1;

Format = {};
format.bold = true;
format.color = "blue";
MYfile = "d:\dw\dwtest\dan\abc.xls";
writedump(format);
SpreadsheetFormatCell(Sheet1, Format, 1, 1); 

Values = "a,b,a,b";

</cfscript>
<cfspreadsheet action="write" filename="#MYFile#" name="Sheet1"  
    sheet=1 sheetname="fred" overwrite=true>

<cfloop list="a" index="letter">
<cfscript>
RowNumber = 1;
SheetNumber ++;
ThisSheet = SpreadSheetNew(letter);
for (i = 1; i <= 4; i ++) {

SpreadsheetAddRow(ThisSheet, ListGetAt(Values, i));
if (ListGetAt(Values, i) == "a") {
format.color = "green";
SpreadsheetFormatCell(ThisSheet, Format, RowNumber, 1); 
       //SpreadsheetFormatCell(ThisSheet, {bold="true",color="green"}, RowNumber, 1); 
}
else {
format.color = "red";
SpreadsheetFormatCell(ThisSheet, Format, RowNumber, 1); 
      //SpreadsheetFormatCell(ThisSheet, {bold="true",color="green"}, RowNumber, 1); 

}
RowNumber ++;   
}

</cfscript>
<cfspreadsheet action="update" filename="#MYFile#" name="ThisSheet"  
    sheet="#sheetNumber#" sheetname="#letter#" >

</cfloop>

Os resultados são: Folha fred é como esperado, fonte azul em negrito na célula a1.

Na folha a, as células a1 e a3 têm a letra a em fonte azul em negrito. Eu esperava verde ousado. As células a2 e a4 têm a letra b, não formatada. Eu esperava negrito e vermelho.

Estou fazendo algo estúpido ou algo errado. Estou usando o ColdFusion 9.01 e o Excel 2010.

questionAnswers(1)

yourAnswerToTheQuestion