Pre Merge pull request !257 from 云飞扬/N/A

pull/257/MERGE
云飞扬 3 years ago committed by Gitee
commit 305a40ee3d
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

@ -2,10 +2,12 @@ package com.ruoyi.common.core.utils.poi;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -456,6 +458,11 @@ public class ExcelUtil<T>
public void exportExcel(HttpServletResponse response, List<T> list, String sheetName, String title)
{
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
try {
response.addHeader("Content-Disposition", "attachment;FileName=" + URLEncoder.encode(title,"utf-8"));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
response.setCharacterEncoding("utf-8");
this.init(list, sheetName, title, Type.EXPORT);
exportExcel(response);

@ -63,12 +63,12 @@ public class ${ClassName}Controller extends BaseController
*/
@RequiresPermissions("${permissionPrefix}:export")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@PostMapping(value = "/export", produces = "application/octet-stream")
public void export(HttpServletResponse response, ${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
util.exportExcel(response, list, "${functionName}数据");
util.exportExcel(response, list, "${functionName}数据", "${functionName}数据");
}
/**

@ -595,7 +595,7 @@ export default {
handleExport() {
this.download('${moduleName}/${businessName}/export', {
...this.queryParams
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
})
}
}
};

@ -583,7 +583,7 @@ function handle${subClassName}SelectionChange(selection) {
function handleExport() {
proxy.download('${moduleName}/${businessName}/export', {
...queryParams.value
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
})
}
getList();

@ -73,6 +73,12 @@ service.interceptors.response.use(res => {
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){
// 响应返回的内联显示的标题
let disposition = res.headers['content-disposition'];
// 根据标志,不区分大小写,获取文件名称
let filename = disposition.split(/filename=/i).pop();
// 文件名称解码
res.data.filename = decodeURI(filename);
return res.data
}
if (code === 401) {
@ -128,6 +134,8 @@ export function download(url, params, filename, config) {
const isLogin = await blobValidate(data);
if (isLogin) {
const blob = new Blob([data])
// 如果方法参数的文件名称为空,则使用响应请求返回的文件名称
filename = filename || data.filename
saveAs(blob, filename)
} else {
const resText = await data.text();

Loading…
Cancel
Save