JSD-8914 分页分sheet导出 sheet支持公式命名
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.9 KiB

package com.fr.plugin.xxxx.yyjm.fold;
import com.fr.decision.fun.impl.BaseHttpHandler;
import com.fr.decision.webservice.Response;
import com.fr.io.TemplateWorkBookIO;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.main.TemplateWorkBook;
import com.fr.plugin.xxxx.yyjm.fold.utils.PrintUtils;
import com.fr.report.core.ReportUtils;
import com.fr.stable.PageActor;
import com.fr.stable.StringUtils;
import com.fr.third.org.apache.commons.io.FilenameUtils;
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
import com.fr.web.utils.WebUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* @Author f.open
* @Date 2021/11/16
* @Description
**/
public class ExportHandler extends BaseHttpHandler {
@Override
public RequestMethod getMethod() {
return RequestMethod.GET;
}
@Override
public String getPath() {
return "/export";
}
@Override
public boolean isPublic() {
return true;
}
@Override
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception {
String cptName = req.getParameter("cptName");
String sheetName = req.getParameter("sheet_name");
String nameFormat = req.getParameter("name_format");
FineLoggerFactory.getLogger().info("cptName is {}", cptName);
FineLoggerFactory.getLogger().info("sheetName is {}", sheetName);
FineLoggerFactory.getLogger().info("nameFormat is {}", nameFormat);
if(StringUtils.isBlank(cptName)){
setError(res,"cptName is not null");
}
//ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintUtils.setExcel2007Content(res, FilenameUtils.getBaseName(cptName));
Map<String, Object> params = getParams(req);
TemplateWorkBook wb = TemplateWorkBookIO.readTemplateWorkBook(cptName);
MyPageToSheetExcelExporter exporter = new MyPageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(wb),params);
exporter.export(res.getOutputStream(), wb.execute(params, new PageActor()));
}
private Map<String, Object> getParams(HttpServletRequest request) {
Map<String, Object> params = new HashMap<>();
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
if ("cptName".equals(name) || "sheet_name".equals(name) || "name_format".equals(name)) {
continue;
}
params.put(name, request.getParameter(name));
}
return params;
}
private void setError(HttpServletResponse res, String mess) throws Exception {
WebUtils.printAsJSON(res, JSONObject.mapFrom(Response.error(mess,mess)));
}
}