Java导出excel表格

[java]  view plain  copy
  1.    
  2.        
  3. 之前做项目的时候需要数据库导出excel格式,由于项目赶没完成,现在分享下如何用java导出excel。话不多说案例如下:  

 

 

首先要做的是导入一个jxl的包,网上很多。首先是不连接数据库数据

[java]  view plain  copy
  1. package 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.     public class JXLExample {     
  23.      
  24.     /**  
  25.       * 数据库导出至Excel表格  
  26.     */   
  27.      public static void main(String[] args) {     
  28.         // 准备设置excel工作表的标题     
  29.         String[] title = {"编号","产品名称","产品价格","产品数量","生产日期","产地","是否出口"};     
  30.         try {     
  31.              // 获得开始时间     
  32.              long start = System.currentTimeMillis();     
  33.             // 输出的excel的路径     
  34.              String filePath = "e:\\testJXL.xls";     
  35.              // 创建Excel工作薄     
  36.              WritableWorkbook wwb;     
  37.             // 新建立一个jxl文件,即在e盘下生成testJXL.xls     
  38.              OutputStream os = new FileOutputStream(filePath);     
  39.              wwb=Workbook.createWorkbook(os);      
  40.            // 添加第一个工作表并设置第一个Sheet的名字     
  41.            WritableSheet sheet = wwb.createSheet("产品清单"0);     
  42.              Label label;     
  43.              for(int i=0;i<title.length;i++){     
  44.                  // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z     
  45.                // 在Label对象的子对象中指明单元格的位置和内容     
  46.                 label = new Label(i,0,title[i]);     
  47.                 // 将定义好的单元格添加到工作表中     
  48.                sheet.addCell(label);     
  49.             }     
  50.             // 下面是填充数据     
  51.              /*    
  52.               * 保存数字到单元格,需要使用jxl.write.Number  
  53.               * 必须使用其完整路径,否则会出现错误  
  54.               * */   
  55.             // 填充产品编号     
  56.             jxl.write.Number number = new jxl.write.Number(0,1,20071001);     
  57.             sheet.addCell(number);     
  58.             // 填充产品名称     
  59.              label = new Label(1,1,"金鸽瓜子");     
  60.             sheet.addCell(label);     
  61.             /*  
  62.            * 定义对于显示金额的公共格式  
  63.              * jxl会自动实现四舍五入  
  64.              * 例如 2.456会被格式化为2.46,2.454会被格式化为2.45  
  65.              * */   
  66.            jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");               
  67.   jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);     
  68.              // 填充产品价格     
  69.              jxl.write.Number nb = new jxl.write.Number(2,1,2.45,wcf);     
  70.              sheet.addCell(nb);  
  71.     
  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 = new SimpleDateFormat("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,"合并了三个单元格");                  
[java]  view plain  copy
  1. sheet.addCell(label);                  
  2. *   
  3.            *     
  4.             * 定义公共字体格式   
  5.              * 通过获取一个字体的样式来作为模板   
  6.              * 首先通过web.getSheet(0)获得第一个sheet   
  7.           * 然后取得第一个sheet的第二列,第一行也就是"产品名称"的字体     
  8.              * */   
  9.             CellFormat cf = wwb.getSheet(0).getCell(10).getCellFormat();     
  10.           WritableCellFormat wc = new WritableCellFormat();     
  11.            // 设置居中     
  12.            wc.setAlignment(Alignment.CENTRE);     
  13.            // 设置边框线     
  14.            wc.setBorder(Border.ALL, BorderLineStyle.THIN);     
  15.             // 设置单元格的背景颜色     
  16.          wc.setBackground(jxl.format.Colour.RED);     
  17.            label = new Label(1,5,"字体",wc);     
  18.             sheet.addCell(label);     
  19.   
  20.             
  21.                  
  22.            // 写入数据     
  23.            wwb.write();     
  24.             // 关闭文件     
  25.            wwb.close();     
  26.             long end = System.currentTimeMillis();     
  27.            System.out.println("----完成该操作共用的时间是:"+(end-start)/1000);     
  28.         } catch (Exception e) {     
  29.             System.out.println("---出现异常---");     
  30.             e.printStackTrace();     
  31.         }     
  32.     }     
  33.    
  34.    

其次是关联到oracle的数据库数据


 

[java]  view plain  copy
  1. package zjx;  
  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 dao.ProductDao;  
  11. import dao.impl.ProductDaoImpl;  
  12. import entity.Product;  
  13.      
  14.  import jxl.*;     
  15.  import jxl.format.Alignment;     
  16.  import jxl.format.Border;     
  17.  import jxl.format.BorderLineStyle;     
  18.  import jxl.format.CellFormat;     
  19.  import jxl.write.Boolean;     
  20.  import jxl.write.Label;     
  21.  import jxl.write.Number;     
  22.  import jxl.write.WritableCellFormat;     
  23.  import jxl.write.WritableFont;     
  24.  import jxl.write.WritableSheet;     
  25. import jxl.write.WritableWorkbook;     
  26.     public class DemoXls {     
  27.      
  28.     /**  
  29.       * 数据库导出至Excel表格  
  30.     */   
  31.      public static void main(String[] args) {     
  32.         // 准备设置excel工作表的标题     
  33.         String[] title = {"编号","产品名称","产品类型","计量类型"};     
  34.         try {     
  35.              // 获得开始时间     
  36.              long start = System.currentTimeMillis();     
  37.             // 输出的excel的路径     
  38.              String filePath = "e:\\testJXL2.xls";     
  39.              // 创建Excel工作薄     
  40.              WritableWorkbook wwb;     
  41.             // 新建立一个jxl文件,即在e盘下生成testJXL.xls     
  42.              OutputStream os = new FileOutputStream(filePath);     
  43.              wwb=Workbook.createWorkbook(os);      
  44.            // 添加第一个工作表并设置第一个Sheet的名字     
  45.            WritableSheet sheet = wwb.createSheet("产品清单"0);     
  46.              Label label;     
  47.              for(int i=0;i<title.length;i++){     
  48.                  // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z     
  49.                // 在Label对象的子对象中指明单元格的位置和内容     
  50.                 label = new Label(i,0,title[i]);     
  51.                 // 将定义好的单元格添加到工作表中     
  52.                sheet.addCell(label);     
  53.             }     
  54.             // 下面是填充数据     
  55.              /*    
  56.               * 保存数字到单元格,需要使用jxl.write.Number  
  57.               * 必须使用其完整路径,否则会出现错误  
  58.               * */   
  59.                
  60.              ProductDao dao=new ProductDaoImpl();  
  61.              List<Product> list=dao.queryAll();  
  62.              for(int i=0;i<list.size();i++){  
  63.                 // 填充产品编号     
  64.                  jxl.write.Number number = new jxl.write.Number(0,i+1,list.get(i).getProductId());     
  65.                  sheet.addCell(number);     
  66.                  // 填充产品名称     
  67.                  label = new Label(1,i+1,list.get(i).getProductName());     
  68.                  sheet.addCell(label);     
  69.                  jxl.write.Number type = new jxl.write.Number(2,i+1,list.get(i).getProductTypeId());     
  70.                  sheet.addCell(type);   
  71.                  jxl.write.Number measure = new jxl.write.Number(3,i+1,list.get(i).getMeasureTypeId());     
  72.                  sheet.addCell(measure);   
  73.              }    
  74.                   
  75.             // 写入数据     
  76.             wwb.write();     
  77.              // 关闭文件     
  78.             wwb.close();     
  79.              long end = System.currentTimeMillis();     
  80.             System.out.println("----完成该操作共用的时间是:"+(end-start)/1000);     
  81.          } catch (Exception e) {     
  82.              System.out.println("---出现异常---");     
  83.              e.printStackTrace();     
  84.          }     
  85.      }     
  86.     
  87. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值