我试图写一个填充了DB(mysql)数据的Excel。 我可以写文件,但是当我尝试在特定条件下更改单元格颜色时 表单中的标题行的所有相同颜色异常都是 Image of produced Excel (图像中显示的数据是为了隐私而更改,但是excel正确地从DB写入数据) 如果状态是一个FISSATO我想要使用一种颜色(相同的sor KO和DA RICHIAMARE)用于其他状态我希望细胞是白色的,我是4样式的细胞。
这里是代码:
public static void scriviExcelDaDb(String nomeFile, int idLista) throws Exception {
String query = "";
String foglio = "Candidati"; // ateneo + "_" + corso + "_" +
// idEstrazione;
nomeFile = nomeFile + "(da DB).xlsx";
System.out.println("Inizio a scivere l'Excel " + nomeFile);
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet(foglio);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(nomeFile);
System.out.println("Preparo la riga di intestazione");
sheet.setDefaultRowHeight((short) 15);
CellStyle headerCellStyle = workbook.createCellStyle();
//XSSFColor myColor = new XSSFColor(Color.decode("#00CCFF"));
headerCellStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex());
headerCellStyle.setBorderBottom(BorderStyle.THICK);
headerCellStyle.setBorderLeft(BorderStyle.THICK);
headerCellStyle.setBorderRight(BorderStyle.THICK);
headerCellStyle.setBorderTop(BorderStyle.THICK);
headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerCellStyle.setWrapText(true);
Row headerRow = sheet.createRow(0);
for (int cella = 0; cella < 10; cella++) {
headerRow.createCell(cella);
headerRow.getCell(cella).setCellStyle(headerCellStyle);
}
headerRow.getCell(0).setCellValue("STATO");
headerRow.getCell(1).setCellValue("COGNOME");
headerRow.getCell(2).setCellValue("NOME");
headerRow.getCell(3).setCellValue("E-MAIL");
headerRow.getCell(4).setCellValue("CELLULARE");
headerRow.getCell(5).setCellValue("TELEFONO");
headerRow.getCell(6).setCellValue("INDIRIZZO");
headerRow.getCell(7).setCellValue("CAP");
headerRow.getCell(8).setCellValue("CITTA");
headerRow.getCell(9).setCellValue("PROVINCIA");
for (int cella = 0; cella < 10; cella++) {
headerRow.getCell(cella).setCellStyle(headerCellStyle);
}
// workbook.write(fos);
// fos.flush();
System.out.println("Scrivo la riga di Intestazione");
try {
Class.forName(JDBC);
// carica la classe del driver
// stabilisce la connessione
Connection connessione = DriverManager.getConnection(DB_URL, USER_DB, PWD);
Statement stat = connessione.createStatement();
query = "select s.id_stato ,s.descrizione, c.nome, c.cognome, c.email, c.cellulare,c.telefono,c.indirizzo, "
+ "c.cap,c.citta,c.provincia,l.ateneo,l.estrazione "
+ "from candidati as c,liste as l, stato_candidato s " + "where c.id_lista=l.id_lista "
+ "and c.stato_call=s.id_stato " + "and c.id_lista = " + idLista + " " + "order by c.cognome; ";
System.out.println("Recupero i dati dal DB");
ResultSet candidati = stat.executeQuery(query);
int numeroRighe = InviaMail.getRows(candidati);
int rigaExcel = 0;
sheet = workbook.getSheet(foglio);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
CellStyle candRecall = workbook.createCellStyle();
candRecall = cellStyle;
candRecall.setFillForegroundColor(IndexedColors.GOLD.getIndex());
candRecall.setFillPattern(FillPatternType.SOLID_FOREGROUND);
CellStyle candFissato = workbook.createCellStyle();
candFissato = cellStyle;
candFissato.setFillForegroundColor(IndexedColors.BRIGHT_GREEN.getIndex());
candFissato.setFillPattern(FillPatternType.SOLID_FOREGROUND);
CellStyle candKo = workbook.createCellStyle();
candKo = cellStyle;
candKo.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
candKo.setFillPattern(FillPatternType.SOLID_FOREGROUND);
while (candidati.next() && !candidati.isClosed()) {
rigaExcel++;
System.out.println("Preparo la riga n°: " + rigaExcel + " di " + numeroRighe);
int idStatoInvioDB = candidati.getInt("s.id_stato");
String statoInvioDB = candidati.getString("s.descrizione");
String nomeDb = candidati.getString("c.nome");
String cognomeDb = candidati.getString("c.cognome");
String emailDb = candidati.getString("c.email");
String cellulareDB = candidati.getString("c.cellulare");
String telefonoDB = candidati.getString("c.telefono");
String indirizzoDB = candidati.getString("c.indirizzo");
String capDB = candidati.getString("c.cap");
String cittaDB = candidati.getString("c.citta");
String provinciaDB = candidati.getString("c.provincia");
String ateneoDb = candidati.getString("l.ateneo");
String estrazioneDb = candidati.getString("l.estrazione");
System.out.println("Riga n°:" + rigaExcel + " di " + numeroRighe + " scritta: " + statoInvioDB
+ " / " + nomeDb + " / " + cognomeDb + " / " + emailDb + " / " + cellulareDB + " / "
+ telefonoDB + " / " + indirizzoDB + " / " + capDB + " / " + cittaDB + " / " + provinciaDB
+ " / " + ateneoDb + " / " + estrazioneDb);
Row row = sheet.createRow(rigaExcel);
row.setRowStyle(null);
for (int cella = 0; cella < 10; cella++) {
boolean stylato = false;
//row.createCell(cella);
if (idStatoInvioDB == 3) {
Cell cell = row.createCell((short) cella);
cell.setCellStyle(candRecall);
stylato = true;
}
if (idStatoInvioDB == 5) {
Cell cell = row.createCell((short) cella);
cell.setCellStyle(candFissato);
stylato = true;
}
if (idStatoInvioDB == 6) {
Cell cell = row.createCell((short) cella);
cell.setCellStyle(candKo);
stylato = true;
}
if (!stylato) {
Cell cell = row.createCell((short) cella);
cell.setCellStyle(cellStyle);
}
}
row.getCell(0).setCellValue(statoInvioDB);
row.getCell(1).setCellValue(nomeDb);
row.getCell(2).setCellValue(cognomeDb);
row.getCell(3).setCellValue(emailDb);
row.getCell(4).setCellValue(cellulareDB);
row.getCell(5).setCellValue(telefonoDB);
row.getCell(6).setCellValue(indirizzoDB);
row.getCell(7).setCellValue(capDB);
row.getCell(8).setCellValue(cittaDB);
row.getCell(9).setCellValue(provinciaDB);
//row.getCell(10).setCellValue(idStatoInvioDB);
// workbook.write(fos);
// fos.flush();
}
for (int cella = 0; cella < 10; cella++) {
sheet.autoSizeColumn(cella);
}
workbook.write(fos);
fos.flush();
fos.close();
workbook.close();
System.out.println("File Excel: " + nomeFile + " generato");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println(query);
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
有什么问题吗? 你能救我吗?