首先需要在web项目中导入jxl.jar 包

//action中代码

public String downloadReport(){
        String path = System.getProperty("java.io.tmpdir") + "\\xlsx"+ (new java.util.Date().getTime());

    List<User> users=new ArrayList<User>();//查询结果集
            users.add(new User(1, "屌丝1", 18, "男"));
            users.add(new User(2, "妹子2", 19, "女"));
            users.add(new User(3, "屌丝3", 20, "男"));
            users.add(new User(4, "妹子4", 21, "女"));
            users.add(new User(5, "屌丝5", 22, "男"));

     try {
         createExcel(path,List<User> users);//方法代码在下面
        //下载文件
        response().setContentType("application/x-msdownload;charset=UTF-8"); // 设置响应类型为下载
        response().setCharacterEncoding("UTF-8");//页面乱码问题
        String docName = java.net.URLEncoder.encode("report_case.xls", "UTF-8");//文件名称设置
        response().setHeader("Content-Disposition", "attachment; filename="+ new String(docName.getBytes("UTF-8"), "UTF-8"));
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(path));
        byte[] buf = new byte[1024];
        int len = 0;
        OutputStream out = response().getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);//把下载的文档写入本地电脑中去

  } catch (IOException e) {
        e.printStackTrace();
     }finally{

  out.close();
        br.close();

  }

  return null;

}

