使用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);
如何应用两种颜色来格式化单个细胞?
答案 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);