在Coldfusion中以单色格式化单元格上的文本

时间:2017-01-05 11:05:57

标签: coldfusion spreadsheet cfspreadsheet

使用Coldfusion 10,我需要将单元格内容格式化为两种颜色(黑色和蓝色)。让电子表格上的单元格包含字符串“Text1:Text2”。其中“Text1”的颜色应为黑色,“Text2”的颜色应为蓝色。 我尝试了下面的代码,但它产生了所有蓝色文本。

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

如何应用两种颜色来格式化单个细胞?

1 个答案:

答案 0 :(得分:6)

内置功能不支持。但是,您可以使用基础POI库并使用RichTextString来完成此操作。

假设您已经创建了工作表和单元格:

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

获取对基础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);