使用form表單(enctype="multipart/form-data")上傳excel檔案,後台接收multipartfile檔案格式。
讀取excel
private控制層static
final string excel_xls = "xls";
private
static
final string excel_xlsx = "xlsx";
/*** 判斷excel的版本,獲取workbook
* @param
in *
@param
file
* @return
* @throws
ioexception
*/public
static workbook getworkbok(inputstream in, multipartfile file) throws
ioexception
else
if(file.getoriginalfilename().endswith(excel_xlsx))
return
wb; }
/*** 判斷檔案是否是excel
* @throws
exception
*/public
static
void checkexcelvaild(multipartfile file) throws
exception
if(!((file.getoriginalfilename().endswith(excel_xls) ||file.getoriginalfilename().endswith(excel_xlsx))))
}/*** 讀取excel,相容 excel 2003/2007/2010
* @param excelfile
* @param sheetindex 從第幾個sheet開始遍歷
* @param datarowindex 從第幾行開始遍歷
* @throws
exception
*/public
static list> parseexcelobject(multipartfile excelfile, int sheetindex, int
datarowindex)
else
break
;
case cell.cell_type_boolean: //
布林型 cellvalue =string.valueof(cell.getbooleancellvalue());
break
;
case cell.cell_type_blank: //
空白 cellvalue =cell.getstringcellvalue();
break
;
case cell.cell_type_error: //
錯誤 cellvalue = "";
break
;
case cell.cell_type_formula: //
公式
//得到對應單元格的公式
//cellvalue = cell.getcellformula() + "#";
//得到對應單元格的字串
cell.setcelltype(cell.cell_type_string);
cellvalue =string.valueof(cell.getrichstringcellvalue().getstring());
break
;
default
: cellvalue = "";
}//儲存資料
if (columnindex == 0)
//......其他邏輯......
} lists.add(maps);}}
}is.close();
//關閉檔案流
} catch
(exception e)
finally
return
lists;
}
/*** 匯入excel
* *
@param
multipartfile
* @return
*/@responsebody
public
void importexcel(@requestparam("file") multipartfile multipartfile)
list
> list = excelutil.parseexcelobject(multipartfile, 0, 0); //
這裡只解析第乙個sheet,從第一行開始
寫入excel
public控制層static xssfworkbook createexcelobject(listlist)
return
wb; }
catch
(exception e)
finally
return
null
; }
/**因為,匯出excel,在通過後台生成excel檔案,並且以檔案流的形式傳遞給前端,而ajax接收的返回資料型別只能是:字串、xml。所以ajax處理不了返回的檔案流。而瀏覽器可以處理。* 匯出商品資訊
}
2、注意,匯出時的**順序,否則報錯notofficexmlfileexception?
假如,你直接先把輸入流,輸出流建立好了以後,再建立新物件,就會報錯。錯誤資訊為: org.apache.poi.openxml4j.exceptions.notofficexmlfileexception: no valid entries or contents found, this is not a valid ooxml (office open xml) file。
匯出->控制層**,已經給出了正確的順序。
【參考】
ajax請求匯出excel的問題
xssfworkbook的順序問題
poi匯入匯出excel
org.apache.poigroupid poiartifactid 3.14 beta1version dependency public private string headtextname 列頭 標題 名 private string propertyname 對應欄位名 private ...
POI匯入匯出Excel
public class excelutils sheet sheet null row row null cell cell null list new arraylist 遍歷excel中所有的sheet for int i 0 i wb.getnumberofsheets i 遍歷當前shee...
POI匯入匯出Excel模板
hssfworkbook 是操作excel2003以前 包括2003 的版本,副檔名是.xls xssfworkbook 是操作excel2007的版本,副檔名是.xlsx 以xssfworkbook為例 匯出 public void getexcelbyboiler catch filenotfo...