当前位置: 首页 > 面试题库 >

使用Apache POI将自定义颜色添加到Excel工作表

左丘昕
2023-03-14
问题内容

谁能解释使用Apche
poi中的Cellstyle将Excel表格(前景值或背景值)(rgb值或十六进制值)添加到Excelsheet(XSSF工作簿)时如何自定义颜色?


问题答案:

设置自定义颜色取决于Excel文件的类型(Office Open XML格式*.xlsx与BIFF格式*.xls)。apache poi由于弃用,使用不同版本的可能会有所不同。

使用Office Open
XML格式,*.xlsx我们可以简单地使用XSSFColor的构造函数设置新颜色。在apache poi 4.0.0 XSSFColor(byte[] rgb, IndexedColorMap colorMap)可以使用。IndexedColorMapnull如果没有其他颜色的地图应使用而不是默认的一个。

使用BIFF格式时,*.xls只能使用索引颜色。但是可能会临时覆盖某些索引颜色。

以下代码显示了两者都用于设置单元格的填充颜色。使用的自定义颜色是RGB(112,134,156)。使用HSSF(BIFF格式*.xls)索引颜色HSSFColor.HSSFColorPredefined.LIME将被暂时覆盖。

请注意,以下内容已通过测试并可以使用apache poi 4.0.0。不保证使用其他版本。

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

public class CreateExcelCustomColor {

 public static void main(String[] args) throws Exception {

  Workbook workbook = new XSSFWorkbook();
  //Workbook workbook = new HSSFWorkbook();

  CellStyle cellcolorstyle = workbook.createCellStyle();
  cellcolorstyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  byte[] rgb = new byte[]{(byte)112, (byte)134, (byte)156};
  if (cellcolorstyle instanceof XSSFCellStyle) {
   XSSFCellStyle xssfcellcolorstyle = (XSSFCellStyle)cellcolorstyle;
   xssfcellcolorstyle.setFillForegroundColor(new XSSFColor(rgb, null));
  } else if (cellcolorstyle instanceof HSSFCellStyle) {
   cellcolorstyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.LIME.getIndex());
   HSSFWorkbook hssfworkbook = (HSSFWorkbook)workbook;
   HSSFPalette palette = hssfworkbook.getCustomPalette();
   palette.setColorAtIndex(HSSFColor.HSSFColorPredefined.LIME.getIndex(), rgb[0], rgb[1], rgb[2]);
  }

  Sheet sheet = workbook.createSheet();
  Cell cell = sheet.createRow(0).createCell(0);
  cell.setCellStyle(cellcolorstyle);

  FileOutputStream out = null; 
  if (workbook instanceof XSSFWorkbook) {
   out = new FileOutputStream("CreateExcelCustomColor.xlsx");
  } else if (workbook instanceof HSSFWorkbook) {
   out = new FileOutputStream("CreateExcelCustomColor.xls");
  }
  workbook.write(out);
  out.close();
  workbook.close();

 }

}


 类似资料:
  • 任何人都可以解释如何使用(rgb值或十六进制值)将自定义颜色添加到excel工作表(在前景或背景中)使用Apche poi中的单元格样式添加到Excelsheet(XSSF工作簿)中?

  • 我有以下代码用于在 matplotlib 中制作表格图。 plt 是一个拼贴图对象 我想为我使用的颜色图添加一个颜色条。 我试着做<代码>图。colorbar()但这给了我一个画布错误。

  • 问题内容: 我已经构建了自己的自定义react-bootstrap Popover组件: 该组件的呈现方式如下: 现在,我想向组件中添加自定义道具,例如:我的文字,并使用新道具在弹出框中设置一些内容,例如- 但随后我在浏览器中收到此警告: 警告:标签上的未知道具。从元素中删除这些道具。 现在,我想我可以删除零件并逐个插入所有原始道具,而无需自定义道具,但是这样我就失去了“淡入淡出”效果,这也是处理

  • 我试图将列表数据写入一个工作簿中的多个excel表格。与第一个列表一样,代码将创建新工作簿并为列表[1]创建新工作表,对于第二个列表,它将在现有工作簿中创建新工作表,依此类推。所以我写了下面的代码。但是它不起作用,我只能看到列表[1]的第一页。有人能帮我提供任何替代解决方案吗? 下面我写的代码 谢谢,Priyank Shah

  • 我有一个插件,创建一个自定义的帖子类型,名为弹出。但它没有在编辑页面上添加特色图像元框。我可以进入插件并像这样添加它。 在插件更新之前,这是有效的。在我的主题中,我添加了以下内容: 但这不会将元框添加到自定义帖子类型。 问题:是否可以在我的插件之外,或者在我的函数中添加此功能。php文件,这样我就可以更新插件了? 编辑:最终使用了免费插件高级自定义字段,让med添加多张特色图片。http://ww

  • 问题内容: 我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如 该解决方案对我有用,可以以“漂亮”的方式重用代码。 但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。 这可能是什么原因?我是否缺少修改标准对象原型的东西? 注意:我很