//下载调用方法
       
    /**
     * 设置表格标题和风格
     * @param path
     * @param users
     */
    public static void createExcel(String path,List<User> users){
        
        try {
            //创建工作薄
            WritableWorkbook workbook = Workbook.createWorkbook(new File(path));
            //创建工作表
            WritableSheet sheet=workbook.createSheet("测试表格", 0);
            //置页眉、页脚
            sheet.setHeader("页眉", "", "第   &P   页,共   &N   页"); // 设置页眉
            sheet.setFooter("", "", "&D   &T"); // 设置页脚
            //设置第几列的的列宽
            sheet.setColumnView(0, 20);
            sheet.setColumnView(1, 20);
            sheet.setColumnView(2, 20);
            sheet.setColumnView(3, 20);
            //指定几种单元格的字体样式
            WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
            WritableFont BoldFont12 = new WritableFont(WritableFont.ARIAL, 12,WritableFont.BOLD);//加粗12号字体
            WritableFont BoldFont20 = new WritableFont(WritableFont.ARIAL, 20,WritableFont.BOLD);//加粗18号字体
            
            //用于台头
            WritableCellFormat wcf_head=new WritableCellFormat(BoldFont20);
            wcf_head.setBorder(Border.ALL, BorderLineStyle.THIN);//线条
            wcf_head.setVerticalAlignment(VerticalAlignment.CENTRE);//垂直对齐
            wcf_head.setAlignment(Alignment.CENTRE);//水平对齐
            wcf_head.setWrap(false);//是否换行
            
            // 用于标题
            WritableCellFormat wcf_title = new WritableCellFormat(BoldFont12);
            wcf_title.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
            wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
            wcf_title.setAlignment(Alignment.CENTRE); // 水平对齐
            wcf_title.setWrap(false); // 是否换行
            
            // 用于正文
            WritableCellFormat wcf_text = new WritableCellFormat(NormalFont);
            wcf_text.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
            wcf_text.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
            wcf_text.setAlignment(Alignment.CENTRE); // 水平对齐
            wcf_text.setWrap(false); // 是否换行
            
            
            // 用于跨行
            WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);
            wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
            wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐
            wcf_merge.setAlignment(Alignment.LEFT);
            wcf_merge.setWrap(true); // 是否换行
            
            
            sheet.setRowView(0, 800);//设置行高
            sheet.setRowView(1, 500);
            sheet.addCell(new Label(0, 0, "保险信息", wcf_head));
            sheet.mergeCells(0,0,4,0);//合并第一行的第1列到第一行的第4列
            sheet.addCell(new Label(0, 1, "编号", wcf_title));
            sheet.addCell(new Label(1, 1, "姓名", wcf_title));
            sheet.addCell(new Label(2, 1, "年龄",wcf_title));
            sheet.addCell(new Label(3, 1, "性别", wcf_title));
            
            //把上面缓存中内容写到文件中去  2表示从第几行开始标题除外
            addCellFreezeOrder(2,users,sheet,wcf_text);
            
            workbook.write();
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

/**
     * 把缓存中的数据写到文件当中去
     * @param i
     * @param users
     * @param sheet
     * @param wcf_text
     */
    private static void addCellFreezeOrder(int i, List<User> users,
            WritableSheet sheet, WritableCellFormat wcf_text) {
        
        WritableFont wcf_font=(WritableFont) wcf_text.getFont();//用于正文、
        //设置文字格式类型按照文本格式输出
        WritableCellFormat wcf_numberformat=new WritableCellFormat(wcf_font,NumberFormats.TEXT);
        try {
            wcf_numberformat.setBorder(Border.ALL, BorderLineStyle.THIN);
            wcf_numberformat.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐
            wcf_numberformat.setAlignment(Alignment.LEFT); // 水平对齐
            wcf_numberformat.setWrap(false); // 是否换行
            
            for(User s:users){
                  sheet.addCell(new Label(0,i,s.getSequen()+"",wcf_text));
                  sheet.addCell(new Label(1,i,s.getName(),wcf_text));
                  sheet.addCell(new Label(2,i,s.getAge()+"",wcf_text));
                  sheet.addCell(new Label(3,i,s.getSex(),wcf_text));
                  i++;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
       
}

//实体类
class User{
    private int sequen;
    private String name;
    private int age;
    private String sex;
    public User(int sequen, String name, int age, String sex) {
        super();
        this.sequen = sequen;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public int getSequen() {
        return sequen;
    }
    public void setSequen(int sequen) {
        this.sequen = sequen;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
}

JAVA创建并写入内容到xlsx文件的更多相关文章

  1. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  2. Java读取、写入、处理Excel文件中的数据(转载)

    原文链接 在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Ex ...

  3. 二、点击导出按钮创建excle写入内容后下载功能实现

    /*涉及的jar包1)biframework.jar用于实现分页功能2)poi-3.7-20101029.jar:读取.创建.修改excle.word.ppt的Java APIApache POI是创 ...

  4. python从命令窗口启动脚本 创建并写入内容到文件示例

    写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...

  5. java写入内容到本地文件 -读取文件内容

    /** 日志记录 * @author sys * @param content 要写入的类容 * @param path 目标路径 c:/log/ * @param filename 文件名 log. ...

  6. Java创建、重命名、删除文件和文件夹(转)

    Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...

  7. java使用poi(XSSFWorkbook)读取excel(.xlsx)文件

    经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定.其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx这里介绍的使用poi方式(XSSF ...

  8. java 注解方式 写入数据到Excel文件中

    之前有写过一点关于java实现写Excel文件的方法,但是现在看来,那种方式用起来不是太舒服,还很麻烦.所以最近又参考其他,就写了一个新版,用起来不要太爽. 代码不需要解释,惯例直接贴下来: publ ...

  9. 关于java中创建文件,并且写入内容

    以下内容完全为本人原创,如若转载,请注明出自:http://www.cnblogs.com/XiOrang/ 前两天在项目中因为要通过http请求获取一个比较大的json数据(300KB左右)并且保存 ...

随机推荐

  1. loj 1316(spfa预处理+状压dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27024 题意:求0-(n-1)的经过最多的标记的点的最短路. 思路 ...

  2. java学习笔记(3):网络编程

    基本原理 客户端要发起通信,首先得知道运行服务器程序主机的IP地址,然后由网络的基础结构利用目标地址,将发送的信息传递到正确的主机上.地址可以是数字型(IPv4或者IPv6),也可以是字符串(必须先被 ...

  3. 处理滚动条置底的JS代码

    function scrollTopToBottom(){ var seffheight =$(".consultingRecords_view").height(); $(&qu ...

  4. Java中引用类 strong reference .SoftReference 、 WeakReference 和 PhantomReference的区别

      当在 Java 2 平台中首次引入 java.lang.ref 包,其中包含 SoftReference . WeakReference 和 PhantomReference 三个引用类,引用类的 ...

  5. Understanding Kafka Consumer Groups and Consumer Lag

    In this post, we will dive into the consumer side of this application ecosystem, which means looking ...

  6. python特殊函数 __len__(self):

    __len__ 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数. 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数. 例如,我们 ...

  7. 廖雪峰js教程笔记5 Arrow Function(箭头函数)

    为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 箭头函数 阅读: ...

  8. Class.forName()的作用与使用总结

    1.Class类简介: Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类 ...

  9. 【虚拟机】苹果虚拟机mac10.11.6+Xcode8.1

    [虚拟机]苹果虚拟机mac10.11.6+Xcode8.1本虚拟机加装Xcode8.1,方便大家更好学习Swift3.0语言以及iOS开发.安装注意事项:第一步:确认硬件:1.确认主板以及cpu支持虚 ...

  10. 快消品销售管理系统,PDA销售管理系统,销售拜访PDA,进销存管理PDA系统 移动扫描打印开单POS

    各种ERP软件的移动订单及移动车销解决方案是针对各个需要快速.便捷的,通过智能PDA移动智能终端设备实现销售订单下达及快速车销的应用解决方案.通过将移动订单及移动车销集成到ERP的移动解决方案,可以帮 ...