• 【Java】导出excel表格



    1package jxlTest;
    2
    3 import java.io.FileOutputStream;  
    4 import java.io.OutputStream;  
    5 import java.text.SimpleDateFormat;  
    6 import java.util.ArrayList;  
    7 import java.util.Date;  
    8 import java.util.List;  
    9  
    10 import jxl.*;  
    11 import jxl.format.Alignment;  
    12 import jxl.format.Border;  
    13 import jxl.format.BorderLineStyle;  
    14 import jxl.format.CellFormat;  
    15 import jxl.write.Boolean;  
    16 import jxl.write.Label;  
    17 import jxl.write.Number;  
    18 import jxl.write.WritableCellFormat;  
    19 import jxl.write.WritableFont;  
    20 import jxl.write.WritableSheet;  
    21 import jxl.write.WritableWorkbook;  
    22  
    23 public class JXLExample {  
    24  
    25     /**
    26      * 数据库导出至Excel表格
    27      */
    28     public static void main(String[] args) {  
    29         // 准备设置excel工作表的标题  
    30         String[] title = {"编号","产品名称","产品价格","产品数量","生产日期","产地","是否出口"};  
    31         try {  
    32             // 获得开始时间  
    33             longstart = System.currentTimeMillis();  
    34             // 输出的excel的路径  
    35            String filePath = "e:\\testJXL.xls";  
    36             // 创建Excel工作薄  
    37             WritableWorkbookwwb;  
    38             // 新建立一个jxl文件,即在e盘下生成testJXL.xls  
    39            OutputStream os = new FileOutputStream(filePath);  
    40            wwb=Workbook.createWorkbook(os);   
    41             // 添加第一个工作表并设置第一个Sheet的名字  
    42             WritableSheetsheet = wwb.createSheet("产品清单", 0);  
    43            Label label;  
    44            for(int i=0;i<title.length;i++){  
    45                // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z  
    46                // 在Label对象的子对象中指明单元格的位置和内容  
    47                label = new Label(i,0,title[i]);  
    48                // 将定义好的单元格添加到工作表中  
    49                sheet.addCell(label);  
    50            }  
    51             // 下面是填充数据  
    52            /*  
    53             * 保存数字到单元格,需要使用jxl.write.Number
    54             * 必须使用其完整路径,否则会出现错误
    55             * */
    56             // 填充产品编号  
    57            jxl.write.Number number = new jxl.write.Number(0,1,20071001);  
    58            sheet.addCell(number);  
    59             // 填充产品名称  
    60            label = new Label(1,1,"金鸽瓜子");  
    61            sheet.addCell(label);  
    62             /*
    63             * 定义对于显示金额的公共格式
    64             * jxl会自动实现四舍五入
    65             * 例如 2.456会被格式化为2.46,2.454会被格式化为2.45
    66             * */
    67            jxl.write.NumberFormat nf = newjxl.write.NumberFormat("#.##");  
    68            jxl.write.WritableCellFormat wcf = newjxl.write.WritableCellFormat(nf);  
    69             // 填充产品价格  
    70            jxl.write.Number nb = new jxl.write.Number(2,1,2.45,wcf);  
    71             sheet.addCell(nb);  
    72             // 填充产品数量  
    73            jxl.write.Number numb = new jxl.write.Number(3,1,200);  
    74            sheet.addCell(numb);  
    75             /*
    76             * 定义显示日期的公共格式
    77             * 如:yyyy-MM-dd hh:mm
    78             * */
    79            SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd");  
    80            String newdate = sdf.format(new Date());  
    81             // 填充出产日期  
    82            label = new Label(4,1,newdate);  
    83            sheet.addCell(label);  
    84             // 填充产地  
    85            label = new Label(5,1,"陕西西安");  
    86            sheet.addCell(label);  
    87             /*
    88             * 显示布尔值
    89             * */
    90            jxl.write.Boolean bool = new jxl.write.Boolean(6,1,true);  
    91            sheet.addCell(bool);  
    92             /*
    93             * 合并单元格
    94             * 通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的
    95             * 表示将从第x+1列,y+1行到m+1列,n+1行合并
    96             *  
    97             * */
    98            sheet.mergeCells(0,3,2,3);  
    99            label = new Label(0,3,"合并了三个单元格");  
    100            sheet.addCell(label);  
    101             /*
    102             *  
    103             * 定义公共字体格式
    104             * 通过获取一个字体的样式来作为模板
    105             * 首先通过web.getSheet(0)获得第一个sheet
    106             * 然后取得第一个sheet的第二列,第一行也就是"产品名称"的字体  
    107             * */
    108            CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();  
    109            WritableCellFormat wc = new WritableCellFormat();  
    110             // 设置居中  
    111            wc.setAlignment(Alignment.CENTRE);  
    112             // 设置边框线  
    113            wc.setBorder(Border.ALL, BorderLineStyle.THIN);  
    114             // 设置单元格的背景颜色  
    115            wc.setBackground(jxl.format.Colour.RED);  
    116            label = new Label(1,5,"字体",wc);  
    117            sheet.addCell(label);  
    118  
    119             // 设置字体  
    120            jxl.write.WritableFont wfont = newjxl.write.WritableFont(WritableFont.createFont("隶书"),20);  
    121            WritableCellFormat font = new WritableCellFormat(wfont);  
    122            label = new Label(2,6,"隶书",font);  
    123            sheet.addCell(label);  
    124               
    125             // 写入数据  
    126            wwb.write();  
    127             // 关闭文件  
    128            wwb.close();  
    129            long end = System.currentTimeMillis();  
    130            System.out.println("----完成该操作共用的时间是:"+(end-start)/1000);  
    131         } catch (Exception e){  
    132             System.out.println("---出现异常---");  
    133            e.printStackTrace();  
    134         }  
    135     }  
    136  
    137 }

  • 相关阅读:
    bzoj3196 Tyvj 1730 二逼平衡树
    bzoj2929 [Poi1999]洞穴攀行
    bzoj2325 [ZJOI2011]道馆之战
    cf413E Maze 2D
    bzoj2599 [IOI2011]Race
    bzoj1528 [POI2005]sam-Toy Cars
    UVA 796 Critical Links(无向图求桥)
    UVA 315 Network(无向图求割点)
    HDU 1269 迷宫城堡(求是否只有一个强连通分量)
    HDU 3974 Assign the task
  • 原文地址:https://www.cnblogs.com/liaoshiyong/p/3150943.html
Copyright © 2020-2023  润新知