8

使用 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);

具有两种颜色的单元格文本示例

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

4

1 回答 1

7

内置函数不支持它。但是,您可以利用底层 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);
于 2017-01-05T12:05:27.760 回答