项目笔记:导出Excel功能设置导出数据样式
/**
* 导出-新导出
*
* @return
* @throws IOException
*/
@OperateLogAnn(type = OperateEnum.EXPORT, hibInter = HibInterEnum.ONLOAD)
public String createXML() throws IOException {
try {
this.msg = RESULT_FAIL; area = areaService.queryAreaByCode(this.getRequest().getParameter("areaCode"));
ipRange = this.getRequest().getParameter("ipRange");
// 查询条件
Map<String, String> searchMap = new HashMap<String, String>();
if (StringUtils.isNotBlank(ip)) {
searchMap.put("ip", ip);
}
if (StringUtils.isNotBlank(mac)) {
searchMap.put("mac", mac);
}
if (StringUtils.isNotBlank(version)) {
searchMap.put("version", version);
}
if (StringUtils.isNotBlank(installStatus)) {
searchMap.put("installStatus", installStatus);
}
if (StringUtils.isNotBlank(startTime)) {
searchMap.put("startTime", startTime);
}
if (StringUtils.isNotBlank(endTime)) {
searchMap.put("endTime", endTime);
} List<TerminalInfo> terminalInfoTems = terminalInfoService.terminalL3List(String.valueOf(area.getId()), ipRange, searchMap); String logPath = this.getSession(false).getServletContext().getRealPath(SystemStatics.PATH_LOG_XML);
File xmlFile = LogXMLUtil.createExcel("terminalInfo", 5, terminalInfoTems, logPath);
// 为下载 做 准备
ActionContext.getContext().put("fileName", xmlFile.getName());
ActionContext.getContext().put("filePath", xmlFile.getPath());
this.msg = RESULT_SUCCESS;
} catch (Exception e) {
log.error("导出日志出错", e);
}
return "downLoadUI";
}
引入这些包用于设置样式的
package com.vrv.paw.utils.export; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.List; import jxl.Workbook;
import jxl.format.Colour;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont; import org.dom4j.Document;
import org.dom4j.Element; import com.vrv.paw.domain.TerminalInfo;
import com.vrv.paw.utils.DateTypeConverterUtil;
import com.vrv.paw.utils.ReflectUtil;
import com.vrv.paw.utils.XMLUtil;
新写的导出方法
@SuppressWarnings("unchecked")
public static File createExcel(String rootElement ,int col,List<TerminalInfo> listObjects,String path ) throws IOException{
//动态获取Excel标题
Document document = XMLUtil.getDocument( path+"/"+"reportForm.xml");
Element domain = document.getRootElement();
Element log = domain.element( rootElement );
Element title = log.element("title");
String fileName = title.attributeValue("name");
fileName = fileName+"("+DateTypeConverterUtil.converterUtil2String(new Date(), "yyyy-MM-dd")+")";
List<Element> columns = log.element("head").elements("column");
String filePath = path+"/"+fileName+".xls";
//新建Excel文件
File excelFile=new File(filePath);
if(excelFile.exists()){
excelFile.delete();
}
excelFile.createNewFile();
//用JXL向新建的文件中添加内容
jxl.write.WritableSheet ws = null;
jxl.write.WritableWorkbook wwb = null;
OutputStream outf = new FileOutputStream(excelFile);
try {
wwb = Workbook.createWorkbook(outf);
ws = wwb.createSheet(fileName, );
//表头样式
WritableFont headFont = new WritableFont(WritableFont.TIMES,,WritableFont.BOLD);
WritableFont titleFont= new WritableFont(WritableFont.TIMES,,WritableFont.BOLD);
WritableFont dataFont = new WritableFont(WritableFont.TIMES,,WritableFont.NO_BOLD);
WritableCellFormat writHeadFont=new WritableCellFormat(headFont);
WritableCellFormat writTitleFont=new WritableCellFormat(titleFont);
WritableCellFormat writDataFont= null;//new WritableCellFormat(dataFont);
//把水平对齐方式指定为居中
writHeadFont.setAlignment(jxl.format.Alignment.CENTRE);
writTitleFont.setAlignment(jxl.format.Alignment.CENTRE);
//设置背景颜色
writHeadFont.setBackground(Colour.GOLD);
writTitleFont.setBackground(Colour.VERY_LIGHT_YELLOW);
//把垂直对齐方式指定为居中
writHeadFont.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
writTitleFont.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
ws.mergeCells(, , col, );
ws.addCell(new Label(, , fileName,writHeadFont));
String[] fileds = new String[columns.size()];
for (int i = ; i < columns.size(); i++) {
Element column = columns.get(i);
fileds[i]=column.attributeValue("attribute") ;
ws.addCell(new Label(i, , column.getTextTrim(),writTitleFont));
//设置单元格宽度
ws.setColumnView(i, );
}
TerminalInfo obj = null ;
for(int k = ; k < listObjects.size(); k++){
obj = listObjects.get(k);
obj.setDevOnlyId(obj.getTerOnlyId());
writDataFont=new WritableCellFormat(dataFont);
writDataFont.setAlignment(jxl.format.Alignment.CENTRE);
writDataFont.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
if (k%==) {
writDataFont.setBackground(Colour.ICE_BLUE);
}
for (int i = ; i < fileds.length; i++) {
Object field = ReflectUtil.doField( obj, fileds[i] ) ;
if("".equals(field.toString())){
field = "安装";
}
if("".equals(field.toString())){
field = "卸载";
}
if("".equals(field.toString())){
field = "更新";
}
if("".equals(field.toString())){
field = "上报心跳";
}
if("".equals(field.toString())){
field = "关机";
}
ws.addCell(new Label( i ,k+, field == null ? "" : field.toString(),writDataFont));
}
}
wwb.write();
wwb.close();
} catch (Exception e) {
e.printStackTrace();
}
return excelFile ;
}

