【问题标题】:Java Apache POI Opening file? [closed]Java Apache POI 打开文件? [关闭]
【发布时间】:2013-11-25 03:04:38
【问题描述】:

我有一个 Java 程序,它可以编辑现有的 excel 文件并将其另存为新文件。但是,我还希望程序在结束时自动打开新创建的文件。有没有 apache poi 命令可以让我这样做?

【问题讨论】:

  • 你写过sn-p来打开文件吗??请分享。
  • 通过“结束时自动打开新创建的文件”你的意思是要启动Excel来打开新创建的文件吗?

标签: java excel file-io apache-poi


【解决方案1】:

由于您没有提供代码,我正在使用 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();
    }

输出

解决方案:在您创建具有正确位置的 Excel 后,将此代码与 Try/Catch 块一起放置,它将自动打开

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

否则你也可以调用它

尝试使用 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】:
    【解决方案3】:

    我不知道 POI 是否提供此类方法。但是,您可以使用简单的 java 方法执行此操作,该方法使用命令提示符并使用 start 命令打开所需的文件。

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

    注意:start 后面的空格是必须的。不要忘记它

    【讨论】:

    • 我内心的队长 Obvious 想说这只能在 Windows 机器上工作。作为改进,命令可以作为参数传递;赞成!
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多