您好所有我讀使用Apche POI
XSSF
一個xlsx
文件。現在我想讀取單元格的顏色並在新的xlsx
文件上應用相同的顏色。我將如何做到這一點。我的代碼是:閱讀XLSX文件時apche的POI獲取單元格顏色
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。
我有一個類似的問題我自己:http://stackoverflow.com/questions/18112155/access-to-the-color-palette-in-an-xssfworkbook我也得到64的索引值背景,我很確定這不是一個有效的價值。我爲橙色和黑色都得到它。 –