Форматы электронных таблиц не работают должным образом - PullRequest
1 голос
/ 02 июля 2019

Я могу заполнить данные из запроса в электронную таблицу. Тем не менее, у меня проблемы с настройкой «дальнего» форматирования для правильной работы. Форматирование для конкретного столбца (дата) и строки (заголовок) работает нормально. Но SpreadsheetFormatColumns, ... Rows, ... CellRange нет. Мне нужно установить шрифт и размер шрифта для всего набора данных.

Вот что я пробовал.

<cfscript>
//Current directory path.
theFile = GetDirectoryFromPath(GetCurrentTemplatePath()) &     "GridDump.xls";
//Create a new Excel spreadsheet object and add the query data.
theSheet = SpreadsheetNew("Raw Data");
FormatDate.dataformat = "dd-mmm-yy";
//Get Row Count and Row Range
RC = toString(result.recordcount+1);
RR = "1-" & RC;
//Get Column Count 
CC = toString(ListLen(GridFieldNames));
//Get Column Letter
CL = chr(CC + 64);
//Get Column Range (Nummerical)
CRN = "1-" & CC;
//Get Column Range (Alphabetical)
CRA = "A-" & CL;
//Set Sheet Format 
WholeSheet = StructNew();
WholeSheet.font="Consolas";
WholeSheet.fontsize=12;
//Set header Row Format
HeadRow = StructNew();
HeadRow.bold="true";
//Insert the Header Row
SpreadsheetAddRow(theSheet,GridFieldNames);
//Insert the Data
SpreadsheetAddRows(theSheet,result);
//Format the Data
SpreadsheetFormatCellRange(theSheet,WholeSheet,1,1,RC,CC);
//SpreadsheetFormatRows(theSheet,WholeSheet,RR);
//SpreadsheetFormatColumns(theSheet,WholeSheet,CRN);
SpreadsheetFormatRow(theSheet,HeadRow,1);
//Header Row
SpreadsheetFormatColumn(theSheet,FormatDate,1);//Date Column
SpreadsheetAddFreezePane(theSheet,0,1);//Top Row Only
//SpreadSheetAddAutofilter(theSheet,"A1:J1");
</cfscript>

Вот результаты Green highlight is correct format, orange is incorrect.

Я получаю одинаковый результат для всех трех «форматированных» функций форматирования. Формат останавливается на полпути через электронную таблицу. Я ожидаю, что весь набор данных примет любой из форматов ранжированных функций.

1 Ответ

1 голос
/ 03 июля 2019

Я получил тот же результат с CF 2018,0,04,314546. Может быть просто ограничение формата XLS. Переход на XLSX у меня работал нормально:

theSheet = SpreadsheetNew("Raw Data", true);

YMMV, но то, что также работало с CF2018, использовало SpreadsheetFormatColumns() вместо SpreadsheetFormatCellRange().

...