项目笔记:导出Excel功能设置导出数据样式的更多相关文章
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- 项目笔记:导出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. 详细 ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- JAVA实现导出excel功能,封装通用导出工具类
引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- DataTable 更改在有数据列的类型方法+DataTable 导出excel功能
/// <summary> /// 导出功能 /// </summary> /// <param name="sender"></para ...
随机推荐
- 【BestCoder #44】
因为这场比赛,我愉快地逃掉了晚自修. T1一开始各种SillyB,忘了40%的最低限制... T2各种想吐槽... 明明OJ警告说%lld是不行的我就换成%I64D(上面写这样的)... 结果各种WA ...
- [bzoj4372] 烁烁的游戏 [动态点分治+线段树+容斥原理]
题面 传送门 思路 观察一下题目,要求的是修改"距离点$u$的距离一定的点权值",那这个就不能用传统的dfs序类算法+线段树维护,因为涉及到向父亲回溯的问题 看到和树上距离相关的东 ...
- HDU 3389 Game (阶梯博弈)
Game Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status D ...
- 百度经验:Win10查看已存储WiFi密码的两种方法
方法一:网络和共享中心查询 具体步骤可以参考:Win10查看WIFI密码的方法 方法二:命令提示符查询 1.右键单击开始按钮,选择“命令提示符(管理员)” 2.输入如下命令(下图①号命令): nets ...
- MFC中GetParent()的作用(转)
原文转自 https://bbs.csdn.net/topics/390540690 1.假如创建一个非模态的窗口,在如下两种做法里任选一种.(1) chatting.m_lpDlg = new CC ...
- MFC中CTime获取日期时间的方法
MFC中CTime类的功能非常强大,可以获取年.月.日.小时.分钟.秒.星期等等,最最重要的是可根据需要去格式化.下面是具体的使用方式: ① 定义一个CTime类对象 CTime time; ② 得到 ...
- UVA 763 Fibinary Numbers
题意讲某个二进制按照规则每一位对应斐波那契数生成新的数字,然后2个数字求和.再求由该规则生成的二进制串.并且要求尽量用更大项的fib数(题目提示不能由连续的1就是2个连续的1(11)不如100更优) ...
- undefined reference to XXX 问题原因
原文地址:http://blog.csdn.net/cserchen/article/details/5503556 Linux下编译程序时,经常会遇到“undefined reference to ...
- python--jinja2
from jinja2 import Template # 创建一个Template模板去渲染它 s = "my name is {{mashiro}}" t = Template ...
- linux的文件权限分析
windows中,文件的类型是根据后缀名来确定的,但是linux则是根据标志来确定的,查看一个文件的权限的命令是 ls -l #查看文件的权限 文件的权限结构如图: ①第一部分:10个字符(第1位表示 ...