`
564615061
  • 浏览: 12513 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

导出并下载 excel 转

    博客分类:
  • Java
阅读更多

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

    在测试过程中,有时我们需要将数据在不同的格式之间转换,例如从TestLink导出的XML文件转换为Excel,或者反过来,从Excel转换为XML再上传到TestLink。这个过程对于测试团队来说尤其重要,因为Excel通常更便于编辑和...

    delphi高效率导出数据到excel

    Delphi 高效率导出数据到 Excel Delphi 是一个功能强大的开发工具,可以用于开发各种类型的应用程序,而 Excel 是一个非常popular的电子表格软件,经常用于数据分析和处理。在实际开发中,我们经常需要将数据从 ...

    C#导出图片到EXCEL

    在C#编程中,将图片导出到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据可视化场景下。本文将详细介绍如何使用C#实现这一功能,主要包括以下知识点: 1. **Excel Interop库**:微软提供了Excel Interop...

    plsql导出数据到excel的三种方法

    - **方法2**:先将数据导出为HTML格式,然后使用IE浏览器打开HTML文件,并选择【导出到Microsoft Excel】功能。这种方法同样能够解决乱码问题。 3. **另存为Excel**:完成上述步骤后,即可将CSV文件另存为Excel...

    springboot+poi导出指定格式Excel模板

    springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...

    js导出excel.zip

    在JavaScript编程领域,导出Excel是一项常见的需求,特别是在Web应用中,用户可能需要将数据显示在Excel表格中以便进一步处理或存储。"js导出excel.zip"这个压缩包提供了一个解决方案,它结合了EasyUI和DataGrid组件...

    导出Excel功能,导出Excel功能,导出Excel功能

    在IT领域,导出Excel功能是一项非常常见的需求,特别是在数据分析、报表生成以及数据共享等场景中。Excel作为一款强大的电子表格软件,因其易用性、灵活性和强大的计算能力,成为了企业和个人处理数据的首选工具。...

    导出EXCEL文件导出EXCEL

    用于考核的系统,导出EXCEL导出EXCEL

    java poi导出图片到excel示例代码

    描述中提到了本文的主要内容,即使用Java POI将图片导出到Excel中,并提供了详细的示例代码,对大家的学习或者工作具有一定的参考学习价值。 标签解释 标签中提到了Java POI、Excel、Java等关键词,表明了本文的...

    TestLink导出XML用例转换为Excel工具

    功能介绍:TestLink用例默认只支持导出为XML,此工具支持把XML转换为Excel文件,可转一层目录的测试用例,也可转两层目录的测试用例集。 此工具为TkInter实现的可视化转换工具,可显示转换的每个用例名,统计每次...

    easyui+数据导出为Excel

    SheetJS提供了强大的API,允许我们在前端创建、修改和导出Excel文件。 以下是使用EasyUI和SheetJS实现数据导出的基本步骤: 1. 引入必要的资源:确保在HTML页面中引入EasyUI的CSS和JS文件,以及SheetJS的xlsx.full...

    导出 Excel 以及转化为 PDF 导出

    4. 为了将流直接导出,可以使用 `OutputStream`,将转换后的 PDF 直接写入流,供后续处理或下载。 在实际开发中,你可能还需要处理一些额外的问题,如单元格样式、公式计算、图表插入等。`easypoi` 提供了丰富的 ...

    echarts图表导出到excel

    echarts图表导出到excel中的解决方法,做个备忘录,以防忘记

    lodop导出ExcelDemo

    5. 执行导出:调用LODOP的相应方法,执行数据到Excel的转换,并通常会提供一个下载对话框供用户保存文件。 "exe"标签可能指的是LODOP服务端程序的可执行文件,它在服务器端运行,处理来自浏览器的打印请求。用户在...

    Android开发实现的导出数据库到Excel表格功能【附源码下载】

    "Android开发实现的导出数据库到Excel表格功能" 知识点一:Android数据库操作 ...本文介绍了Android开发实现的导出数据库到Excel表格功能,涉及Android数据库及Excel表格相关操作技巧,并附带完整源码供读者下载参考。

    C# NPOI 导出Excel

    你可以通过NuGet包管理器安装NPOI,或者手动下载并添加到项目中。 2. 创建工作簿对象:使用HSSFWorkbook或XSSFWorkbook类创建一个新的Excel工作簿实例。这将是Excel文件的基础容器。 3. 添加工作表:使用工作簿...

    easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

    当你需要从网页数据导出Excel时,Easy POI提供了一种方便的方式。首先,你需要将HTML内容转换为表格数据结构,例如使用Jsoup解析HTML获取表格元素。然后,利用Easy POI的API,创建一个Excel工作簿对象,将HTML表格...

    c# 导出到Excel (C# winform)

    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导出到Excel表格 4种方法" DBGrid 是一個常見的数据-grid 控件,经常用於显示数据库中的数据。不过,DBGrid 的数据如何导出到 Excel 表格中,這是一个大家常见的问题。其实,DBGrid 的数据可以通过多种...

    C#导出Excel 导出PDF

    首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上安装了Office。另一种更灵活且无需依赖Office的方法是使用...

Global site tag (gtag.js) - Google Analytics