public static void performanceExcel(String sCurrPath,List<Record> list, String begin,String end) throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat(("yyyy-MM-dd HH:mm:ss"));
try {
//** **********创建工作簿************ *//*
WritableWorkbook workbook = Workbook.createWorkbook(new File(sCurrPath));
//** **********创建工作表************ *//*
WritableSheet sheet = workbook.createSheet("test", 0);
//** **********设置页眉、页脚***************** *//*
sheet.setHeader("页眉", "", "第 &P 页,共 &N 页"); // 设置页眉
sheet.setFooter("", "", "&D &T"); // 设置页脚
//** ****注:以上这些&P、&D等参数可以从EXCEL的宏录制取得******* *//*
//** *********设置列宽**************** *//*
sheet.setColumnView(0, 25); // 第1列
sheet.setColumnView(1, 20);// 第2列
sheet.setColumnView(2, 20);// 第3列
sheet.setColumnView(3, 20);// 第4列
sheet.setColumnView(4, 25); // 第5列
sheet.setColumnView(5, 15); // 第6列
sheet.setColumnView(6, 15); // 第7列
sheet.setColumnView(7, 15); // 第8列
sheet.setColumnView(8, 20);
sheet.setColumnView(9, 20);
sheet.setColumnView(10, 20);
sheet.setColumnView(11, 20); sheet.setColumnView(12, 20);
sheet.setColumnView(13, 20);
sheet.setColumnView(14, 20);
sheet.setColumnView(15, 20);
sheet.setColumnView(16, 20);
sheet.setColumnView(17, 20);
sheet.setColumnView(18, 20);
sheet.setColumnView(19, 20);
sheet.setColumnView(20, 20);
sheet.getSettings().setVerticalFreeze(2);//冻结前两行
// sheet.getSettings().setHorizontalFreeze(2);//冻结前两列 //** ************设置单元格字体************** *//*
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
WritableFont BoldFont12 = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD);//加粗12号字体
WritableFont BoldFont20 = new WritableFont(WritableFont.ARIAL, 20, WritableFont.BOLD);////加粗18号字体 //** ************以下设置几种格式的单元格************ *//*
//用于台头
WritableCellFormat wcf_heading = new WritableCellFormat(BoldFont20);
wcf_heading.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_heading.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_heading.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_heading.setWrap(false); // 是否换行
wcf_heading.setBackground(Colour.GRAY_25); // 用于标题
WritableCellFormat wcf_title = new WritableCellFormat(BoldFont12);
wcf_title.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_title.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_title.setWrap(false); // 是否换行 // 用于跨行
WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);
wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐
wcf_merge.setAlignment(Alignment.LEFT);
wcf_merge.setWrap(true); // 是否换行
// 用于正文
NumberFormat nf = new jxl.write.NumberFormat("0.00"); //设定带小数点数字格式
WritableCellFormat wcfN = new jxl.write.WritableCellFormat(NormalFont, nf);//设定带小数数字单元格格式
wcfN.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcfN.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcfN.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_merge.setWrap(false); // 是否换行
//** ************单元格格式设置完成****************** *//*
// 用于正文
WritableCellFormat wcf_text = new WritableCellFormat(NormalFont);
wcf_text.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_text.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_text.setAlignment(Alignment.CENTRE); // 水平对齐
wcf_text.setWrap(true); // 是否换行
//** ***************以下是内容************************** *//*
WritableFont wcf_font=(WritableFont) wcf_text.getFont();
WritableCellFormat wcf_numberfomart = new WritableCellFormat(wcf_font,NumberFormats.TEXT);//设置数字格式类型按照文本格式输出
wcf_numberfomart.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_numberfomart.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
wcf_numberfomart.setAlignment(Alignment.LEFT); // 水平对齐
wcf_numberfomart.setWrap(true); // 是否换行
//** ***************以下是标题************************** *//*
sheet.setRowView(0, 800); // 设置行高
sheet.setRowView(1, 1600); // 设置行高
sheet.addCell(new Label(0, 0, "业绩销售报表", wcf_heading));
sheet.mergeCells(0, 0, 20, 0); sheet.addCell(new Label(0, 1, "业务员", wcf_title));
sheet.addCell(new Label(1, 1, "所属部门", wcf_title));
sheet.addCell(new Label(2, 1, "预算收入合计", wcf_title));
sheet.addCell(new Label(3, 1, "预算支出合计", wcf_title));//支出
sheet.addCell(new Label(4, 1, "预算利润合计", wcf_title));//收入
sheet.addCell(new Label(5, 1, "实际收入合计", wcf_title));
sheet.addCell(new Label(6, 1, "手续费合计", wcf_title));
sheet.addCell(new Label(7, 1, "实际支出合计", wcf_title));
sheet.addCell(new Label(8, 1, "实际利润合计", wcf_title));
sheet.addCell(new Label(9, 1, "退款利润合计", wcf_title));
sheet.addCell(new Label(10, 1, "总利润合计", wcf_title)); sheet.addCell(new Label(11,1,"团名称",wcf_title));
sheet.addCell(new Label(12,1,"团号",wcf_title));
sheet.addCell(new Label(13,1,"目的地",wcf_title));
sheet.addCell(new Label(14,1,"类型",wcf_title));
sheet.addCell(new Label(15,1,"渠道",wcf_title));
sheet.addCell(new Label(16,1,"结算时间",wcf_title));
sheet.addCell(new Label(17,1,"实际收入",wcf_title));
sheet.addCell(new Label(18,1,"手续费",wcf_title));
sheet.addCell(new Label(19,1,"实际支出",wcf_title));
sheet.addCell(new Label(20,1,"利润",wcf_title)); int currRow = 2;
Map<String,String> map= CrmSystem.commonMap("workflowMap");
if (list != null && list.size() > 0) {
for (Record cr : list) {
String createuser = cr.get("createuser").toString();
String creatname = "";
if(StrKit.notBlank(createuser)){
CrmUser user = CrmUser.dao.findById(createuser);
creatname = user.getNickname();
}
System.out.println("creatname:"+creatname);
String depart = cr.get("depart_id").toString();
String departname = "";
if(StrKit.notBlank(depart)){
CrmDepartment department = CrmDepartment.dao.findById(depart);
departname = department.getDepartmentName();
}
List<CrmTeam> teamList = CrmTeam.getTeamList(begin, end, createuser);
int num = 1;
if(teamList != null){
if(teamList.size() >1){
num = teamList.size();
}else{
num = 0;
}
}else {
num = 0;
}
//合并行
sheet.mergeCells(0, currRow, 0, num + currRow-1);
sheet.mergeCells(1, currRow, 1, num + currRow-1);
sheet.mergeCells(2, currRow, 2, num+currRow-1);
sheet.mergeCells(3, currRow, 3, num+currRow-1);
sheet.mergeCells(4, currRow, 4, num+currRow-1);
sheet.mergeCells(5, currRow, 5, num+currRow-1);
sheet.mergeCells(6, currRow, 6, num+currRow-1);
sheet.mergeCells(7, currRow, 7, num+currRow-1);
sheet.mergeCells(8, currRow, 8, num+currRow-1);
sheet.mergeCells(9, currRow, 9, num+currRow-1);
sheet.mergeCells(10, currRow, 10, num + currRow-1);
if(teamList != null && teamList.size() >0 ){
for (CrmTeam team:teamList) {
sheet.setRowView(currRow, 400); // 设置行高 sheet.addCell(new Label(0, currRow, checkBlank(creatname), wcf_text)); sheet.addCell(new Label(1, currRow, checkBlank(departname), wcf_text));
Double yushou = Double.valueOf(cr.get("yushou").toString()); sheet.addCell(new Label(2, currRow, checkBlank(yushou), wcf_text));
Double yufu = Double.valueOf(cr.get("yufu").toString()); sheet.addCell(new Label(3,currRow,checkBlank(yufu),wcf_text));
Double bugetprofit = HelpUtil.sub(yushou, yufu); sheet.addCell(new Label(4,currRow,checkBlank(bugetprofit),wcf_text));
Double shishou = Double.valueOf(cr.get("shishou").toString()); sheet.addCell(new Label(5, currRow, checkBlank(shishou), wcf_text));
Double shouxufei = Double.valueOf(cr.get("shouxufei").toString()); sheet.addCell(new Label(6,currRow,checkBlank(shouxufei),wcf_text));
Double shifu = Double.valueOf(cr.get("shifu").toString()); sheet.addCell(new Label(7, currRow, checkBlank(shifu), wcf_text));
Double profit = HelpUtil.sub(HelpUtil.sub(shishou, shouxufei), shifu); sheet.addCell(new Label(8, currRow, checkBlank(profit), wcf_text));
Double tuizhi = Double.valueOf(cr.get("tuizhi").toString());
Double tuishou = Double.valueOf(cr.get("tuishou").toString());
Double refundProfit = HelpUtil.sub(tuizhi, tuishou); sheet.addCell(new Label(9, currRow, checkBlank(refundProfit), wcf_text));
Double totalprofit = HelpUtil.add(profit,refundProfit); sheet.addCell(new Label(10, currRow, checkBlank(totalprofit), wcf_text)); sheet.addCell(new Label(11,currRow,checkBlank(team.getTeamname()),wcf_text));
sheet.addCell(new Label(12,currRow,checkBlank(team.getTeamcode()),wcf_text));
sheet.addCell(new Label(13,currRow,checkBlank(team.getDestination()),wcf_text));
sheet.addCell(new Label(14,currRow,checkBlank(CrmTeam.teamtypeMap.get(team.getTeamtype().toString())),wcf_text));
sheet.addCell(new Label(15,currRow,checkBlank(CrmTeam.channelMap.get(team.getChannel().toString())),wcf_text));
sheet.addCell(new Label(16, currRow, checkBlank(DateUtil.dateToString(team.getSettletime(),"yyyy-MM-dd HH:mm:ss")), wcf_text));
Double comin = CrmCash.dao.getComein(Integer.valueOf(team.get("id").toString()));
sheet.addCell(new Label(17, currRow, checkBlank(comin), wcf_text));
Double fee = CrmCash.dao.getFeeprice(Integer.valueOf(team.get("id").toString()));
sheet.addCell(new Label(18,currRow,checkBlank(fee),wcf_text));
Double pay = CrmCash.dao.getPayment1(Integer.valueOf(team.get("id").toString()));
sheet.addCell(new Label(19,currRow,checkBlank(pay),wcf_text));
Double mporfit = HelpUtil.sub(HelpUtil.sub(comin, fee), pay);
sheet.addCell(new Label(20,currRow,checkBlank(mporfit),wcf_text));
currRow++;
}
} }
}
/** **********以上所写的内容都是写在缓存中的,下一句将缓存的内容写到文件中******** */
workbook.write();
/** *********关闭文件************* */
workbook.close();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String sCurrPath = System.getProperty("java.io.tmpdir") + "\\xlsx"+ (new java.util.Date().getTime())+".xls";

