@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();
如果以上有写错误的地方,请大家指出.thanks!