Java 生成Excel表格

Java 生成Excel表格

使用jxl.jar在Java工程中生成Excel表格。jxl全程为:Java Excel,该API可以用来在Java中对微软的Excel表格进行操作。下面,我来简单地介绍下它的使用方法。
这里写图片描述
接着,编写excelUtil工具类,用于生成Excel表格:

package com.web.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.web.model.AccessRecord;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/*
 * 生成访问记录Excel表格工具类
 */
public class arexcelUtil {
    private static WritableCellFormat wcf_value;            // 表格数据样式
    private static WritableCellFormat wcf_value_left;
    private static WritableCellFormat wcf_key;              // 表头样式
    private static WritableCellFormat wcf_name_left;        // 表名样式
    private static WritableCellFormat wcf_name_right;       // 表名样式
    private static WritableCellFormat wcf_name_center;      // 表名样式
    private static WritableCellFormat wcf_title;            // 页名称样式
    private static WritableCellFormat wcf_percent_float;

    private static String pathStr = "C:/Users/Administrator/Desktop/ar";        //将导出Excel表格的路径设置为桌面

    // 生成Excel文件
    public void genarateExcel(List list) throws Exception{
        /******   定义表格格式start    *****/
        WritableFont wf_key = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.BOLD);
        WritableFont wf_value = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.NO_BOLD);
        //设置单元格样式
        wcf_value = new WritableCellFormat(wf_value);                               //单元格字体样式
        wcf_value.setAlignment(jxl.format.Alignment.CENTRE);                            //单元格水平对齐样式
        wcf_value.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);            //单元格垂直对齐样式
        wcf_value.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);     //单元格边框样式

        wcf_value_left = new WritableCellFormat(wf_value);
        wcf_value_left.setAlignment(jxl.format.Alignment.LEFT);
        wcf_value_left.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        wcf_value_left.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
        wcf_value_left.setWrap(true);

        wcf_key = new WritableCellFormat(wf_key);
        wcf_key.setAlignment(jxl.format.Alignment.CENTRE);
        wcf_key.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);

        wcf_name_left = new WritableCellFormat(wf_key);
        wcf_name_left.setAlignment(Alignment.LEFT);
        wcf_name_left.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

        wcf_name_right = new WritableCellFormat(wf_key);
        wcf_name_right.setAlignment(Alignment.LEFT);

        wcf_name_center = new WritableCellFormat(wf_key);
        wcf_name_center.setAlignment(Alignment.CENTRE);

        jxl.write.NumberFormat wf_percent_float = new jxl.write.NumberFormat("0.00");   //定义单元浮点数据类型        
        wcf_percent_float = new jxl.write.WritableCellFormat(wf_value,wf_percent_float);
        wcf_percent_float.setAlignment(jxl.format.Alignment.CENTRE);
        wcf_percent_float.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        wcf_percent_float.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);

        WritableFont wf_title = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 24, WritableFont.NO_BOLD);      //定义标题样式
        wcf_title = new WritableCellFormat(wf_title);
        wcf_title.setAlignment(Alignment.CENTRE);
        wcf_title.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
        /******   定义表格格式end    *****/

        //在指定的路径生成空白的xls文件
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");           
        System.out.println();
        String filename = pathStr + df.format(new Date()) + ".xls";
        File file = new File(filename);
        file.createNewFile();

        //根据传输过来的list,定义excel表格的列数
        //int maxRow = list.size();
        //int maxCol = 10;
        Iterator it = list.iterator();      

        try{
            WritableWorkbook wb = Workbook.createWorkbook(file);
            //设置Excel工作簿名称
            WritableSheet ws = wb.createSheet("访问报表", 0);
            int startRowNum = 0;    // 起始行
            int startColNum = 0;    // 起始列
            int maxColSize = 8;     // 最大列数
            // 设置列宽
            ws.setColumnView(0, 10);
            ws.setColumnView(1, 18);
            ws.setColumnView(2, 12);
            ws.setColumnView(3, 12);
            ws.setColumnView(4, 12);
            ws.setColumnView(5, 28);
            ws.setColumnView(6, 28);
            ws.setColumnView(7, 15);

            ws.addCell(new Label(startColNum, startRowNum, "来访单位记录", wcf_title));
            ws.mergeCells(startColNum, startRowNum, startColNum + maxColSize- 1, startRowNum);  //合并单元格,合并(1,0)到(1,9)
            startColNum = 0;
            startRowNum++;
            //第1行,绘制表头
            ws.addCell(new Label(startColNum, startRowNum, "标题1",wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题3", wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题3", wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题4", wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题5", wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题6", wcf_key));
            startColNum++;
            ws.addCell(new Label(startColNum, startRowNum, "标题7", wcf_key));
            startColNum++;          
            ws.addCell(new Label(startColNum, startRowNum, "标题8", wcf_key));
            startColNum++;          
            //将行数加1,列数重置为0
            startRowNum++;
            startColNum = 0;

            //添加记录
            while(it.hasNext()){
                AccessRecord ar = (AccessRecord) it.next();

                ws.addCell(new Label(startColNum, startRowNum, String.valueOf(ar.getId()) ,wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getArOrganization() , wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getArName() , wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getPid(), wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getPname(), wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getAccessDate()+ar.getAccessTime(), wcf_key));
                startColNum++;
                ws.addCell(new Label(startColNum, startRowNum, ar.getDepartureDate()+ar.getDepartureTime(), wcf_key));
                startColNum++;          
                ws.addCell(new Label(startColNum, startRowNum, ar.getContent(), wcf_key));
                startColNum++;
                //将行数加1,列数重置为0
                startRowNum++;
                startColNum = 0;
            }

            wb.write();     //生成Excel工作簿
            wb.close();     
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

这里的工程使用了SSH框架和ExtJS框架,具体的搭建就不详述了,重在介绍如果使用jxl来生成Excel表格,前台代码为:

//导出Excel表格
function exportExcel(){
    Ext.MessageBox.confirm("提示","您是否要导出Excel表格吗?",function(btnId){
        if(btnId == 'yes'){ 
            Ext.MessageBox.wait("正在导出Excel表格,请稍等...", "提示");                        Ext.Ajax.request({
                url:'accessrecord_exportExcel',
                method:'post',                          
                success:function(response,options){                                     Ext.Msg.alert('提示','成功导出Excel表格!');
                },
                failure:function(response,options){
                    Ext.Msg.alert('提示','发生错误,未能导出Excel表格!');
                }
            });
        }
    });
}

点击页面的导出Excel按钮,然后会生成相应的Excel表格,如图2所示:
Java 生成Excel表格 -

这里写图片描述
图2 触发Excel表格的生成

生成的Excel表格的内容如图3所示:
Java 生成Excel表格
这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值