项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据:
/*导出EXCEL*/
public void createExcel() {
log.info("导出Excel功能已经启动-BEGIN");
JxlUtil jsl = new JxlUtil();
List<Device> dataList =new ArrayList<Device>();
List<DeviceExport> list = new ArrayList<DeviceExport>();
// 构建路径
String downLoadPath = "/WEB-INF/download/asset/";
String rootPath = getServletContext().getRealPath(downLoadPath); String fileName = "";
File file=new File(rootPath); try {
if(!(file.exists()||file.isDirectory())){
file.mkdirs();
} if (null != getRequest().getParameter("ids")) {
String ids[] = getRequest().getParameter("ids").split(",");
for (int i = ; i < ids.length; i++) {
if(null!=ids[i]){
device = deviceService.queryById(ids[i].trim());
dataList.add(device);
}
}
}else{
dataList = deviceService.queryForExcel();
} if(dataList!=null){
for (Device device : dataList) {
DeviceExport deviceExport= new DeviceExport();
if(null!=device.getId()){
deviceExport.setId(device.getId());
}
if(null!=device.getIp()){
deviceExport.setIp(device.getIp());
}
if(null!=device.getMac()){
deviceExport.setMac(device.getMac());
}
if(null!=device.getName()){
deviceExport.setName(device.getName());
}
if(null!=device.getOrganization()){
Organization organization=device.getOrganization();
String Aname =organization.getName();
String name= getAname(organization, Aname);
deviceExport.setOrganizationName(name);
}
if(null!=device.getRegState()){
deviceExport.setRegState(device.getRegState());
}
if(null!=device.getUser()){
deviceExport.setUserName(device.getUser().getName());
}
if(null!=device.getProtectState()){
deviceExport.setProtectState(device.getProtectState());
}
if(null!=device.getIsOpened()){
deviceExport.setIsOpened(device.getIsOpened());
}
String osName = MessageUtils.getMessage(device.getOs().getName());
deviceExport.setOsName(osName);
String deviceType = MessageUtils.getMessage(device.getDeviceType().getName());
deviceExport.setDeviceTypeName(deviceType);
list.add(deviceExport);
}
} String interBase = "sys.column.name.device";
//String inter_value_key = "#isOpened#roamState#protectState#";
String inter_value_key = "#isOpened#protectState#regState#";
String[] inter_value_ary = { "isOpened.0", "isOpened.1", "protectState.0", "protectState.1","regState.0","regState.1"};
//导出不显示漫游状态
//String[] inter_value_ary = { "isOpened.0", "isOpened.1","roamState.0", "roamState.1","protectState.0", "protectState.1"}; fileName = jsl.getInter(interBase.replace("column", "table"))
+ new Date().getTime();
String targetfile = rootPath + System.getProperty("file.separator")
+ fileName + ".xls"; //分sheet页处理
int total = dataList.size();//总数
int max = ;//每sheet页允许最大数
int avg = total / max;//sheet页个数 // 创建可写入的Excel工作薄
WritableWorkbook wwb;
wwb = Workbook.createWorkbook(new File(targetfile)); for(int i=;i<avg+;i++){
// 创建Excel工作表
WritableSheet ws = wwb.createSheet("已注册设备"+(i+), i);
int num = i * max;
int index = ;
List<DeviceExport> exportList = new ArrayList<DeviceExport>();
for(int m = num; m < total; m++){//m即为每个sheet页应该开始的数
if(index == max){//判断 index = max 的时候跳出里层的for循环
break;
}
DeviceExport deviceExport=list.get(m);
exportList.add(deviceExport);//从总的list数据里面取出该处于哪个sheet页的数据,然后加进exportList,exportList即为当前sheet页应该有的数据
index++;
}
// 获取需要内容国际化的字段
jsl.creatDeviceExcel(ws, exportList, interBase, inter_value_key,inter_value_ary);
} // 写入Exel工作表
wwb.write();
// 关闭Excel工作薄对象
wwb.close(); getResponse().setContentType(getServletContext().getMimeType(fileName));
getResponse().setHeader("Content-Disposition", "attachment;fileName="+new String(fileName.getBytes("gb2312"), "ISO8859-1")+".xls");
String fullFileName = getServletContext().getRealPath(downLoadPath + fileName+ ".xls");
InputStream in = new FileInputStream(fullFileName);
OutputStream out = getResponse().getOutputStream();
int b;
while((b=in.read())!= -){
out.write(b);
}
in.close();
out.close();
/*ServletActionContext.getRequest().setAttribute("downLoadPath",
downLoadPath);
ServletActionContext.getRequest().setAttribute("fileName",
fileName + ".xls");*/
this.msg = RESULT_SUCCESS;
log.info("导出EXCEL提示信息为:"+this.msg);
} catch (Exception e) {
log.error("导出EXCEL失败:" + e.getMessage());
}
log.info("导出Excel功能已经启动-END");
/*return "downLoadUI";*/
}
导出效果如下:
项目笔记:导出Excel功能分sheet页插入数据的更多相关文章
- 公司项目笔记-导出excel
一.asp.net中导出Excel的方法: 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览 ...
- 项目笔记:导出Excel功能
1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...
- vue项目导出EXCEL功能
因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- Atitit.导出excel功能的设计 与解决方案
Atitit.导出excel功能的设计 与解决方案 1.1. 项目起源于背景1 1.2. Js jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细 ...
- CRM 报表导出excel时指定sheet名
如图所示,设置PageName即可: 这样导出excel时,sheet的名就有了:
- 多张报表导出到一个多sheet页excel
业务需求: 通过勾选不同的报表名称,然后直接执行导出excel.并且这些报表需要统一导入到一个excel的多个sheet页中,并且对某些报表可能需要增加一些类似'已审核'之类的图片(展现时并没有 ...
- 【angularjs】pc端使用angular搭建项目,实现导出excel功能
此为简单demo. <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset= ...
- spring mvc项目中导出excel表格简单实现
查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...
随机推荐
- Codeforces Round #364 (Div. 1) 700B(树)
题目大意 在n颗结点的树上有2k个需要配对的点,把他们两两配对,使得路程和最大并输出 选取一个点v lv表示v与父亲的边 那么考虑lv被经过的次数,对于一个最大的情况,lv应该为min(sv, 2*k ...
- BZOJ 2458: [BeiJing2011]最小三角形 | 平面分治
题目: 给出若干个点 求三个点构成的周长最小的三角形的周长(我们认为共线的三点也算三角形) 题解: 可以参考平面最近点对的做法 只不过合并的时候改成枚举三个点更新周长最小值,其他的和最近点对大同小异 ...
- Sublime Text 2注册码
出处不详. ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EE ...
- jquery对中文进行base64加密,后台用java进行base64解密
项目中遇到将中文从前台传到后台过程中,出现乱码,一番尝试之后,均是乱码,然后尝试在js代码中先进行base64加密,然后在Java中再进行解密,完美的解决了乱码问题,步骤如下 一,html页面引入jQ ...
- HDU 4649 Professor Tian (概率DP)
Professor Tian Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- Optional int parameter 'rows' is not present but cannot be translated into a null value due to being declared as a primitive type.
我的spring mvc 代码: @Controller @RequestMapping("/product") public class Fancy { @RequestMapp ...
- 解决:java.lang.ArrayIndexOutOfBoundsException: 160 at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:868)
今天线上遇到一个问题,从hbase里读取出来的数据在转换json后输出时出现异常: java.lang.ArrayIndexOutOfBoundsException: 160 at com.aliba ...
- SQL Server中JOIN的用法
JOIN 分为:内连接(INNER JOIN).外连接(OUTER JOIN).其中,外连接分为:左外连接(LEFT OUTER JOIN).右外连接(RIGHT OUTER JOIN).全外连接(F ...
- 【计算机网络】HTTP协议详解
详见:http://blog.csdn.net/gueter/article/details/1524447 不让转载,但写得很好
- 第四步:查看StandardAnalyzer的分词效果并添加停用词
LUCENE的创建索引有好多种分词方式,这里我们用的StandardAnalyzer分词 package cn.lucene; import java.io.IOException; import o ...