Easypoi+SpringBoot+Vue+Elment-UI実装ファイルのエクスポート機能(Excel)
2587 ワード
他のことは言わないで、直接コードをつけます...
フロントエンド:
クリックイベント:
呼び出し方法:
分析:
Elmentでボタンクリックリクエストはバックエンドインタフェースにアクセスできますが、戻ったファイル、すなわちファイルを取得することはできません.新しいリンクイベントを作成することでリクエストのダウンロードを行います.
バックエンド:
分析:
フロントでテーブルデータを転送し、バックグラウンドでexportExcelを介してExcelにデータを書き込み、ファイルストリームを介してフロントエンドリクエストに戻ります.
効果:
コメントへようこそ
参考:keepTravel
フロントエンド:
クリックイベント:
呼び出し方法:
poiHandle () {
this.$http({
url: this.$http.adornUrl(`/biz/personbase/poi`),
method: 'post',
data: this.$http.adornData(this.dataPoiList, false),
responseType: 'blob'
}).then((res) => {
// blob
const blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
let filename = 'test.xls'
// , ,
const elink = document.createElement('a')
elink.download = filename
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // URL
document.body.removeChild(elink)
}).catch(() => {
this.$message.error(' ')
})
}
分析:
Elmentでボタンクリックリクエストはバックエンドインタフェースにアクセスできますが、戻ったファイル、すなわちファイルを取得することはできません.新しいリンクイベントを作成することでリクエストのダウンロードを行います.
バックエンド:
@RequestMapping("/poi")
@RequiresPermissions("biz:personbase:save")
public void poiInfo(HttpServletResponse response,@RequestBody List personBasePoiForm){
//
ExportParams ex = new ExportParams(" ", "Sheet ");
ex.setStyle(ExcelStyleUtil.class);
Workbook workbook = ExcelExportUtil.exportExcel(ex,PersonBasePoiForm.class,personBasePoiForm);
response.setHeader("content-Type","application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename="+System.currentTimeMillis()+".xls");
response.setCharacterEncoding("UTF-8");
try {
workbook.write(response.getOutputStream());
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
分析:
フロントでテーブルデータを転送し、バックグラウンドでexportExcelを介してExcelにデータを書き込み、ファイルストリームを介してフロントエンドリクエストに戻ります.
効果:
コメントへようこそ
参考:keepTravel