2015-04-07 1 views
0

Я хочу создать новый файл excel, чтобы имя файла было предоставлено пользователем во время выполнения и сохраните этот файл в том месте, где он хочет. Я пробовал некоторый код, но он создает файл с тем же именем каждый раз и в том же месте. Он не запрашивает у пользователя имя файла и его местоположение.Как создать новый файл excel в приложении java и сохранить его в указанном месте?

private void buttonCALCULATEActionPerformed(java.awt.event.ActionEvent evt) { 
filename="D:\\test.xls" ; 
     HSSFWorkbook hwb=new HSSFWorkbook(); 
     HSSFSheet sheet = hwb.createSheet("Report in Excel"); 

     HSSFRow rowhead=sheet.createRow((short)0); 
     rowhead.createCell((short) 0).setCellValue("Plot Id"); 
     rowhead.createCell((short) 1).setCellValue("Species Name"); 
     FileOutputStream fileOut = new FileOutputStream(filename); 
     hwb.write(fileOut); 
     fileOut.close(); 
     System.out.println("\n Your Excel file has been generated!"); 
     //String name1=" "; 
     FileSave(); 
} 
public void FileSave() throws IOException 
{ 

JFileChooser chooser=new JFileChooser("./"); 
FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel  files",".xls");  
    chooser.addChoosableFileFilter(filter); 
    int returnVal1=chooser.showSaveDialog(this); 

// chooser.setFileFilter(filter); 
    chooser.setFileSelectionMode(chooser.FILES_ONLY); 
    chooser.setDialogTitle("Save File"); 
    chooser.setCurrentDirectory(new File(System.getProperties().getProperty("user.home"))); 
    chooser.setFileFilter(new javax.swing.filechooser.FileFilter() 
    { 
    public boolean accept(final File f) 
    { 
     return f.isDirectory()|| file.getAbsolutePath().endsWith(".xls"); 
    } 

    public String getDescription(){ 
     return "Excel files (*.xls)"; 
    } 
    } 
); 
if (returnVal1 == JFileChooser.APPROVE_OPTION) 
    { 
file1 = chooser.getSelectedFile();  
} 
} 
+0

Put 'INT returnVal1 = chooser.showSaveDialog (это),' это immeditaly до того ', если (returnVal1 == JFileChooser.APPROVE_OPTION) ' – MadProgrammer

ответ

1

Помещенный int returnVal1=chooser.showSaveDialog(this); это immeditaly перед тем if (returnVal1 == JFileChooser.APPROVE_OPTION)

public void FileSave() throws IOException { 

    JFileChooser chooser = new JFileChooser("./"); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel  files", ".xls"); 
    chooser.addChoosableFileFilter(filter); 

    // chooser.setFileFilter(filter); 
    chooser.setFileSelectionMode(chooser.FILES_ONLY); 
    chooser.setDialogTitle("Save File"); 
    chooser.setCurrentDirectory(new File(System.getProperties().getProperty("user.home"))); 
    chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { 
     public boolean accept(final File f) { 
      return f.isDirectory() || file.getAbsolutePath().endsWith(".xls"); 
     } 

     public String getDescription() { 
      return "Excel files (*.xls)"; 
     } 
    }); 
    int returnVal1 = chooser.showSaveDialog(this); 
    if (returnVal1 == JFileChooser.APPROVE_OPTION) { 
     file1 = chooser.getSelectedFile(); 
    } 
} 

Изменить FileSave вернуть File (или null, если пользователь отменил выбора файлов)

public File FileSave() throws IOException { 
    File file1 = null; 
    //... 
    return file1; 
} 

Запрашивать файл перед попытаться сохранить его ...

private void buttonCALCULATEActionPerformed(java.awt.event.ActionEvent evt) { 
    File file = FileSave(); 
    if (file != null) { 
     HSSFWorkbook hwb = new HSSFWorkbook(); 
     HSSFSheet sheet = hwb.createSheet("Report in Excel"); 

     HSSFRow rowhead = sheet.createRow((short) 0); 
     rowhead.createCell((short) 0).setCellValue("Plot Id"); 
     rowhead.createCell((short) 1).setCellValue("Species Name"); 
     try (FileOutputStream fileOut = new FileOutputStream(file)) { 
      hwb.write(fileOut); 
     } catch (IOException exp) { 
      exp.printStackTrace(); 
     } 
     System.out.println("\n Your Excel file has been generated!"); 
    } 
} 

Вы могли бы иметь чтение через Code Conventions for the Java TM Programming Language, он будет делать это проще для людей, чтобы читать ваш код и для вас, чтобы читать другие

+0

Спасибо @MadProgrammer за вашу помощь. –

+0

Рад, что это могло бы помочь – MadProgrammer

0

Я попробовал это, и она работала общественного недействительного FileSave() бросает IOException {

JFileChooser chooser=new JFileChooser("."); 

    FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel files","xls","excel"); 

    chooser.addChoosableFileFilter(filter); 


    chooser.setFileFilter(filter); 
    chooser.setFileSelectionMode(chooser.FILES_AND_DIRECTORIES); 
    chooser.setDialogTitle("Save File"); 
    chooser.setCurrentDirectory(new File(System.getProperties().getProperty("user.home"))); 
    chooser.setFileFilter(new javax.swing.filechooser.FileFilter() 
    { 
     public boolean accept(final File f) 
     { 
      return f.isDirectory()|| file.getAbsolutePath().endsWith(".xls"); 
     } 

     public String getDescription() 
     { 
      return "Excel files (*.xls)"; 
     } 
    }); 

    int returnVal1=chooser.showSaveDialog(this); 
    if (returnVal1 == JFileChooser.APPROVE_OPTION) 
    { 


     file1 = chooser.getSelectedFile(); 

     if(!file1.exists()) 
     { 

      FileOutputStream fileOut = new FileOutputStream(file1); 
      hwb.write(fileOut); 
      fileOut.close(); 
      System.out.println("\n Your Excel file has been generated!"); 
      JOptionPane.showMessageDialog(this,"File Created."); 
     } 
     else if(file1.exists()) 
     { 
      int res=JOptionPane.showConfirmDialog(this,"File already exists.Do you wish to overwrite?"); 
      if(res == JOptionPane.YES_OPTION) 
      { 
       FileOutputStream fileOut = new FileOutputStream(file1); 
       hwb.write(fileOut); 
       fileOut.close(); 
       System.out.println("\n Your Excel file has been generated!"); 
       JOptionPane.showMessageDialog(this,"File Created."); 
      } 
      else if(res == JOptionPane.NO_OPTION) 
      { 
       int returnVal2=chooser.showSaveDialog(this); 
       if (returnVal2 == JFileChooser.APPROVE_OPTION) 
       { 

        File file2 = chooser.getSelectedFile(); 
        if(!file2.exists()) 
        { 

         FileOutputStream fileOut = new FileOutputStream(file2); 
         hwb.write(fileOut); 
         fileOut.close(); 
         System.out.println("\n Your Excel file has been generated!"); 
         JOptionPane.showMessageDialog(this,"File Created."); 
        } 

       } 
      } 
      else if (res == JOptionPane.CANCEL_OPTION) 
      { 
       JOptionPane.showMessageDialog(this, "User cancelled operation."); 
      } 
     } 
     } 
    // return file1; 

} 
+0

Этот код работает абсолютно нормально, но я просто хочу сохранить файл с расширением .xls. Расширение .xls должно быть принято по умолчанию. Вы можете помочь мне @MadProgrammer? –