Explorar el Código

完善报表导出功能,在导出操作出现异常时直接抛出异常,而不是下载包含异常的文件

master
youseries hace 5 años
padre
commit
3bc4c29356
  1. 62
      ureport2-console/src/main/java/com/bstek/ureport/console/excel/ExportExcelServletAction.java
  2. 50
      ureport2-console/src/main/java/com/bstek/ureport/console/pdf/ExportPdfServletAction.java
  3. 42
      ureport2-console/src/main/java/com/bstek/ureport/console/word/ExportWordServletAction.java

62
ureport2-console/src/main/java/com/bstek/ureport/console/excel/ExportExcelServletAction.java

@ -31,6 +31,7 @@ import com.bstek.ureport.console.cache.TempObjectCache;
import com.bstek.ureport.console.exception.ReportDesignException;
import com.bstek.ureport.definition.ReportDefinition;
import com.bstek.ureport.exception.ReportComputeException;
import com.bstek.ureport.exception.ReportException;
import com.bstek.ureport.export.ExportConfigure;
import com.bstek.ureport.export.ExportConfigureImpl;
import com.bstek.ureport.export.ExportManager;
@ -69,38 +70,43 @@ public class ExportExcelServletAction extends BaseServletAction {
if(StringUtils.isBlank(file)){
throw new ReportComputeException("Report file can not be null.");
}
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".xlsx");
resp.setContentType("application/octet-stream;charset=ISO8859-1");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
Map<String, Object> parameters = buildParameters(req);
OutputStream outputStream=resp.getOutputStream();
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export excel.");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
if(withPage){
excelProducer.produceWithPaging(report, outputStream);
}else if(withSheet){
excelProducer.produceWithSheet(report, outputStream);
}else{
excelProducer.produce(report, outputStream);
}
}else{
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
if(withPage){
exportManager.exportExcelWithPaging(configure);
}else if(withSheet){
exportManager.exportExcelWithPagingSheet(configure);
try {
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".xlsx");
resp.setContentType("application/octet-stream;charset=ISO8859-1");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
Map<String, Object> parameters = buildParameters(req);
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export excel.");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
if(withPage){
excelProducer.produceWithPaging(report, outputStream);
}else if(withSheet){
excelProducer.produceWithSheet(report, outputStream);
}else{
excelProducer.produce(report, outputStream);
}
}else{
exportManager.exportExcel(configure);
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
if(withPage){
exportManager.exportExcelWithPaging(configure);
}else if(withSheet){
exportManager.exportExcelWithPagingSheet(configure);
}else{
exportManager.exportExcel(configure);
}
}
}catch(Exception ex) {
throw new ReportException(ex);
}finally {
outputStream.flush();
outputStream.close();
}
outputStream.flush();
outputStream.close();
}
public void setReportBuilder(ReportBuilder reportBuilder) {

50
ureport2-console/src/main/java/com/bstek/ureport/console/pdf/ExportPdfServletAction.java

@ -33,6 +33,7 @@ import com.bstek.ureport.console.exception.ReportDesignException;
import com.bstek.ureport.definition.Paper;
import com.bstek.ureport.definition.ReportDefinition;
import com.bstek.ureport.exception.ReportComputeException;
import com.bstek.ureport.exception.ReportException;
import com.bstek.ureport.export.ExportConfigure;
import com.bstek.ureport.export.ExportConfigureImpl;
import com.bstek.ureport.export.ExportManager;
@ -68,31 +69,36 @@ public class ExportPdfServletAction extends BaseServletAction{
if(StringUtils.isBlank(file)){
throw new ReportComputeException("Report file can not be null.");
}
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".pdf");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
if(forPrint){
resp.setContentType("application/pdf");
resp.setHeader("Content-Disposition","inline;filename=\"" + fileName + "\"");
}else{
resp.setContentType("application/octet-stream;charset=ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
}
Map<String, Object> parameters = buildParameters(req);
OutputStream outputStream=resp.getOutputStream();
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export pdf.");
try {
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".pdf");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
if(forPrint){
resp.setContentType("application/pdf");
resp.setHeader("Content-Disposition","inline;filename=\"" + fileName + "\"");
}else{
resp.setContentType("application/octet-stream;charset=ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
pdfProducer.produce(report, outputStream);
}else{
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
exportManager.exportPdf(configure);
Map<String, Object> parameters = buildParameters(req);
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export pdf.");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
pdfProducer.produce(report, outputStream);
}else{
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
exportManager.exportPdf(configure);
}
}catch(Exception ex) {
throw new ReportException(ex);
}finally {
outputStream.flush();
outputStream.close();
}
outputStream.flush();
outputStream.close();
}
public void newPaging(HttpServletRequest req, HttpServletResponse resp) throws IOException {

42
ureport2-console/src/main/java/com/bstek/ureport/console/word/ExportWordServletAction.java

@ -31,6 +31,7 @@ import com.bstek.ureport.console.cache.TempObjectCache;
import com.bstek.ureport.console.exception.ReportDesignException;
import com.bstek.ureport.definition.ReportDefinition;
import com.bstek.ureport.exception.ReportComputeException;
import com.bstek.ureport.exception.ReportException;
import com.bstek.ureport.export.ExportConfigure;
import com.bstek.ureport.export.ExportConfigureImpl;
import com.bstek.ureport.export.ExportManager;
@ -62,26 +63,31 @@ public class ExportWordServletAction extends BaseServletAction {
if(StringUtils.isBlank(file)){
throw new ReportComputeException("Report file can not be null.");
}
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".docx");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
resp.setContentType("application/octet-stream;charset=ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
Map<String, Object> parameters = buildParameters(req);
OutputStream outputStream=resp.getOutputStream();
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export word.");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
wordProducer.produce(report, outputStream);
}else{
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
exportManager.exportWord(configure);
try {
String fileName=req.getParameter("_n");
fileName=buildDownloadFileName(file, fileName, ".docx");
fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
resp.setContentType("application/octet-stream;charset=ISO8859-1");
resp.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
Map<String, Object> parameters = buildParameters(req);
if(file.equals(PREVIEW_KEY)){
ReportDefinition reportDefinition=(ReportDefinition)TempObjectCache.getObject(PREVIEW_KEY);
if(reportDefinition==null){
throw new ReportDesignException("Report data has expired,can not do export word.");
}
Report report=reportBuilder.buildReport(reportDefinition, parameters);
wordProducer.produce(report, outputStream);
}else{
ExportConfigure configure=new ExportConfigureImpl(file,parameters,outputStream);
exportManager.exportWord(configure);
}
}catch(Exception ex) {
throw new ReportException(ex);
}finally {
outputStream.flush();
outputStream.close();
}
outputStream.flush();
outputStream.close();
}
public void setReportBuilder(ReportBuilder reportBuilder) {

Cargando…
Cancelar
Guardar