Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

di il
4 risposte

Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

Sto cercando di creare dei file Excel con java.
Il programma in java si trova su Program Files, lì cerco di creare il file excel e non riesce a crearlo probabilmente proprio perché si trova in quella cartella. Così cerco di cambiare percorso, ma come vedete appunto dall'errore qui sotto non accetta i caratteri : (quindi non posso mandarlo tipo in C:..) e pure i caratteri così \ / quindi non posso cambiare percorso... Soluzioni? Grazie mille !

java.lang.IllegalArgumentException: Invalid char (:) found at index (1) in sheet name 'C:\Users\admin\Desktop\ciao\excel_file.xlsx'

Vi mostro il codice

   HSSFWorkbook fWorkbook = new HSSFWorkbook();

                    String percorso_provvisorio ="excel_file." + estensioni[iii];

                    System.out.println(percorso_provvisorio);
                    HSSFSheet fSheet = fWorkbook.createSheet(percorso_provvisorio);

4 Risposte

  • Re: Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

    Il metodo createSheet non serve a creare il file. Serve a creare un nuovo "foglio" excel (un file excel al suo interno può avere diversi "fogli", automaticamente chiamati "Foglio1", "Foglio2", ecc), dandogli eventualmente un nome (e il nome dei fogli excel non può contenere quei caratteri).

    Per salvare il file si usa il metodo write() che può prendere un oggetto File o un generico OutputStream.
  • Re: Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

    Non ho capito. Se vuoi questo è il codice un po' più completo, dove sbaglio?

    
                    try {
                        HSSFWorkbook fWorkbook = new HSSFWorkbook();
    
                        String percorso_provvisorio = "excel_file." + estensioni[iii];
    
                        System.out.println(percorso_provvisorio);
                        HSSFSheet fSheet = fWorkbook.createSheet(percorso_provvisorio);
    
                        HSSFRow hRow = fSheet.createRow((short) 0);
                        for (int colonna = 0; colonna < modello.getColumnCount(); colonna++) {
                            HSSFCell cell = hRow.createCell((short) colonna);
                            cell.setCellValue(tabella.getColumnName(colonna));
    
                        }
    
                        for (int i = 0; i < modello.getRowCount(); i++) {
                            HSSFRow fRow = fSheet.createRow((short) i + 1);
                            for (int j = 0; j < modello.getColumnCount(); j++) {
                                HSSFCell cell = fRow.createCell((short) j);
                                String valore = "";
                                if (modello.getValueAt(i, j) != null) {
                                    valore = modello.getValueAt(i, j) + "";
                                }
                                cell.setCellValue(valore);
    
                            }
                        }
    
                        FileOutputStream fileOutputStream = new FileOutputStream(percorso_provvisorio);
                        JOptionPane.showMessageDialog(null, "Ha creato il file in program files");
                        try ( BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream)) {
                            fWorkbook.write(bos);
                        }
                        fileOutputStream.close();
                        if (!new File(percorso_provvisorio).renameTo(new File(percorso + "\\" + "excel_file." + estensioni[iii]))) {
                            JOptionPane.showMessageDialog(null, "Non è riuscito a tagliarlo ad incollarlo nella cartella richiesta");
                            errore = true;
    
                        }
    
                    } catch (Exception e) {
                        errore = true;
                        e.printStackTrace();
                    }
             
  • Re: Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

    L'ho scritto:
    
    HSSFSheet fSheet = fWorkbook.createSheet(percorso_provvisorio);
    
    Questa istruzione NON CREA un file. Crea un nuovo FOGLIO (Sheet!)
    Al metodo createSheet() non ha senso passare un percorso ad un file... quel metodo si aspetta un nome da dare al foglio, qualcosa come "Foglio1", "FoglioCalcoli", "QuelCheTiPare". E' il nome del foglio all'interno del file excel.

  • Re: Java.lang.IllegalArgumentException: Invalid char HSSFSheet file excel

    Ho riletto e adesso pare funzionare. Ti ringrazio, sei stato davvero gentilissimo !!! Se ho bisogno scrivo ancora. Grazie mille !
Devi accedere o registrarti per scrivere nel forum
4 risposte