dao

    <select id="selectTargetModel" resultMap="targetMap">
select si.SHOP_NAME shopName,si.SHOP_ID,DATE_FORMAT(t.datadate,'%m/%Y') datadate,
IFNULL(sum(t.quantity),) quantity,IFNULL(t.product_model,) model,t.class_id
from t_target t
JOIN shop_info si on si.SHOP_ID=t.target_id
<include refid="listwhere"/>
and t.class_id= and si.flag=
GROUP BY si.shop_id,t.product_model
</select> <select id="selectKeyModel" resultMap="targetMap">
select tm.branch_model model from t_modelmap tm where tm.isKey=
and tm.party_id=#{countryId}
and tm.flag=
order by tm.branch_model desc
</select>

service

//导出印尼目标
public XSSFWorkbook exportTargetExcel(@Param("searchStr")String searchStr,@Param("conditions")String conditions,String[] excelHeader,String excelHeader1,String excelHeader2,String title) throws Exception;

service.impl

@Override
public XSSFWorkbook exportTargetExcel(String searchStr, String conditions,
String[] excelHeader, String excelHeader1,String excelHeader2, String title)
throws Exception {
//查询门店以及门店整体目标
List<IndonTarget> list = indontargetDao.selectShopList(searchStr,conditions);
//分公司的所有关键机型
List<IndonTarget> ModelKeyList = indontargetDao.selectKeyModel(WebPageUtil.getLoginedUser().getPartyId()); //查询门店关键机型目标
List<IndonTarget> ModelList = indontargetDao.selectTargetModel(searchStr, conditions); // SimpleDateFormat format = new SimpleDateFormat("MM/yyyy");
// Date date =new Date();
//
// String d = format.format(date);
// System.out.println(d+"-------------9999----------------");
// Date dt = format.parse(d);
// System.out.println(d+"-------------9999----------------"); int[] excelWidth = {,,,};
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet(title); //导出字体样式
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) ); // 字体大小 //导出样式
XSSFCellStyle style = workbook.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style.setFont(font); //导出样式
XSSFCellStyle style1 = workbook.createCellStyle();
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style1.setFont(font);
// style1.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
// style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
// style1.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
// style1.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
style1.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); sheet.createFreezePane(,,,);//锁定参数1为起始列,参数2为起始行,3结整列,4为结束行
sheet.addMergedRegion(new CellRangeAddress(,,,));// 起始行号,终止行号, 起始列号,终止列号
sheet.addMergedRegion(new CellRangeAddress(,,,));// 起始行号,终止行号, 起始列号,终止列号
sheet.addMergedRegion(new CellRangeAddress(,,,ModelKeyList.size()+));// 起始行号,终止行号, 起始列号,终止列号 for (int i = ; i < excelWidth.length; i++) {
sheet.setColumnWidth(i, * excelWidth[i]);
} XSSFRow row = sheet.createRow(); //表头数据
for (int i = ; i < excelHeader.length; i++) {
XSSFCell cell = row.createCell(i);
cell.setCellValue(excelHeader[i]);
cell.setCellStyle(style1); } XSSFRow row1 = sheet.createRow();
XSSFCell cell1 = row1.createCell();
cell1.setCellValue(excelHeader1);
cell1.setCellStyle(style1); XSSFCell cell10 = row.createCell();
cell10.setCellValue(excelHeader2);
cell10.setCellStyle(style1); //门店整体目标 动态左边门店
for (int a = ; a < list.size(); a++) {
row = sheet.createRow(a+);
IndonTarget indTarget = list.get(a);
//获得 当前的门店ID
String shop=indTarget.getShopId()+""; if(indTarget.getShopName()!=null && indTarget.getShopName()!=""){
XSSFCell cell = row.createCell();
cell.setCellValue(indTarget.getShopName());
cell.setCellStyle(style);
} XSSFCell cell = row.createCell();
cell.setCellValue(indTarget.getDatadate());
cell.setCellStyle(style); XSSFCell cell2 = row.createCell();
cell2.setCellValue(indTarget.getQuantity());
cell2.setCellStyle(style); //所有分公司关键机型 动态头部机型
for (int i = ; i < ModelKeyList.size(); i++) {
IndonTarget keyModel = ModelKeyList.get(i);
//获得当前型号
String key=keyModel.getModel(); XSSFCell cell0 = row1.createCell(i+);
cell0.setCellValue(key);
cell0.setCellStyle(style1);
XSSFCell cell3 = row.createCell(i+);
//分公司某个关键机型目标
for (int j = ; j < ModelList.size(); j++) {
IndonTarget indTargetData = ModelList.get(j);
String thisShop=indTargetData.getShopId()+"";
if(thisShop.equals(shop) && indTargetData.getModel().equals(key) ){
cell3.setCellValue(indTargetData.getQuantity()); } }
cell3.setCellStyle(style);
} } return workbook;
}

