jxl服务器端创建excel 并导入到客户端

来源:互联网 发布:淘宝c店没有授权书 编辑:程序博客网 时间:2024/05/28 06:08

下载jxl.jar 并导入项目中(注:jxl方法写入excel要快于poi,而读慢于poi)

1.利用jxl编写创建excel方法,如下:



import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;


import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.CellFormat;
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 CreateExcel {
public void createExcel(String excelPath,List<String> listViewHeader,List<List<String>> list) throws IOException, RowsExceededException, WriteException{
//header
   WritableWorkbook workbook ;
WorkbookSettings ws = new WorkbookSettings();
   ws.setLocale(new Locale("en", "EN"));
   //Workbook.createWorkbook(file, ws)
   workbook = Workbook.createWorkbook(new File("data.xls"), ws);
   WritableSheet s1 = workbook.createSheet("自定义查询结果", 0);
   
   WritableFont tenpoint = new WritableFont(WritableFont.TIMES,12,WritableFont.BOLD, false);
   CellFormat cf  = new WritableCellFormat(tenpoint);
   Label lr;
   for(int i=0;i<listViewHeader.size();i++){
    s1.setColumnView(i, listViewHeader.get(i).toString().length()*4);
    lr = new Label(i,0,listViewHeader.get(i).toString());
    lr.setCellFormat(cf);
    s1.addCell(lr);
   }
   for(int i=0;i<list.size();i++){
    List listCont = (List<String>)list.get(i);
    for(int j=0;j<listCont.size();j++){
    lr = new Label(j,i+1,listCont.get(j).toString());
    s1.addCell(lr);
    }
   }
   workbook.write();
  
   workbook.close();
 
}
}


2。Action 方法:

public ActionForward cExcel(ActionMapping mapping,ActionForm form,
 HttpServletRequest request,HttpServletResponse response) throws Exception{
  
 System.out.println("开始创建一个");
//    CreateExcel cexl = new CreateExcel();
//    cexl.createExcel();
    CreateExcel exl = new CreateExcel();
    List<String> listViewHeader = new ArrayList<String>();
    listViewHeader.add("井id");
    listViewHeader.add("油压");
    listViewHeader.add("套压");
    listViewHeader.add("井水温度");
    listViewHeader.add("油嘴温度");
    
    List<List<String>> contList = new ArrayList<List<String>>();
    for(int i=0;i<6;i++){
    List<String> list = new ArrayList<String>();
    list.add("JD01254");
    list.add("55PM");
    list.add("66PM");
    list.add("102°");
    list.add("88°");
    contList.add(list);
    }
    @SuppressWarnings("unused")
ServletOutputStream out = response.getOutputStream();
    exl.createExcel(request.getContextPath(), listViewHeader, contList);
    System.out.println("创建成功");
 return mapping.findForward("download");
  }


3、对应的jsp页面方法(也可以直接写到action方法中)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.io.File"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.IOException"%>
<%@page import="java.util.List"%>
<%@page import="javax.servlet.ServletOutputStream"%>
<%@page import="javax.servlet.http.HttpServletResponse"%><%
 try {
   // 往客户端输出的流
 
 // ServletOutputStream out = response.getOutputStream();
  ServletOutputStream outmm = response.getOutputStream();
   // 输入流
   FileInputStream hFile = new FileInputStream("data.xls");
   // 创建一个hFile大小的字节型数组
   byte[] data = new byte[hFile.available()];
   // 头信息的编码默认为ISO-8859-1,把文件名转成默认编码传递
   String filename = new String(("data.xls").getBytes(), "utf-8");
   // 头信息
   response.addHeader("Content-Disposition", "attachment; filename="
     + filename);
   // 头信息
   response.addIntHeader("Content-Length", hFile.available());
   // 读数据到数组
   hFile.read(data);
   // 记得要关闭输入流
   hFile.close();
   response.setContentType("application/vnd.ms-excel;charset=UTF-8");
   outmm.write(data);
   outmm.close();
   out.clear();
  } catch (IOException e) {
  } finally {
   // 删除文件
 
  }
%>



原创粉丝点击