首頁  >  問答  >  主體

java - 关于excel上传解析

前台通过form表单上传文件,后台通过request.getInputStream得到流,但是POI建立wordbook要求是fileInputStream,我获取的是servletInputStream,强转会出错。怎么解决。我查的资料都是通过固定文件位置读取流,我想使用用户上传的流来生成workbook该怎么做?

PHP中文网PHP中文网2741 天前435

全部回覆(4)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:29:52

    你試試官網的範例。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:29:52

    1、有種方案是先保存到伺服器某位置再讀取,需要注意文件名稱唯一 處理完刪除
    2、不對啊 上傳可以得到一個文件 是文件 File對像啊 忘記怎麼做的了

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 10:29:52

    什麼版本的POI? XSSFWorkbook的建構方法裡,明明有一個的參數是InputStream啊

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 10:29:52

    ServletInputStream extends InputStream當然是強轉不了的,你可以把ServletInputStream 從緩衝區讀取然後再轉換成InputStream(如果你不嫌麻煩的話),正常點的做法還是在伺服器建立臨時檔案(如果你看著不嫌麻煩的話),正常點的做法還是在伺服器建立臨時檔案(如果你看著不嫌麻煩順可以刪除

    String path = request.getSession(true).getServletContext().getRealPath("/upload");
     String fileName = new Date().getTime()+file.getOriginalFilename();

    3.保存文件
    File targetFile = new File(path,fileName);
    file.transferTo(targetFile)

    4.POI...

    回覆
    0
  • 取消回覆