2014-05-08 79 views
2

我有一個web項目,其中網格視圖從數據庫中顯示。 Arraylist名字是leadSchoolList。所以,我保留了一個按鈕,當它被點擊時,它會在Struts操作類中運行一個方法(名爲:-actionExportToExcel)。現在我可以將列表元素導出爲ex​​cel。如何打開已從java arraylist輸出的excel文件

但是我面臨的問題是打開窗口上導出的Excel工作表。所以在actionExportToExcel中調用另一個方法(名爲:-open)。但我不知道我錯在哪裏,所以任何人都可以幫助我?

public String actionExportToExcel(){ 
    try { 
     FileOutputStream fileOut = new FileOutputStream("D:/poi-test.xls"); 

    HSSFWorkbook wb = new HSSFWorkbook(); 
    HSSFSheet sheet = wb.createSheet("new sheet"); 


    leadSchoolList = leadSchoolService.getAllLeadSchool(); 
    for(int rowNum = 0; rowNum < leadSchoolList.size(); rowNum++){ 
     HSSFRow row = sheet.createRow(rowNum); 

     //for(int colNum = 0; colNum < 5; colNum++){ 
      HSSFCell cell1 = row.createCell(0); 
      LeadSchool leadSchool = leadSchoolList.get(rowNum); 
      cell1.setCellValue(leadSchool.getLeadSchool_String_LSchool_ID()); 

      HSSFCell cell2 = row.createCell(1); 
      cell2.setCellValue(leadSchool.getLeadSchool_String_Name()); 

      HSSFCell cell3 = row.createCell(2); 
      cell3.setCellValue(leadSchool.getLeadSchool_String_Address()); 

      HSSFCell cell4 = row.createCell(3); 
      cell4.setCellValue(leadSchool.getLeadSchool_String_Phone_No()); 

      HSSFCell cell5 = row.createCell(4); 
      cell5.setCellValue(leadSchool.getLeadSchool_String_Remarks()); 
      System.out.println("Successfully exported to Excel"); 






    } 
    try { 
     wb.write(fileOut); 

    // fileOut.flush(); 
    open(fileOut); 
    //fileOut.close(); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } catch (FileNotFoundException e) { 
     addActionError("The process cannot access the file because it is being used by another process"); 
     e.printStackTrace(); 
    } 

    return SUCCESS; 
} 

    private void open(FileOutputStream f) { 

     String[] cmd = new String[4]; 
     try{ 
      cmd[0] = "cmd.exe"; 
      cmd[1] = "/C"; 
      cmd[2] = "start"; 
      cmd[3] = "D:/poi-test.xls"; 

      Runtime.getRuntime().exec(cmd); 
      //Runtime.getRuntime().exec("cmd.exe /c start D:/poi-test.xls"); 
      System.out.print("file opened"); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
}  

回答

3

幸運的是我自己找到了解決方案。首先需要運行flush()和close()方法,然後運行第二個(命名爲:-open)方法。內側開啓方法,代替ř

Runtime.getRuntime().exec(cmd); 

I擴充成兩行: -

Runtime run = Runtime.getRuntime(); 
Run.exec(cmd); 

那它..:d