Apache POI-get cell Farbe beim Lesen von xlsx-Datei
Hallo an alle ich lese eine xlsx
- Datei mit XSSF
von Apche POI
. Jetzt möchte ich Lesen, die Farbe der Zelle und gelten gleiche Farbe auf neue xlsx
- Datei. wie werde ich es tun. mein code ist:
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"));
}
Ich eine mit Apche POI 3.8.
- Ich habe ein ähnliches Problem habe: stackoverflow.com/questions/18112155/... ich bekomme auch einen indizierten Wert von 64 zum hintergrund, ich bin mir ziemlich sicher, dass ist kein Gültiger Wert. Ich bekomme es für beide, Orange und Schwarz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich einen Kommentar gepostet zu vikiiii Antwort. Ich dachte, ich würde erweitern auf es ein bisschen mehr. Seine Antwort ist spezifisch für HSSF (.xls), aber sowohl die HSSF und XSSF-Klassen stammen von der gleichen Schnittstelle, sodass der code ist der gleiche, die Sie gerade verwenden XSSF statt HSSF. Zu sehen, wie Sie wiederverwenden möchten die Farbe würde ich empfehlen:
Sehen hier für die Javadoc. Nun, um eine neue Zelle, die Farbe, die Sie verwenden können,diese.
Ich würde empfehlen, sich auf die Schnittstellen, die das XSSF und HSSF-Klassen steigen aus und schauen uns Ihr code in der Lage sein, um die xls-und xlsx-Dateien. So weit ich bin mir bewusst, der einzige Unterschied ist die Art, wie Sie die Arbeitsmappe, mit WorkbookFactory.
Können Sie diesen code verwenden, um die Zelle Farbe.
Versuchen