`

java web 导出 下拉 excle

    博客分类:
  • JAVA
 
阅读更多
@RequestMapping(value = "/getExportExcel", method = RequestMethod.GET)
public void test_001_getRequestId(ModelMap model,HttpServletRequest request, HttpServletResponse response)
throws Exception {

ServletOutputStream out = null;
// InputStream in = ClassLoader.getSystemResourceAsStream("template/report.xlsx");
// File f = new File("/template/report.xlsx");
// 设置response参数,可以打开下载页面
response.reset();
getClass().getClassLoader().getResource("/").getPath();
response.setContentType("application/msexcel;charset=utf-8");
XSSFWorkbook wb = new XSSFWorkbook(request.getSession().getServletContext()
.getResourceAsStream("/template/report.xlsx"));
try {
XSSFSheet sheet = wb.getSheetAt(0);
String[] handers = { "报表名称", "报表描述", "BI源类型", "BI数据源", "报表所属目录",
"报表路径", "所属模块", "访问方式", "报表类型", "用户类(多个以逗号隔开)" };
String[] downRows = { "2", "3", "7", "8" };
// if (!storageRootPath.equalsIgnoreCase(System
// .getProperty("java.io.tmpdir"))) {
// System.setProperty("java.io.tmpdir", storageRootPath);
// }
// log.info("java.io.tmpdir" + System.getProperty("java.io.tmpdir"));

// 表头样式
XSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
// 字体样式
XSSFFont fontStyle = wb.createFont();
fontStyle.setFontName("微软雅黑");
fontStyle.setFontHeightInPoints((short) 12);
fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(fontStyle);

XSSFRow rowFirst = sheet.createRow(0);// 第一个sheet的第一行为标题
// 写标题
for (int i = 0; i < handers.length; i++) {
XSSFCell cell = rowFirst.createCell(i); // 获取第一行的每个单元格
sheet.setColumnWidth(i, 8000); // 设置每列的列宽
cell.setCellStyle(style); // 加样式
cell.setCellValue(handers[i]); // 往单元格里写数据
}

List<String[]> downData = new ArrayList<String[]>();
if ("true".equals(request.getParameter("mark"))) {
// 填充bi数据
List<SourceTypeDTO> bitypelist = manageBIReprotService
.querySourceType();
List<String> srtlist = new ArrayList<String>();
List<String> biTypeList = new ArrayList<String>();
for (SourceTypeDTO dto : bitypelist) {
if (dto.getName().indexOf("Pentaho") > -1) {
String biTypeid = dto.getId();
srtlist.add(dto.getName());
biTypeList.add(biTypeid);
}
if (dto.getName().indexOf("IBM Cognos") > -1) {
String biTypeid = dto.getId();
srtlist.add(dto.getName());
biTypeList.add(biTypeid);
}

}
String [] listarry=new String[srtlist.size()];
downData.add(srtlist.toArray(listarry));
// List<BIReportDTO> bilist=
// manageBIReprotService.queryAllBiInfoList();
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("typeListId", biTypeList);
List<BIReportDTO> bilist = manageBIReprotService
.queryBiListByListTypeId(map);
// 释放
List<String> biNameList = new ArrayList<String>();
for (BIReportDTO bidto : bilist) {
biNameList.add(bidto.getBiName());
}

String [] biNameArray = new String[biNameList.size()];
downData.add(biNameList.toArray(biNameArray));
// 添加访问方式
String[] accType = { "SSO", "API" };
downData.add(accType);
// 报表类型
List<String> reportTypeNameList = new ArrayList<String>();
List<ReportType> reporttypelist = memoryReportService
.getReportTypeNameList();
for (ReportType type : reporttypelist) {
reportTypeNameList.add(type.getName());
}
String [] reportNameArray = new String[reportTypeNameList.size()];
downData.add(reportTypeNameList.toArray(reportNameArray));
}else{
String[] str1 = new String[]{ "IBM COGNOS8.4", "IBM COGNOS10.4", "PENTAHO_SAIKU5" };
String[] str2 = new String[]{ "COGNOS 10 TEST","MIS-IT系统BI源", "BI(邮件C8)", "MIS-IT系统BI源(C10)", "Peter+Winter", " MAS-GROUP-Pentaho5 saiku","ELIS-DAP-Pentaho5 saiku" };
String[] str3 = new String[]{ "SSO", "API"};
List<String> reportTypeNameList = new ArrayList<String>();
List<ReportType> reporttypelist = memoryReportService
.getReportTypeNameList();
for (ReportType type : reporttypelist) {
reportTypeNameList.add(type.getName());
}
String [] reportNameArray = new String[reportTypeNameList.size()];
downData.add(str1);
downData.add(str2);
downData.add(str3);
downData.add(reportTypeNameList.toArray(reportNameArray));
}
for (int r = 0; r < downRows.length; r++) {
String[] dlData = downData.get(r);// 获取下拉对象
int rownum = Integer.parseInt(downRows[r]);
try {

XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper
.createExplicitListConstraint(dlData);
CellRangeAddressList addressList = null;
XSSFDataValidation validation = null;
addressList = new CellRangeAddressList(1, 500, rownum, rownum);
validation = (XSSFDataValidation) dvHelper
.createValidation(dvConstraint, addressList);
// 07默认setSuppressDropDownArrow(true);
if ("true".equals(request.getParameter("mark2"))) {
validation.setSuppressDropDownArrow(true);
validation.setShowErrorBox(true);
}
sheet.addValidationData(validation);
} catch (Exception e) {
log.info("添加数据验证错误 : " + e.getMessage());
throw e;
}
}
response.setCharacterEncoding("UTF-8");
response.setContentType("application/msexcel"); 
//2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf) 
response.setHeader("Content-Disposition", "attachment;fileName="+java.net.URLEncoder.encode("report.xlsx", "UTF-8")); 
//通过文件路径获得File对象(假如此路径中有一个download.pdf文件) 

//3.通过response获取ServletOutputStream对象(out) 
out = response.getOutputStream(); 
//
wb.write(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != out) {
out.close();
}
}
}
分享到:
评论

相关推荐

    关于表单的导出EXCEL设计,有时需要选择性的导出表单上的某些数据的解决方案

    在IT领域,尤其是在Web开发中,常常需要处理用户交互并提供数据导出功能,例如将表单数据导出为Excel格式。这样的需求通常出现在需要分析、存储或分享大量结构化数据时。本篇将深入探讨如何实现选择性地导出表单上的...

    SSM和EasyUI结合将数据导出表格.zip

    SSM(Spring、SpringMVC、MyBatis)框架与EasyUI的结合是Java Web开发中常见的技术栈,尤其在处理数据展示和导出时表现出高效性和灵活性。本项目通过这种方式,提供了一种将数据库中的数据导出为Excel表格的方法。 ...

    JAVA操作Excel文件+核心代码.docx

    描述中提到,在web开发中,经常使用POI组件来实现Excel文件的操作,例如创建工作簿、工作表、将数据库表数据导出到Excel文件或者从Excel文件导入到当前web项目的数据库。同时,描述中也提到,在B/S结构的系统中,...

    Java_Web开发实战1200例第1卷.part3

    第2章 Java语言基础 20 2.1 基本语法 21 2.2 运算符 25 2.3 条件语句 29 2.4 循环控制 34 2.5 常用排序 42 2.6 算法应用 48 第3章 HTML/CSS技术 53 3.1 页面效果 54 3.2 表格样式 64 3.3 鼠标样式 72 3.4 文字及列表...

    最全省市区三级联动excel

    同时,他们还需要编写JavaScript代码,利用Ajax异步请求获取并更新下拉菜单的内容,以实现前端的三级联动效果。此外,考虑到数据的安全性和隐私保护,开发者还需要注意对敏感信息的处理,如不公开过于详细的个人地址...

    EXCEL导入导出完整实例

    - **Power Automate(旧名Flow)**:Microsoft的Power Automate工具可以创建工作流,实现Excel与外部系统(如数据库、Web服务)的集成,自动化数据导入导出流程。 6. **高级技巧** - **PivotTable(透视表)**:...

    项目_easyui导出excal.rar

    综上所述,“项目_easyui导出excel.rar”是一个结合了EasyUI前端框架和Java后端处理的项目,主要用于实现从Web应用中导出数据到Excel文件的功能。实现过程中涉及到EasyUI的组件使用、Java的Excel处理库Apache POI...

    推荐下载EasyUi、SpringMVC、jquery的ajax、导出Excel文件.docx

    标题中的“推荐下载EasyUi、SpringMVC、jquery的ajax、导出Excel文件.docx”提到了四个关键的IT技术,这些技术都是在Web开发领域非常常用和重要的工具。接下来,我们将逐一深入探讨这些技术: 1. **EasyUI**: ...

    excel文件转换为PDF,jpg,html的方法

    首先,你需要安装Apache POI库,然后编写代码读取Excel文件并使用PDF生成器如iText或Flying Saucer将其导出为PDF。 接下来,我们来看如何将Excel转换为JPG图像。这在需要将表格数据快速以图片形式分享时非常有用。...

    excel表格自由绘制边框优质资料.doc

    在Excel中自由绘制边框是一项基础但非常实用的技能,尤其在...总结,Excel表格自由绘制边框涉及到表格的样式编辑,而将JSP页面导出到Excel则是Web开发中数据导出的一个实例,两者结合可以提高数据管理和呈现的效率。

    java项目H5(前后台)

    **地区区域联动**:这是一种常见的Web表单设计,当用户在一个下拉列表中选择一个选项(如省份)时,另一个下拉列表(如城市)会根据所选的省份动态更新其内容。这通常通过Ajax实现,提高了用户输入的效率和准确性。 ...

    Java_Web开发实战1200例第1卷.part2

    第2章 Java语言基础 20 2.1 基本语法 21 2.2 运算符 25 2.3 条件语句 29 2.4 循环控制 34 2.5 常用排序 42 2.6 算法应用 48 第3章 HTML/CSS技术 53 3.1 页面效果 54 3.2 表格样式 64 3.3 鼠标样式 72 3.4 文字及列表...

    JimuReport - 积木报表(一款免费Web报表工具)

    Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。 领先的企业级Web报表软件,采用纯Web...

    Java 学生信息管理系统(自己做的,连一下数据库就能用了)

    尽管系统的核心功能是数据库操作,但可能还需要处理一些文件,如导出学生信息到CSV或Excel文件,或者读取配置文件。 7. **异常处理**: 异常处理是任何程序的关键部分,Java提供了try-catch-finally结构来捕获和...

    java技术点

    27. **Excel导入导出**:Apache POI库。 **中级知识点** 1. **Maven项目框架**:依赖管理,构建流程。 2. **TCP/UDP/HTTP通信**:Socket,DatagramSocket,HttpClient。 3. **会话跟踪**:session,cookie,URL...

    硕正轻量级富Web应用套件–硕正报表主要指标及功能清单.pdf

    - 支持报表的XML存储格式,以及Excel、其他格式的导入导出,便于数据交换。 - 支持多工作表的导入导出,提升批量处理能力。 - 支持PDF、HTML、TXT等多种格式输出,满足不同的文档需求。 总结,硕正轻量级富Web...

    Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源

    Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。格式设置:样式,条件...增强功能:数据透视表,图表,评论,共享编辑,插入图片,矩阵计算,截图,复制到其他格式,EXCEL导入及导出等

    ZK-AJAX学习笔记

    介绍如何使用ZK导出数据到Excel格式,虽然过程稍显复杂,但对数据处理和报告生成非常有用。 #### 11. ZK的Menu 学习Menu组件的使用,创建导航菜单,提高网站的可用性。 #### 12. ZK 3.0 RC新组件 - 转发功能 ...

    硕正轻量级富Web应用套件–硕正报表主要指标及功能清单.docx

    6. **计算与表达式**:内置脚本和表达式解析功能,遵循C++/Java语法,支持自定义函数和工作表间的计算引用。反向调用js函数,使报表计算更加灵活。 7. **单元格操作**:支持单元格合并/分拆,以及单元格唯一标识名...

Global site tag (gtag.js) - Google Analytics