gpt4 book ai didi

java - Apache POI 在读取 xlsx 文件时获取单元格颜色

转载 作者:行者123 更新时间:2023-12-02 03:37:57 28 4
gpt4 key购买 nike

大家好,我正在使用 Apche POIXSSF 读取一个 xlsx 文件。现在我想读取单元格的颜色并在新的 xlsx 文件上应用相同的颜色。我该怎么做呢。我的代码是:

public void readXLSXFile(String filePath) throws FileNotFoundException, IOException
{
XSSFRow row;
XSSFRow new_row;
XSSFSheet sheet;
XSSFCell cell;
XSSFCell new_cell;
XSSFCellStyle cellStyle;
XSSFDataFormat dataFormat;
XSSFColor color;

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(filePath));
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet new_sheet = (XSSFSheet) workbook.createSheet();
for(int i = 0; i < xssfWorkbook.getNumberOfSheets(); i++ )
{
sheet = xssfWorkbook.getSheetAt(i);
for(int j =0; j<sheet.getLastRowNum(); j++)
{
row = (XSSFRow) sheet.getRow(j);
new_row = new_sheet.createRow(j);
for(int k = 0; k<row.getLastCellNum(); k++)
{
cell = row.getCell(k);
new_cell = new_row.createCell(k);
cellStyle = workbook.createCellStyle();
dataFormat = workbook.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat(cell.getCellStyle().getDataFormatString()));
color = cell.getCellStyle().getFillBackgroundColorColor();
cellStyle.setFillForegroundColor(color);
new_cell.setCellStyle(cellStyle);
System.out.println(cell.getCellStyle().getFillForegroundColor()+"#");
switch (cell.getCellType()) {
case 0:
new_cell.setCellValue(cell.getNumericCellValue());
break;
case 1:
new_cell.setCellValue(cell.getStringCellValue());
break;
case 2:
new_cell.setCellValue(cell.getNumericCellValue());
break;
case 3:
new_cell.setCellValue(cell.getStringCellValue());
break;
case 4:
new_cell.setCellValue(cell.getBooleanCellValue());
break;
case 5:
new_cell.setCellValue(cell.getErrorCellString());
break;
default:
new_cell.setCellValue(cell.getStringCellValue());
break;
}
}
}
}
workbook.write(new FileOutputStream("G:\\lalit.xlsx"));
}

我正在使用 Apche POI 3.8。

最佳答案

我对 vikiiii 的回答发表了评论。我想我应该进一步扩展它。他的答案特定于 HSSF (.xls),但 HSSF 和 XSSF 类都源自同一接口(interface),因此代码是相同的,您只需使用 XSSF 而不是 HSSF。鉴于您想重复使用我建议使用的颜色:

XSSFColor bgColor = xssfCell.getCellStyle().getFillBackgroundColorColor();

参见here对于 Javadoc。现在要将新单元格设置为该颜色,您可以使用 this .

secondCell.getCellStyle().setFillBackgroundColor(bgColor);

我建议查看 XSSF 和 HSSF 类派生的接口(interface),并看看如何使您的代码能够处理 xls 和 xlsx 文件。据我所知,唯一的区别是您设置工作簿的方式,使用 WorkbookFactory .

关于java - Apache POI 在读取 xlsx 文件时获取单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com