jxl 创建excel的更多相关文章

  1. Jxl创建Excel文件和解析Excel文件

    import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...

  2. android开发使用jxl创建Excel

    这周水了几天,今天把博客赶上,找找状态. 周五的时候终于完成了课堂测试第二阶段,主要的难点就是生成Excel表并将填写的数据插入到Excel表中. 一.jxl使用 1.创建或读取一个工作薄 Workb ...

  3. JXL操作Excel

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...

  4. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

  5. jxl读写excel的方法

    jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好 poi功能比jxl强大但是比较吃内存,支持计算公式 具体参考链接    http://www.cnblogs. ...

  6. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

  7. jxl创Excel档java示例代码说明

    记得下载 并 导入jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import j ...

  8. Java 使用 Jxl 实现 Excel 导入导出

    开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的.这里做一下使用JXL的学习记录.首先需要导入相应的 ...

  9. JXL导出Excel(只支持xls版本)——(一)

    注意: 导出的后缀是xls可以直接打开,如果导出的后缀是xlsx打开报错,需要手动将名字改为xls才可以打开.也就是JXL不可以导出xlsx的excel. Jar包

随机推荐

  1. 特征选择:方差选择法、卡方检验、互信息法、递归特征消除、L1范数、树模型

    转载:https://www.cnblogs.com/jasonfreak/p/5448385.html 特征选择主要从两个方面入手: 特征是否发散:特征发散说明特征的方差大,能够根据取值的差异化度量 ...

  2. Android RIL概述

    前言 Android作为一个通用的移动平台,其首要的功能就是通话.短信以及上网等通信功能.那么,从系统的角度来看,Android究竟是怎么实现与网络的交互的了? 这篇文章里,就来看一看Android中 ...

  3. ffmpeg 编码(视屏)

    分析ffmpeg_3.3.2 muxing 1:分析主函数,代码如下: int main(int argc, char **argv) { OutputStream video_st = { }, a ...

  4. Python中属性和描述符的简单使用

    Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题苦恼的 ...

  5. [Python] numpy.random.rand

    numpy.random.rand numpy.random.rand(d0, d1, ..., dn) Random values in a given shape. Create an array ...

  6. Executor框架(四)周期/延时任务ScheduleThreadPoolExecutor

    ScheduledThreadPoolExecutor 介绍   ScheduledThreadPoolExecutor 是一个可以实现定时任务的 ThreadPoolExecutor(线程池).比 ...

  7. 数据库之SQL笛卡尔积

    1.笛卡尔积定义 笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join).所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表 ...

  8. redis删除key

    shell命令如下 #!/bin/bash echo "$(redis-cli keys "_query*")" | while read LINE; do e ...

  9. mysql 定时执行

      mysqltablevariables任务sqlinsert 重新定义mysql命令行结束符为//,命令行创建存储过程需要.  delimiter //  MySQL5.1.x版本中引入了一项新特 ...

  10. 使用seaborn制图(柱状图)

    import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...