2017-01-05 10 views
7

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

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

Example of Cell Text with Two Colors

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

ответ

6

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

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

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

Grab ссылку на нижележащих Workbook и создавать шрифты с соответствующими цветами:

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); 
+0

Спасибо, Ли, его весьма полезный код. – Prak

+0

Рад, что это помогло. – Leigh