Отформатируйте текст в ячейке двумя цветами в Coldfusion

Используя Coldfusion 10, мне нужно отформатировать содержимое ячейки в два цвета (черный и синий). Пусть ячейка электронной таблицы содержит строку «Текст1: Текст2». где цвет «Текст1» должен быть черным, а «Текст2» — синим. Я пробовал код ниже, но он выводит весь синий текст.

SpreadsheetAddRow(spreadsheetData,"Text1: Text2",1,1); 
format1=StructNew(); 
format1.color="black";
SpreadsheetFormatRow(spreadsheetData,format1,1);
format1.color="blue";
SpreadsheetFormatRow(spreadsheetData,format1,1);

Пример текста ячейки с двумя цветами

Как я могу применить два цвета для форматирования одной ячейки?


person Prak    schedule 05.01.2017    source источник


Ответы (1)


Не поддерживается встроенными функциями. Однако вы можете подключиться к базовой библиотеке POI и использовать RichTextString для этого.

Предполагая, что вы уже создали рабочий лист и пустую ячейку:

spreadsheetData = SpreadSheetNew("Sheet1", true);
SpreadsheetAddRow(spreadsheetData,"",1,1); 

Возьмите ссылку на основную Рабочую книгу и создайте шрифты с соответствующими цветами:

wb = spreadsheetData.getWorkbook();
Colors = createObject("java", "org.apache.poi.ss.usermodel.IndexedColors");
greenFont = wb.createFont();
greenFont.setColor(Colors.GREEN.index);
blueFont = wb.createFont();
blueFont.setColor(Colors.BLUE.index);

Затем создайте объект RichTextString и добавьте каждый часть текста желаемого цвета:

// Using GREEN and BLUE for demo purposes
richString = createObject("java", "org.apache.poi.xssf.usermodel.XSSFRichTextString").init();
richString.append("Text1: ", greenFont);
richString.append("Text2", blueFont);

Наконец, примените RichTextString к пустой ячейке, то есть A1, которую вы создали ранее. Обратите внимание, в отличие от CF, индексы отсчитываются от 0.

cell = wb.getSheet("Sheet1").getRow( 0 ).getCell( 0 );
cell.setCellValue(richString);
person Leigh    schedule 05.01.2017
comment
Рад, что это помогло. - person Leigh; 09.01.2017