- 浏览: 68177 次
文章分类
最新评论
-
小色帝:
我是天才是打发
Jquery实现的Tabs页 -
小色帝:
小色帝 写道1111而温热
Jquery实现的Tabs页 -
小色帝:
1111而温热
Jquery实现的Tabs页
@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();
}
}
}
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();
}
}
}
发表评论
-
c3p0代码动态切换数据源
2018-08-06 17:54 1080public class PARPDatasource imp ... -
sql 优化开多个线程跑
2018-07-11 09:54 684select /*+ parallel(8) */ * fr ... -
redis 事物限制频率和获得令牌
2018-07-11 02:50 927package com.dongnaoedu.tony.ser ... -
Redis分布式锁解决抢购问题
2018-07-11 02:39 1330废话不多说,首先分享一个业务场景-抢购。一个典型的高并发问题, ... -
StringWriter 接收异常信息
2018-07-05 18:42 448try { int a=1/0; } catch (E ... -
RedisCacheServiceUtil
2018-06-29 15:06 383package com.paic.icorepnbs.web. ... -
jedis 操作redis
2018-06-26 09:13 370//连接redis ,redis的默认端口是6379 Je ... -
多线程缓存优化思想
2018-06-06 15:33 3671.背景 题库 随机生成N张试卷,每张试卷M个题目,每个题目要 ... -
网络编程之使用HttpClient批量上传文件
2018-05-28 01:12 547网络编程之使用HttpClient批量上传文件(一) 2014 ... -
oracle 正则表达式 替换 ‘’:
2018-05-18 18:04 588select /*+ parallel(8) */ t.na ... -
Java Socket编程
2016-12-28 23:28 340对于Java Socket编程而言,有两个概念,一个是Serv ... -
Java多线程学习(吐血超详细总结)
2016-12-27 17:15 416目录(?)[-] 1.一扩展javalangThread类 2 ... -
JAVA多线程实现的三种方式
2016-12-27 17:16 418Java多线程实现方式主要有三种:继承Thread类、实现Ru ... -
Maven 入门菜鸟教程
2016-12-02 10:02 1178学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门) ... -
Java 读写Properties配置文件
2016-08-22 15:00 405Java 读写Properties配置文件 1.Pro ... -
JAVA前端与后端参数传递方法小结
2016-07-26 10:54 46611,从Action中传值到JSP页面的方法 ①在Actio ... -
苟富贵
2013-02-25 09:43 0额梵蒂冈过v梵蒂冈北方多汇报地方环保 -
Request的getParameter和getAttribute方法的区别
2013-01-22 10:01 649HttpServletRequest.getParameter ... -
Eclipse快捷键小结
2012-12-26 11:26 737Eclipse快捷键小结 Eclipse ... -
JAVA去空格
2012-12-20 16:53 655String ccc=” he l l o , w o r l ...
相关推荐
在IT领域,尤其是在Web开发中,常常需要处理用户交互并提供数据导出功能,例如将表单数据导出为Excel格式。这样的需求通常出现在需要分析、存储或分享大量结构化数据时。本篇将深入探讨如何实现选择性地导出表单上的...
SSM(Spring、SpringMVC、MyBatis)框架与EasyUI的结合是Java Web开发中常见的技术栈,尤其在处理数据展示和导出时表现出高效性和灵活性。本项目通过这种方式,提供了一种将数据库中的数据导出为Excel表格的方法。 ...
描述中提到,在web开发中,经常使用POI组件来实现Excel文件的操作,例如创建工作簿、工作表、将数据库表数据导出到Excel文件或者从Excel文件导入到当前web项目的数据库。同时,描述中也提到,在B/S结构的系统中,...
第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 文字及列表...
同时,他们还需要编写JavaScript代码,利用Ajax异步请求获取并更新下拉菜单的内容,以实现前端的三级联动效果。此外,考虑到数据的安全性和隐私保护,开发者还需要注意对敏感信息的处理,如不公开过于详细的个人地址...
- **Power Automate(旧名Flow)**:Microsoft的Power Automate工具可以创建工作流,实现Excel与外部系统(如数据库、Web服务)的集成,自动化数据导入导出流程。 6. **高级技巧** - **PivotTable(透视表)**:...
综上所述,“项目_easyui导出excel.rar”是一个结合了EasyUI前端框架和Java后端处理的项目,主要用于实现从Web应用中导出数据到Excel文件的功能。实现过程中涉及到EasyUI的组件使用、Java的Excel处理库Apache POI...
标题中的“推荐下载EasyUi、SpringMVC、jquery的ajax、导出Excel文件.docx”提到了四个关键的IT技术,这些技术都是在Web开发领域非常常用和重要的工具。接下来,我们将逐一深入探讨这些技术: 1. **EasyUI**: ...
首先,你需要安装Apache POI库,然后编写代码读取Excel文件并使用PDF生成器如iText或Flying Saucer将其导出为PDF。 接下来,我们来看如何将Excel转换为JPG图像。这在需要将表格数据快速以图片形式分享时非常有用。...
在Excel中自由绘制边框是一项基础但非常实用的技能,尤其在...总结,Excel表格自由绘制边框涉及到表格的样式编辑,而将JSP页面导出到Excel则是Web开发中数据导出的一个实例,两者结合可以提高数据管理和呈现的效率。
**地区区域联动**:这是一种常见的Web表单设计,当用户在一个下拉列表中选择一个选项(如省份)时,另一个下拉列表(如城市)会根据所选的省份动态更新其内容。这通常通过Ajax实现,提高了用户输入的效率和准确性。 ...
第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 文字及列表...
Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。 领先的企业级Web报表软件,采用纯Web...
尽管系统的核心功能是数据库操作,但可能还需要处理一些文件,如导出学生信息到CSV或Excel文件,或者读取配置文件。 7. **异常处理**: 异常处理是任何程序的关键部分,Java提供了try-catch-finally结构来捕获和...
27. **Excel导入导出**:Apache POI库。 **中级知识点** 1. **Maven项目框架**:依赖管理,构建流程。 2. **TCP/UDP/HTTP通信**:Socket,DatagramSocket,HttpClient。 3. **会话跟踪**:session,cookie,URL...
- 支持报表的XML存储格式,以及Excel、其他格式的导入导出,便于数据交换。 - 支持多工作表的导入导出,提升批量处理能力。 - 支持PDF、HTML、TXT等多种格式输出,满足不同的文档需求。 总结,硕正轻量级富Web...
Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。格式设置:样式,条件...增强功能:数据透视表,图表,评论,共享编辑,插入图片,矩阵计算,截图,复制到其他格式,EXCEL导入及导出等
介绍如何使用ZK导出数据到Excel格式,虽然过程稍显复杂,但对数据处理和报告生成非常有用。 #### 11. ZK的Menu 学习Menu组件的使用,创建导航菜单,提高网站的可用性。 #### 12. ZK 3.0 RC新组件 - 转发功能 ...
6. **计算与表达式**:内置脚本和表达式解析功能,遵循C++/Java语法,支持自定义函数和工作表间的计算引用。反向调用js函数,使报表计算更加灵活。 7. **单元格操作**:支持单元格合并/分拆,以及单元格唯一标识名...