在jsp中首先应该实现form表格
<form style="margin-top: 20px;" method="get" id="Form">
<div class="main">
<div class="indexBg">
<div class="pageBox">
<div class="inputBox clearfix">
<!-- 需要在写一个连接 -->
<input type="button" value="导出" class="daochu" onclick="exportData('/manage.onigiri/customerServiceInviteInfo/export')"/>
//在这里实现点击事件 下面用jquery来实现action
var f=$("#Form");
exportData = function(action){
$(f).attr('action', action);
$(f).attr('target', '_blank');
$(f).attr('method', 'post');
$(f).submit()
$(f).attr('action', '');
$(f).attr('target', '');
$(f).attr('method', 'get');
}
后来逻辑处理 spring的配置这里就不说了 访问action 然后通过http协议访问后台处理
@SuppressWarnings({"rawtypes","unchecked"})
@RequestMapping(value="/export",method={RequestMethod.POST,RequestMethod.GET})
public void exportsalesPerformanceList(HttpServletRequest request,HttpServletResponse response){
log.info("------------导出所有的销售业绩-------");
Map map=new HashMap();
map.put("pageNum", 1);
map.put("pageSize", Integer.MAX_VALUE);
RestClientRequest rest=new RestClientRequest();
List<Map> list=new ArrayList<Map>();
/**
* 查询销售业绩 明细
*/
Map userInviteMap=new HashMap();
//这里是用来访问后台数据的 具体配置没有在这里提现
userInviteMap = rest.restSubmitJson(BaseAction.SELECT_SALESPERFORMANCE,map);
if(ResultUtil.isSuccess(userInviteMap)){
userInviteMap=(Map) ResultUtil.getResult(userInviteMap);
//初始值为0 邀请人初始值总计
int inviteCount=0;
//一度年化总额初始值为0
Double annualInvest=0.0;
//一度邀请佣金
Double commissonMoney=0.0;
//二度邀请人数
int secondaryInvestCount=0;
//二度年化投资额
Integer totalSecondAnnualInvestMoney=0;
//二度 邀请佣金
Double secondaryCommissonMoney=0.0;
Map selectMap= new HashMap();
ArrayList selectlist=(ArrayList) userInviteMap.get("list");
//下面是从数据库中拿到数据遍历 先是list然后map 强制转换成其他类型
System.out.println("-----------------------------"+selectlist.size());
for(int i=0;i<selectlist.size();i++){
//一度总人数的添加
inviteCount=inviteCount+(Integer) ((Map) selectlist.get(i)).get("inviteCount");
//一度年化总额
annualInvest=annualInvest+(Double) ((Map) selectlist.get(i)).get("annualInvest");
//一度邀请佣金
commissonMoney=commissonMoney+(Double) ((Map) selectlist.get(i)).get("commissonMoney");
//二度总人数的添加
secondaryInvestCount=secondaryInvestCount+(Integer) ((Map) selectlist.get(i)).get("secondaryInvestCount");
//二度年化投资额
totalSecondAnnualInvestMoney=totalSecondAnnualInvestMoney+(Integer) ((Map) selectlist.get(i)).get("totalSecondAnnualInvestMoney");
//二度邀请佣金
secondaryCommissonMoney=secondaryCommissonMoney+(Double) ((Map) selectlist.get(i)).get("secondaryCommissonMoney");
}
/*System.out.println(Inviteindex);
System.out.println(annualInvest);
System.out.println(commissonMoney);
System.out.println(secondaryInvestCount);
System.out.println(totalSecondAnnualInvestMoney);
System.out.println(secondaryCommissonMoney);
System.out.println(Inviteindex);*/
request.setAttribute("salesPerformance", userInviteMap);
list.addAll((List<Map>)userInviteMap.get("list"));
Map zongjieMap=new HashMap();
zongjieMap.put("realName","总计");
zongjieMap.put("ukey1", "--");
zongjieMap.put("inviteCount",inviteCount);
zongjieMap.put("annualInvest", annualInvest);
zongjieMap.put("commissonRate", "--");
zongjieMap.put("commissonMoney",commissonMoney);
zongjieMap.put("secondaryInvestCount", secondaryInvestCount);
zongjieMap.put("totalSecondAnnualInvestMoney",totalSecondAnnualInvestMoney);
zongjieMap.put("secondaryCommissonRate","--" );
zongjieMap.put("secondaryCommissonMoney",secondaryCommissonMoney );
zongjieMap.put("investUserId", "--");
list.add(zongjieMap);
/*log.info(list.toString());*/
}
Map header=new LinkedHashMap();
header.put("realName","姓名");
header.put("ukey1","邀请码");
header.put("inviteCount","一度邀请人数");
header.put("annualInvest","一度年化投资额");
header.put("commissonRate","一度邀请佣金比例");
header.put("commissonMoney","一度邀请佣金");
header.put("secondaryInvestCount","二度邀请人数");
header.put("totalSecondAnnualInvestMoney","二度年化投资额");
header.put("secondaryCommissonRate","二度邀请佣金比例");
header.put("secondaryCommissonMoney","二度邀请佣金");
header.put("investUserId","详情");
byte[] b;
try {
//这里用的是插件处理
b=ExcelUtil.exportAsBytes(list, header);
OutputStream out=null;
response.setHeader("content-disposition", "attachment;filename=salesPerformance.xlsx");
response.setContentType("application/x-excel");
response.setCharacterEncoding("UTF-8");
out = response.getOutputStream();
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
log.error("导出销售业绩..", e);
}
}
//简单的将插件处理类写下
public class ExcelUtil {
private static Logger log = LoggerFactory.getLogger(ExcelUtil.class);
@SuppressWarnings("rawtypes")
public static Workbook createWorkbook(List<Map> list, Map header) throws Exception{
// 声明一个工作薄
Workbook workbook = new SXSSFWorkbook(1000);
log.info("创建工作簿,共{}行数据", list != null ? list.size() : 0);
// 生成一个表格
Sheet sheet = workbook.createSheet();
log.info("创建表格,表头:{}", header);
list.add(0, header);
Row row = null;
Cell cell = null;
log.info("开始写入数据");
for(int i =0 ; i < list.size(); i++){
row = sheet.createRow(i);
Map map = list.get(i);
int num = 0;
Iterator it = header.keySet().iterator();
while(it.hasNext()){
cell = row.createCell(num++);
Object key = it.next();
Object value = map.get(key);
cell.setCellValue(parseCellValue(value));
}
if((i+1)%1000 == 0){
log.info("已写入{}行数据", i + 1);
}
}
log.info("数据写入完成");
return workbook;
}
/**
* @Description 将文件写入磁盘
* @author baiyanbing
* @date 2016年6月3日下午6:02:36
* @param filepath 写入磁盘路径
* @param workbook excel文件
* @throws Exception
*/
public static void writeToDisk(String filepath, Workbook workbook) throws Exception{
log.info("文件写入磁盘路径:{}", filepath);
OutputStream os = null;
try {
File file = new File(filepath);
os = new FileOutputStream(file);
workbook.write(os);
os.flush();
} catch (Exception e) {
log.error("文件写入磁盘失败", e);
throw e;
} finally{
IOUtils.closeQuietly(os);
}
}
public static void exportToDisk(String filepath, List<Map> list, Map header) throws Exception{
log.info("开始导出数据,共 {} 条数据", list.size());
long b = System.currentTimeMillis();
Workbook workbook = createWorkbook(list, header);
writeToDisk(filepath, workbook);
long a = System.currentTimeMillis();
log.info("导出结束,用时{}秒,导出路径{}", (a-b)/1000.0, filepath);
}
public static byte[] exportAsBytes(List<Map> list, Map header) throws Exception{
ByteArrayOutputStream baos = null;
try{
baos = new ByteArrayOutputStream();
Workbook workbook = createWorkbook(list, header);
workbook.write(baos);
byte[] b = baos.toByteArray();
IOUtils.closeQuietly(baos);
return b;
}catch(Exception e){
return null;
} finally {
IOUtils.closeQuietly(baos);
}
}
public static void main(String[] args) throws Exception {
Map<String, Object> header = new HashMap<String, Object>();
header.put("id", "ID");
header.put("name", "姓名");
header.put("age", "年龄");
header.put("addr", "地址");
List<Map> list = new LinkedList<Map>();
for(int i = 0 ; i <=1000; i++){
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", i);
map.put("name", "name_"+ i);
map.put("age", "age_"+i);
map.put("addr", "addr_"+i);
list.add(map);
}
// exportToDisk("D:\\g.xlsx", list, header);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setGroupingSize(0);
df.setRoundingMode(RoundingMode.FLOOR);
Object d = 22213223131318.9594121231;
System.out.println(df.format(d));
NumberFormat nf = NumberFormat.getInstance();
// nf.setMaximumFractionDigits(2);
// nf.setGroupingUsed(false);
// nf.setRoundingMode(RoundingMode.FLOOR);
System.out.println(nf.format(d));
}
private static String parseCellValue(Object value){
if(value == null){
return "";
}
if(value instanceof Double){
return new BigDecimal((Double) value).setScale(2, RoundingMode.HALF_UP).toString();
}
return ObjectUtils.toString(value);
}
}
分享到:
相关推荐
本人试过了可以用,做jsp程序导出excel功能的可以参考下,下载后按照模版进行修改
jsp-数据导出功能 图书管理系统 使用POI技术,excel数据导出
总结一下,实现“jsp点击导出数据”的功能主要涉及前端的按钮触发、Ajax请求,以及后端的Servlet处理请求、生成文件内容和设置响应头。这个过程可以扩展到更复杂的场景,如处理大量数据、优化性能或支持不同文件格式...
在Java编程中,JSP(JavaServer Pages)是一种动态网页技术,用于生成和展示服务器端的HTML内容。...总的来说,利用Java Excel API,开发者可以轻松地在JSP中处理Excel文件,实现数据的导入导出功能。
本文将深入探讨如何在JSP环境中实现Excel文件的导入与导出功能,利用Apache POI库作为主要工具。 ### Apache POI简介 Apache POI是一个开源的Java API,用于读写Microsoft Office格式的文件,如Word、Excel等。它...
本文将详细探讨JSP如何实现数据的导入与导出功能,特别是与Excel文件的交互。 首先,我们来看JSP数据导入。通常,数据导入涉及到从Excel文件中读取数据并将其存储到数据库。这需要使用Java的API,如Apache POI库,...
本主题聚焦于"JSP中table导出多表头excel"的技术实现,这是一种常见的需求,特别是在展示复杂表格数据时,多表头能够清晰地组织和展示信息。我们将探讨如何利用前台JavaScript技术来完成这一任务,并关注IE浏览器的...
"JSP SERVLET 导出数据库内容到EXCEL"是一个典型的Java Web应用场景,结合了JSP的视图呈现、Servlet的业务处理和数据库操作,以及第三方库Apache POI的文件生成能力,为企业级应用提供了强大的数据导出功能。
通过以上步骤,你可以在JSP页面上实现导出Excel的功能。当然,实际项目可能需要处理更复杂的需求,如动态生成列、合并单元格、样式设置等,这需要进一步学习和理解Apache POI的API。同时,也可以考虑使用其他库,如...
在日常开发中,我们需要能够把页面上一个表格的内容导出到Excel中,然后用户修改后再导回到表格中的功能。 在这里,通过使用JQUERY+JQUERY UI+JSON-LIB+POI实现这个功能数据导出设计:通过使用JQUERY分析表格的...
实现Excel导入与导出功能,并WEB页面附带进度条对Excel进行美化如:设置背景色、线条、格子大小等。 使用步骤很简单 1.解压下载好的项目,这里需要进行基本配置如Maven配置,本项目中使用的是jdk 1.8。 2.启动...
在Java Web开发中,`export.jsp`通常用于实现数据的导入与导出功能,这是一个非常常见的需求,尤其是在数据分析、报表生成以及数据迁移等场景下。本篇文章将深入探讨`export.jsp`的实现原理及其在实际应用中的关键...
本篇文章将详细探讨如何在JSP中实现Excel的导出和导入功能,这对于构建企业级办公系统是非常实用的。 一、导出Excel 1. **使用Apache POI库**:Apache POI是一个流行的API,用于读取和写入Microsoft Office格式的...
总结来说,通过结合JSP和Apache POI,我们可以创建一个动态的、基于用户输入的Word文档导出功能。这使得开发者能够方便地将Web应用程序的数据以用户熟悉的Word格式导出,提高用户体验。不过,实际应用中,需要根据...
总结来说,JSP导出Word文档的过程涉及到HTML和Word之间的转换,以及服务器端的响应设置。这种技术常用于生成报告、报表或者需要自动生成Word文档的场景。在实际应用中,你可以根据需求自定义HTML模板,以满足各种...
最后,测试导出功能,用户访问excel.jsp时,应该能够下载到一个名为"export.xls"的Excel文件,其中包含了JSP页面上的HTML表格数据。 以上就是使用JSP将HTML表格导出为Excel的基本方法。需要注意的是,实际应用中...
在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页。本教程将介绍如何使用这两者结合...
在Java编程环境中,将JSP表格中的数据导出到Excel文件是一种常见的需求,尤其是在数据分析、报表生成和数据交换等场景中。本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及...
`jsp导出word.txt`可能是一个包含示例代码的文本文件,详细展示了如何在JSP中实现上述步骤。你可以查看这个文件以获取更具体的代码实现。 总的来说,通过JSP结合Apache POI库,我们可以轻松地实现在Web应用中生成并...
本篇文章将详细探讨如何在JSP(JavaServer Pages)环境中,通过JavaScript实现Word和Excel的导出功能。 首先,我们需要理解JSP和JavaScript的角色。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,...