POI Excel 07 关于字体样式补充,自定义调色板

@author YHC

单元格字体补充:

最大数量唯一字符在一个单元格的限制是32767(最大的short正整数 [2^15-1] ),你应该在你的程序中对字体进行重用,而不是为每个单元格创建一个字体:如下例

错误:

                      for (int i = 0; i < 10000; i++) {
			                              //创建行
		                 Row row = sheet.createRow(i);
		                 //创建单元格
		                Cell cell = row.createCell((short) 0);
                               //创建样式
		               CellStyle style = workbook.createCellStyle();
		               //创建字体
		               Font font = workbook.createFont();
		              //设置粗体
		               font.setBoldweight(Font.BOLDWEIGHT_BOLD);
		              //将字体设置给该样式
		              style.setFont(font);
		              //将此单元格应用该样式
		              cell.setCellStyle(style);
		              }

                      

正确:在字体设置相同的情况之下,建议使用这种

                 //创建样式
		           CellStyle style = workbook.createCellStyle();
		          //创建字体
		          Font font = workbook.createFont();
		         //设置粗体
		        font.setBoldweight(Font.BOLDWEIGHT_BOLD);
		        //设置字体
		        style.setFont(font);
		       //创建行以及单元格
		       for (int i = 0; i < 10000; i++) {
		          Row row = sheet.createRow(i);
		          Cell cell = row.createCell((short) 0);
		          cell.setCellStyle(style);
		       }
                  


自定义颜色:

//创建Excel
		    HSSFWorkbook wb = new HSSFWorkbook();
		    //创建工作薄
		    HSSFSheet sheet = wb.createSheet();
		    //创建行
		    HSSFRow row = sheet.createRow(0);
		    //创建单元格
		    HSSFCell cell = row.createCell(0);
		    //设置单元格值
		    cell.setCellValue("Default Palette");

		    //在前面的例子我们从标准的调色板应用一些颜色
		    //我们将使用红行色字体在一个绿黄色背景上
		    HSSFCellStyle style = wb.createCellStyle();
		    //填充前景色(绿黄色)
		    style.setFillForegroundColor(HSSFColor.LIME.index);
		    //填充模式,块填充
		    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            //创建字体
		    HSSFFont font = wb.createFont();
		    //设置字体颜色为(红色)
		    font.setColor(HSSFColor.RED.index);
		    //将字体设置给样式
		    style.setFont(font);
            //应用此样式
		    cell.setCellStyle(style);

		    
		    //保存上面Excel,默认的调色板 
		    FileOutputStream out = new FileOutputStream("default_palette.xls");
		    wb.write(out);
		    out.close();

		    
		    //现在,我们替换调色板上红色和绿黄色
		    //替换一个更有魅力的组合 
		    // (借用非常喜欢的freebsd.org)
		    cell.setCellValue("Modified Palette");
		    //根据WorkBook创建一个自定义调色板
		    HSSFPalette palette = wb.getCustomPalette();

		    //替换标准的红色为 freebsd.org 红色,以下是三基色 红(Red)绿(Green)蓝(BLUE)
		    palette.setColorAtIndex(HSSFColor.RED.index,
		            (byte) 153,  //RGB 红色 (取值0-255)
		            (byte) 0,    //RGB 绿色
		            (byte) 0     //RGB 蓝色
		    );
		    
		    //替换绿黄色为freebsd.org金黄色
		    palette.setColorAtIndex(HSSFColor.LIME.index, (byte) 255, (byte) 204, (byte) 102);

		    //保存Excel,修改后的调色板 
		    // 注意不管我们之前是否使用过红色(RED)或者黄绿色(LIME) 
		    // 都会以新的颜色出现
		    //写入文件
		    out = new FileOutputStream("modified_palette.xls");
		    wb.write(out);
		    out.close();

运行后效果:

POI Excel 07 关于字体样式补充,自定义调色板

如果以上有写错误的地方,请大家指出.thanks!

你可能感兴趣的:(Excel)