action

    public void exportTargetExcel(){
try {
String title="Indonesia TV Target";
String fileName = title+".xlsx";
final String userAgent = request.getHeader("USER-AGENT");
if(null!=userAgent){
if (- != userAgent.indexOf("Firefox")) {//Firefox
fileName = new String(fileName.getBytes(), "ISO8859-1");
}else if (- != userAgent.indexOf("Chrome")) {//Chrome
fileName = new String(fileName.getBytes(), "ISO8859-1");
} else {//IE7+
fileName = URLEncoder.encode(fileName, "UTF-8");
fileName = StringUtils.replace(fileName, "+", "%20");//替换空格
}
} else {
fileName = fileName;
} String datadate = request.getParameter("datadate");
String shop = request.getParameter("shopName"); SimpleDateFormat dfd = new SimpleDateFormat("yyyy-MM");// 设置日期格式
Date d = new Date();
String dt = dfd.format(d); String searchStr = "1 = 1"; if(shop!=null && !shop.equals("")){
shop=shop.replace("\'", "\\'");
searchStr += " and si.shop_name like ('%"+shop+"%')";
} if(datadate!=null && !datadate.equals("")){
searchStr += " and date_format(t.datadate,'%Y-%m') ='"+datadate+"'";
}else{
searchStr += " and date_format(t.datadate,'%Y-%m') ='"+dt+"'";
} //权限
String userPartyIds = WebPageUtil.loadPartyIdsByUserId();
String conditions = "";
if(!WebPageUtil.isHAdmin()){
if(null!=userPartyIds && !"".equals(userPartyIds)){
conditions +=" si.COUNTRY_ID in ("+userPartyIds+")";
}else
{
conditions += " 1=2 ";
}
}else{
conditions += " 1=1 ";
} String[] excelHeader={
"*Shop Name","*Month","Total Target"
}; String excelHeader1=
"*Quantity"
; String excelHeader2=
"*Model Target"
; XSSFWorkbook workbook =indonTargetServce.exportTargetExcel(conditions,searchStr, excelHeader,excelHeader1,excelHeader2, title);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
OutputStream ouputStream = response.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}

poi横纵导出的更多相关文章

  1. Java中使用poi导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  2. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  3. java使用poi将html导出word,默认打开页面视图

    <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...

  4. POI导入和导出Excel总结

    POI导入和导出Excel总结   POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...

  5. apache poi根据模板导出excel

    需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...

  6. 转:POI操作Excel导出

    package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...

  7. 使用POI实现数据导出Excel表格

    package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...

  8. Java POI 两种导出方式

    这里面包含了模板导出方法和自定义模板进行导出 package jp.co.syspro.poo.action.hibikoyou; import java.io.ByteArrayOutputStre ...

  9. 一个poi操作实现导出功能的类

    public class ExportExcel<T> { public void exportExcel(Collection<T> dataset, OutputStrea ...

随机推荐

  1. Error: No EPCS layout data - looking for section [EPCS-C84018]

    /********************************************************************** * Error: No EPCS layout data ...

  2. Pyhon全栈之路----数据类型

    1.定义时不需要像C语言一样加 ' int ' , 'char ' 等,直接写即可,解释器会直接自动识别数据类型.例:  age = 22    (默认为数字类型)      name = 'Alex ...

  3. export 和import使用

    在JavaScript ES6中,export与export default均可用于导出常量.函数.文件.模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方 ...

  4. Codeforces1062C. Banh-mi(贪心+快速幂)

    题目链接:传送门 题目: C. Banh-mi time limit per test second memory limit per test megabytes input standard in ...

  5. /etc/profile ~/.bash_profile ~/.bashrc 等文件的执行过程 和 区别

    /etc/profile :系统的所有用户共享 ~/.bash_profile:仅针对当前用户有效 我的电脑只用于开发,因此全部配置/etc/profile 参考链接: https://blog.cs ...

  6. asp.net IE11 dopostback is null or undefined 为空或未定义

    个人认为这个问题一般是未按规范书写导致,但懒人嘛就有懒办法. 页面重构一般可以解决此问题,但是对于不便重写的情形,这里仍然有一个解决办法. 解决方法: 1.将文件ie11.browser拷贝到C:\W ...

  7. PythonStudy——机器语言 Machine Language

    编程语言 编程语言(programming language),是用来定义计算机程序的形式语言.它是一种被标准化的交流技巧,用来向计算机发出指令.一种计算机语言让程序员能够准确地定义计算机所需要使用的 ...

  8. What’s New In GRANDstack?

    转自:https://blog.grandstack.io/whats-new-in-grandstack-310c067fea4a There’s been a lot of activity in ...

  9. java_lambda表达式

    lambda表达式1    由来    概念        是通过策略模式来曲线实现的    lambda表达式2    语法详解    lambda表达式3    目标类型的概念    目标类型推断 ...

  10. 修改linux服务器的MySQL密码

    1.   首先用管理员权限登陆Linux: 2.   输入:vi  /etc/my.cnf  回车.然后按“i”键盘,在这个文件中的最后一行输入:skip-grant-tables   然后按 esc ...