项目笔记:导出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 ...
随机推荐
- DHTMLX 表格组件(dhtmlxGrid )使用介绍
String sql = select {s.*} from t_student s where s.age22; SQLQuery slqQuery = session.createSQLQuery ...
- java自定义类型 比较排序 Comparator接口
String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:0 ...
- hdu 6114 百度之星复赛B T1
Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...
- codechef AUG17 T1 Chef and Rainbow Array
Chef and Rainbow Array Problem Code: RAINBOWA Chef likes all arrays equally. But he likes some array ...
- Hibernate中的延迟加载及fetch
Hibernate中的延迟加载 1.类级别的查询策略: lazy : true(默认值) false(立即加载) 2.多对一关联的查询策略: lazy: proxy(默认值) no-proxy ...
- ZOJ 3822 Domination (三维概率DP)
E - Domination Time Limit:8000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submi ...
- TOTP:Time-based One-time Password Algorithm
转自: http://www.cnblogs.com/dyingbleed/archive/2012/12/05/2803782.html http://en.wikipedia.org/wiki/T ...
- C# split字符串
string strSourse = "ab|||cdef"; string[] arr = strSource.Split(new string[]{"|||" ...
- Centos7下zabbix部署(四)定义报警媒介-邮件
1.安装发送邮件工具mailx [root@zabbix-server ~]# yum install mailx -y 2.自定义使用163邮箱为默认发件人(避免被当作垃圾邮件) set from= ...
- 浅谈正则表达式-PHP为例
第一次比较系统的学习正则表达式,本篇文章以PHP语言为例来学习. 基本概念 正则表达式=普通字符(如a-z)+分隔符(正斜线(/).hash符号(#) 以及取反符号(~))+特殊字符(称为元字符) 两 ...