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");
}
分享到:
相关推荐
在测试过程中,有时我们需要将数据在不同的格式之间转换,例如从TestLink导出的XML文件转换为Excel,或者反过来,从Excel转换为XML再上传到TestLink。这个过程对于测试团队来说尤其重要,因为Excel通常更便于编辑和...
Delphi 高效率导出数据到 Excel Delphi 是一个功能强大的开发工具,可以用于开发各种类型的应用程序,而 Excel 是一个非常popular的电子表格软件,经常用于数据分析和处理。在实际开发中,我们经常需要将数据从 ...
在C#编程中,将图片导出到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据可视化场景下。本文将详细介绍如何使用C#实现这一功能,主要包括以下知识点: 1. **Excel Interop库**:微软提供了Excel Interop...
- **方法2**:先将数据导出为HTML格式,然后使用IE浏览器打开HTML文件,并选择【导出到Microsoft Excel】功能。这种方法同样能够解决乱码问题。 3. **另存为Excel**:完成上述步骤后,即可将CSV文件另存为Excel...
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
在JavaScript编程领域,导出Excel是一项常见的需求,特别是在Web应用中,用户可能需要将数据显示在Excel表格中以便进一步处理或存储。"js导出excel.zip"这个压缩包提供了一个解决方案,它结合了EasyUI和DataGrid组件...
在IT领域,导出Excel功能是一项非常常见的需求,特别是在数据分析、报表生成以及数据共享等场景中。Excel作为一款强大的电子表格软件,因其易用性、灵活性和强大的计算能力,成为了企业和个人处理数据的首选工具。...
用于考核的系统,导出EXCEL导出EXCEL
描述中提到了本文的主要内容,即使用Java POI将图片导出到Excel中,并提供了详细的示例代码,对大家的学习或者工作具有一定的参考学习价值。 标签解释 标签中提到了Java POI、Excel、Java等关键词,表明了本文的...
功能介绍:TestLink用例默认只支持导出为XML,此工具支持把XML转换为Excel文件,可转一层目录的测试用例,也可转两层目录的测试用例集。 此工具为TkInter实现的可视化转换工具,可显示转换的每个用例名,统计每次...
SheetJS提供了强大的API,允许我们在前端创建、修改和导出Excel文件。 以下是使用EasyUI和SheetJS实现数据导出的基本步骤: 1. 引入必要的资源:确保在HTML页面中引入EasyUI的CSS和JS文件,以及SheetJS的xlsx.full...
4. 为了将流直接导出,可以使用 `OutputStream`,将转换后的 PDF 直接写入流,供后续处理或下载。 在实际开发中,你可能还需要处理一些额外的问题,如单元格样式、公式计算、图表插入等。`easypoi` 提供了丰富的 ...
echarts图表导出到excel中的解决方法,做个备忘录,以防忘记
5. 执行导出:调用LODOP的相应方法,执行数据到Excel的转换,并通常会提供一个下载对话框供用户保存文件。 "exe"标签可能指的是LODOP服务端程序的可执行文件,它在服务器端运行,处理来自浏览器的打印请求。用户在...
"Android开发实现的导出数据库到Excel表格功能" 知识点一:Android数据库操作 ...本文介绍了Android开发实现的导出数据库到Excel表格功能,涉及Android数据库及Excel表格相关操作技巧,并附带完整源码供读者下载参考。
你可以通过NuGet包管理器安装NPOI,或者手动下载并添加到项目中。 2. 创建工作簿对象:使用HSSFWorkbook或XSSFWorkbook类创建一个新的Excel工作簿实例。这将是Excel文件的基础容器。 3. 添加工作表:使用工作簿...
当你需要从网页数据导出Excel时,Easy POI提供了一种方便的方式。首先,你需要将HTML内容转换为表格数据结构,例如使用Jsoup解析HTML获取表格元素。然后,利用Easy POI的API,创建一个Excel工作簿对象,将HTML表格...
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
"从DBGrid导出到Excel表格 4种方法" DBGrid 是一個常見的数据-grid 控件,经常用於显示数据库中的数据。不过,DBGrid 的数据如何导出到 Excel 表格中,這是一个大家常见的问题。其实,DBGrid 的数据可以通过多种...
首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上安装了Office。另一种更灵活且无需依赖Office的方法是使用...