天天看點

java下載下傳 xls xlsx遇到的問題

具體介紹

1、核心結構上:xls 是一個特有的二進制格式,其核心結構是複合文檔類型的結構,而 xlsx 的核心結構是 XML 類型的結構,采用的是基于 XML 的壓縮方式,使其占用的空間更小。xlsx 中最後一個 x 的意義就在于此。
2、版本上:xls是2003版本下的檔案 ,不管有沒有宏程式的話都是xls檔案 ,從2007開始做了區分,XLSM檔案和XLSX檔案都是excel2007及其以後的檔案,但前者是含有宏啟用,Excel中預設情況下不自動啟用宏,預設是XLSX。VBA中,如果不想儲存代碼,可以儲存為xlsx,即可自動删除其中VBA代碼,反之則儲存為XLSM檔案。

2003 下載下傳設定頭

response.setHeader("Content-Disposition", "attachment;filename=contacts" + System.currentTimeMillis() + ".xls");
response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
HSSFWorkbook workbook = new HSSFWorkbook();     
HSSFSheet sheet = workbook.createSheet("worksheet");
//...
           

2007 下載下傳設定頭

response.setHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + ".xlsx");
response.setContentType("application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
Workbook workbook = new XSSFWorkbook();                        
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("worksheet");
//...
           

注意

如果建立xlsx工作薄的時候,用
否則生成的excel将無法打開!