package com.aa.bb.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class ExcelUtil {
public static File buildExcel(String reportname, String filename,
List headlist, List datalist) throws Exception {
File fileExcel = new File(filename);
try {
// 创建一个可写的工作本
WritableWorkbook workbook = Workbook.createWorkbook(fileExcel);
// 创建一个工作单
WritableSheet sheet = workbook.createSheet(reportname, 0);
// 创建文本样式
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
// 格式化文本头
WritableCellFormat headerFormat = new WritableCellFormat(headerFont);
// 创建文本样式
WritableFont dataFont = new WritableFont(WritableFont.ARIAL, 10,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
// 格式化文本
WritableCellFormat dataFormat = new WritableCellFormat(dataFont);
Label label = null;
// 填充工作单的单元格(文本头)
for (int i = 0; headlist != null && i < headlist.size(); i++) {
String head = (String) headlist.get(i);
label = new Label(i, 0, head, headerFormat);
sheet.addCell(label);
}
// 动态填充数据
for (int i = 0; datalist != null && i < datalist.size(); i++) {
List recordfield = (List) datalist.get(i);
for (int j = 0; j < recordfield.size(); j++) {
label = new Label(j, i + 1, (String) recordfield.get(j),dataFormat);
sheet.addCell(label);
}
}
workbook.write();
workbook.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return fileExcel;
}
public static void downLoadExcel(HttpServletResponse response,
File fileExcel, String filename) {
try {
// 往客户端输出的流
ServletOutputStream out = response.getOutputStream();
// 输入流
FileInputStream hFile = new FileInputStream(fileExcel);
// System.out.println("hFile="+hFile.available());
// 创建一个hFile大小的字节型数组
byte[] data = new byte[hFile.available()];
// 头信息的编码默认为ISO-8859-1,把文件名转成默认编码传递
filename = new String((filename + ".xls").getBytes(), "ISO-8859-1");
// 头信息
response.addHeader("Content-Disposition", "attachment; filename="
+ filename);
System.out.println("filename=" + filename);
// 头信息
response.addIntHeader("Content-Length", hFile.available());
// 读数据到数组
hFile.read(data);
// 记得要关闭输入流
hFile.close();
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
out.write(data);
out.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 删除文件
fileExcel.delete();
}
}
}
public void export() throws Exception{
Debug.println("开始导出Excel...");
//先从session中取,如果没有,则重新查询
List ls_query=(List)request.getSession().getAttribute("fluxqueryresult");
if(ls_query==null){
RealtimeParam rp=prepareQuery(); //参数准备
ls_query=this.queryFlux(rp);
}
List ls_data =new Vector(); //excel 的表身数据
Vector v_record=null;
RealtimeMap rm=null;
//重整数据
for(int i=0;i<ls_query.size();i++){
v_record=new Vector();
rm=(RealtimeMap)ls_query.get(i);
v_record.add(""+(i+1));
v_record.add(rm.getRealtime());
v_record.add(""+rm.getId());
v_record.add(rm.getAddupflux());
v_record.add(rm.getFluxa());
v_record.add(rm.getFlux());
v_record.add(rm.getInstalladdr());
ls_data.add(v_record);
}
Vector v_head=new Vector(); //excel 的表头
v_head.add("行号");
v_head.add("时间");
v_head.add("设备编号");
v_head.add("累计流量");
v_head.add("间隔流量");
v_head.add("瞬时流量");
v_head.add("安装地点");
Debug.println("excel....1");
File f=ExcelUtil.buildExcel("流量查询","report_"+request.getSession().getId(),v_head,ls_data);
Debug.println("excel....2");
ExcelUtil.downLoadExcel(response,f,"fname");
this.setTemplateName("temp.ftl");
}
分享到:
相关推荐
springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel ...
导出Excel功能,导出Excel功能,导出Excel功能,导出Excel功能
用于考核的系统,导出EXCEL导出EXCEL
功能介绍:TestLink用例默认只支持导出为XML,此工具支持把XML转换为Excel文件,可转一层目录的测试用例,也可转两层目录的测试用例集。 此工具为TkInter实现的可视化转换工具,可显示转换的每个用例名,统计每次...
C#导出图片到EXCEL,研究了好久,总算搞定了,贡献给大家。
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
导出EXCEL并下载,从请求开始到下载结束相关代码
c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#) winform
将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将simulink示波器数据导出到excel表格教程将...
excel导出
导出带图片Excel服务 使用VS2013开发 可作为适当的参考
Nodejs导出Excel带图片,Nodejs后台导出带图片Excel 本资源内有说明及使用安装等详细步骤,以及引入插件 由于nodejs导出Excel带图片的资源比较少,我也是找了许久才知道怎么写的,这里发布个收费的,望各位见谅!
导出Excel表格 /// 导出Excel /// 创建Excel并写入数据 /// List转化为DataTable /// 转换数据类型
C# .NET Excel转Xml文件流形式导出Excel,批量表格导出打印
主要介绍了Android开发实现的导出数据库到Excel表格功能,涉及Android数据库及Excel表格相关操作技巧,并附带完整源码供读者下载参考,需要的朋友可以参考下
防止GridView导出到excel中自动转成科学计数法
echarts图表导出到excel中的解决方法,做个备忘录,以防忘记
plsql导出数据到excel常用的三种方法,(1)直接导出;(2)转换导出方式;(3)导出后转换格式;
导出和导入excel导出和导入excel导出和导入excel导出和导入excel导出和导入excel导出和导入excel
解压开,双击bat,会弹出一个GUI的弹出框,选择要转的要操作的testcase文件,进行excel和xml互转操作。简单易操作。神器。