2013-11-25 6 views
3

У меня есть программа Java, которая редактирует существующий файл excel и сохраняет его как новый файл. Однако мне также хотелось бы, чтобы программа автоматически открывала вновь созданный файл по окончании. Есть ли команда apache poi, которая позволяет мне это делать?Java Apache POI Открытие файла?

+0

у вас есть какие-либо фрагменты, чтобы открыть файл? поделитесь им пожалуйста. –

+2

_ _ автоматически открывать только что созданный файл по окончании. _ Вы хотите запустить Excel для открытия вновь созданного файла? –

ответ

5

Как не указано код, я использую в качестве примера ViralPatel Tutorial

Препятствует Создание файла Excel Первая

HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet sheet = workbook.createSheet("Sample sheet"); 

    Map<String, Object[]> data = new HashMap<String, Object[]>(); 
    data.put("1", new Object[] { "Emp No.", "Name", "Salary" }); 
    data.put("2", new Object[] { 1d, "John", 1500000d }); 
    data.put("3", new Object[] { 2d, "Sam", 800000d }); 
    data.put("4", new Object[] { 3d, "Dean", 700000d }); 

    Set<String> keyset = data.keySet(); 
    int rownum = 0; 
    for (String key : keyset) { 
     Row row = sheet.createRow(rownum++); 
     Object[] objArr = data.get(key); 
     int cellnum = 0; 
     for (Object obj : objArr) { 
      Cell cell = row.createCell(cellnum++); 
      if (obj instanceof Date) 
       cell.setCellValue((Date) obj); 
      else if (obj instanceof Boolean) 
       cell.setCellValue((Boolean) obj); 
      else if (obj instanceof String) 
       cell.setCellValue((String) obj); 
      else if (obj instanceof Double) 
       cell.setCellValue((Double) obj); 
     } 
    } 

    try { 
     FileOutputStream out = new FileOutputStream(new File("D:\\new.xls")); 
     workbook.write(out); 
     out.close(); 
     System.out.println("Excel written successfully.."); 

     /** Opening Excel File From Java **/ 

     try { 
      Desktop.getDesktop().open(new File("D:\\new.xls")); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Выход

enter image description here

Решение: Поместите этот код с Try/Выгода Block после создания Excel с правильным местоположение, он будет открыт автоматически

Desktop.getDesktop() открытый (новый файл ("D. : \ new.xls "));

Else и может вызвать это также

Try использовать Desktop.open() вместо Desktop.edit():

Desktop dt = Desktop.getDesktop(); 
dt.open(new File("D:\\new.xls")); 

Если Desktop.open() не доступен то можно использовать файловую ассоциацию Windows:

Process p = Runtime.getRuntime() .exec("rundll32 
url.dll,FileProtocolHandler " + "D:\\new.xls"); 
2

Я не знаю, зачем POI предоставляет такие методы или нет. Однако вы можете сделать это, используя простой java-метод, который использует командную строку и открывает нужный файл командой start.

public static void openExcelFile(){ 
    try{  
     Runtime.getRuntime().exec("cmd /c start "+FilePath); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 

ПРИМЕЧАНИЕ: Пространство после start является обязательным. Не забудьте об этом

+1

Мой внутренний капитан Очевидный хочет сказать, что это будет работать только на машинах Windows. В качестве улучшения команда может быть передана в качестве аргумента; upvoted! – orique

Смежные вопросы