使用poi导入、导出Excel内容

奋斗的堕落者 发布于 2015/05/25 09:36
阅读 166
收藏 0

@kinghubo 你好,想跟你请教个问题:

使用poi导入、导出Excel内容,我怎么选择导出路径,求助

加载中
0
涵小涵
涵小涵

是web向的吗?

如果是web中的应用,可以这样实现:

@RequestMapping(value = "/excel/export-err")
 public String downloadErrWb(HttpServletRequest request,
                             HttpServletResponse response){
        try {
            ServletOutputStream os = response.getOutputStream();
            String fileName = new String(("商家导入").getBytes(),"ISO8859_1");
            response.setHeader("Content-disposition", 
                       "attachment; filename=" + fileName + ".xls");// 组装附件名称和格式
            HSSFWorkbook wb = (HSSFWorkbook) request.getSession().getAttribute("wb");
            wb.write(os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

由response获取输出流,设置响应头,包含文件名信息。

通过POI的使用获取到要导出的Excel工作簿,将其写入输出流。

然后输出流内容会随响应信息传导浏览器前端,弹出保存窗口,选择你要保存的位置。

如果是java application,则可以这样实现:


public void WriteExcel(){
        try {
            //根据文件路径获取文件,文件路径为自己定义的。
            File file = new File(new String("c:/excel.xls")); 
            //如果文件存在,则是向该文件写入;如果该文件不存在,则以这个路径新建一个文件以供写入
            if(!file.exists()){
                file.createNewFile();
            }
            //获取文件输出流,以便将数据输出到该文件
            FileOutputStream os = new FileOutputStream(file,false);
            //获取要写入的工作簿
            HSSFWorkbook wb = someMethod.getWb();
            //将工作簿写入文件流
            wb.write(os);
            //清空文件流
            os.flush();
            //关闭文件流
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

首先,根据自定义的文件路径获得文件,如果不存在就新建一个文件。(这里即是楼主所说选择导出路径的问题所在);

得到这个文件后,获取到文件输出流,以便将内存中的工作簿数据输出到文件里;

最后将工作写入文件流,即可完成文件的导出,这一步完成后清空文件流并关闭。

不知道这个能否解答题主的问题?

返回顶部
顶部