POI 匯入 匯出Excel

2022-09-06 16:48:13 字數 4006 閱讀 3046

使用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...