Редактировать в конце
Может ли кто-нибудь увидеть, что я делаю неправильно? Вот мои ожидания и наблюдения:
Я ожидаю, что на листе с именем «Параметры поиска» ячейка a1 будет выделена жирным красным шрифтом. Я получаю то, что ожидаю.
Я ожидаю рабочий лист с именем «4D, CCCU, SDAU», данные которого начинаются в строке 3. Я понимаю это.
Я ожидаю, что строка 3 будет иметь текст «полужирный шрифт 3, зеленый, правда» и будет выделена жирным зеленым шрифтом. Я получаю текст, но получаю жирный красный шрифт, который соответствует ячейке a1 на другом листе. На самом деле форматирование в этой ячейке всегда будет соответствовать ячейке a1 на другом листе.
Я ожидаю, что остальные ячейки будут иметь значение, подобное «обычный шрифт 4 blue true», и будут выделены синим полужирным шрифтом. Я получаю значения, но без форматирования.
Мои дампы записи всегда показывают мне ожидаемые значения.
Код ниже. AddNewRow — это udf.
Повторюсь, вопрос в том, почему ячейки не форматируются так, как я ожидаю?
<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>
Редактирование начинается здесь
Это автономный код, предложенный Ли. Предложение Трэвиса относительно методов формата закомментировано, но когда я их использовал, результаты не изменились.
<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>
Результаты таковы: Лист fred, как и ожидалось, жирный синий шрифт в ячейке a1.
На листе а в ячейках а1 и а3 буква а выделена жирным синим шрифтом. Я ожидал насыщенного зеленого цвета. Ячейки а2 и а4 имеют неформатированную букву b. Я ожидал смелый и красный.
Я делаю что-то глупое, или что-то не так. Я использую ColdFusion 9.01 и Excel 2010.
cfspreadsheet
проблемы в стилеcfpdf
. Пробовали ли вы использовать статический формат вместо структуры format1{bold="true",color="green"}
- person Travis   schedule 22.02.2013