动态生成excel

package com.hxmy.util;

import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.List;

import com.bdqn.hr.entity.HumanFile;
import com.bdqn.hr.entity.util.ExportFile;

import jxl.CellType;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableFont;
import jxl.write.WritableImage;

//这里需要添加一个jxl.jar
@SuppressWarnings("unused")
public class ExportExcel {

 private static final Object Integer = null;


 public void crExcel(String[] tagName,List list,String filename) {
  try {
   // 构建Workbook对象, 只读Workbook对象
   // Method 1:创建可写入的Excel工作薄
   
   
   String path=filename+"//Download//人力资源档案"+new Date().getYear()+(new Date().getMonth()+1)+new Date().getDate()+new Date().getTime()+".xls";
   
   jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(
     path));

   // wwb.setProtected(true);//设置生成的excel是否可以编辑
   // 创建Excel工作表
   //Excel.createDoc(tagName, res, filename);
   jxl.write.WritableSheet ws = wwb.createSheet("人力资源档案", 0);// sheet名字,第0个sheet表
   // 设置保护单元格,只读不可写
   // ws.setProtected(true);
   // 标题
   ws.mergeCells(0, 0, tagName.length, 0);// 合并单元格 x轴,y轴,x轴占的单元格个数,y轴占的单元格的个数
   // 设置字体,大小,颜色,斜体,黑体
   jxl.write.WritableFont wf = new jxl.write.WritableFont(
     WritableFont.ARIAL, 18, WritableFont.BOLD, false);
   wf.setColour(Colour.RED);//设置字体颜色
   jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(
     wf);

   // 设置水平居中
   wcfF.setAlignment(Alignment.CENTRE);
   // 背景
   // wcfF.setBackground(Colour.DARK_GREEN);
   jxl.write.Label labelC = new jxl.write.Label(0, 0, "人力资源档案", wcfF);
   ws.addCell(labelC);
   

   jxl.write.WritableFont wfBold = new jxl.write.WritableFont(
     WritableFont.ARIAL, 13, WritableFont.BOLD, false);
   wfBold.setColour(Colour.BLUE);
   jxl.write.WritableCellFormat wcfFBold = new jxl.write.WritableCellFormat(
     wfBold);
   // 设置垂直居上
   wcfFBold.setVerticalAlignment(VerticalAlignment.TOP);
   wcfFBold.setShrinkToFit(false);
   //循环列名字
  
   for(int i=0;i<tagName.length;i++)
   {
    //System.out.println(tagName[i]);
    ws.addCell(new Label(i, 1, tagName[i], wcfFBold));
    
   }
   //显示的所在行--具体的数据
   
   jxl.write.WritableFont wfBold1 = new jxl.write.WritableFont(
     WritableFont.ARIAL, 10);
   jxl.write.WritableCellFormat wcfFBold1 = new jxl.write.WritableCellFormat(
     wfBold1);
   // 设置垂直居上
   wcfFBold1.setVerticalAlignment(VerticalAlignment.TOP);
   wcfFBold1.setShrinkToFit(false);
   
   int count=2
;//表示数据显示在哪一行
   
   //转换类型
   //int valInt=0;
   //String valStr="";
   //Date valDate=new Date();
   Short valShort;
   double valDouble;
   //boolean validate=true;
   
   for(int i=0;i<list.size();i++){
    
    Object[] result=((Object[])(list.get(i)));
    //System.out.println(result.length);
    for(int k=0;k<result.length;k++)
    {
    //判断获取的类型,转换成不同的格式
     try {
      valShort=(Short)result[k];
      
       jxl.write.Number labelNF = new jxl.write.Number(k, count, valShort, wcfFBold1);
       ws.addCell(labelNF);
     } catch (Exception e) {
      
      
      try {
       valDouble=(Double)result[k];
       
        jxl.write.Number labelNF = new jxl.write.Number(k, count, valDouble, wcfFBold1);
        ws.addCell(labelNF);
      } catch (Exception ex) {
       ws.addCell(new Label(k, count, (String) result[k], wcfFBold1));
      
      }
     }
     
     
     
     
    
    }
    count++;
    
   }
   // // 添加带有字型Formatting的对象
   // jxl.write.WritableFont wf1 = new jxl.write.WritableFont(
   // WritableFont.TIMES, 18, WritableFont.BOLD, true);
   // jxl.write.WritableCellFormat wcfF1 = new
   // jxl.write.WritableCellFormat(
   // wf1);
   // jxl.write.Label labelCF = new jxl.write.Label(10, 5,
   // "This is a Label Cell", wcfF1);
   // ws.addCell(labelCF);
   // // 添加带有字体颜色Formatting的对象
   // jxl.write.WritableFont wfc = new jxl.write.WritableFont(
   // WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
   // UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
   // jxl.write.WritableCellFormat wcfFC = new
   // jxl.write.WritableCellFormat(
   // wfc);
   // jxl.write.Label labelCFC = new jxl.write.Label(1, 0,
   // "This is a Label Cell", wcfFC);
   // ws.addCell(labelCFC);
   // // 2.添加Number对象
   // jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);
   // ws.addCell(labelN);
   // // 添加带有formatting的Number对象
   // jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
   // jxl.write.WritableCellFormat wcfN = new
   // jxl.write.WritableCellFormat(
   // nf);
   // jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926,
   // wcfN);
   // ws.addCell(labelNF);
   // // 3.添加Boolean对象
   // jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
   // ws.addCell(labelB);
   // // 4.添加DateTime对象
   // jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3,
   // new java.util.Date());
   // ws.addCell(labelDT);
   // // 添加带有formatting的DateFormat对象
   // jxl.write.DateFormat df = new jxl.write.DateFormat(
   // "dd MM yyyy hh:mm:ss");
   // jxl.write.WritableCellFormat wcfDF = new
   // jxl.write.WritableCellFormat(
   // df);
   // jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3,
   // new java.util.Date(), wcfDF);
   // ws.addCell(labelDTF);
   // 可合并分割单元格
//   ws.mergeCells(0, 7, 5, 7);
//   ws.addCell(new Label(0, 7, "非普工业/n非普工业/n非普工业/n非普工业/n非普工业非普工业"));

   // 添加图片对象,jxl只支持png格式图片
   // File image = new File("E:/1-我的列表.png");
   // WritableImage wimage = new WritableImage(10, 7, 20, 20, image);
   // ws.addImage(wimage);

   // 写入Exel工作表
   wwb.write();
   // 关闭Excel工作薄对象
   wwb.close();
   //
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

// /**
//  * 创建excel工作薄
//  *
//  */
// public void createExcel() {
//  try {
//   // 创建只读的Excel工作薄的对象
//   jxl.Workbook rw = jxl.Workbook
//     .getWorkbook(new File("E:/source.xls"));
//
//   // 创建可写入的Excel工作薄对象
//   jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(
//     "E:/desc.xls"), rw);
//
//   // 读取第一张工作表
//   jxl.write.WritableSheet ws = wwb.getSheet(0);
//   // ws.mergeCells(0, 0, 5, 0);
//   // 获得第一个单元格对象
//   // jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//
//   // 1.添加Label对象
//   jxl.write.Label labelC = new jxl.write.Label(0, 0,
//     "This is a Label cell");
//   ws.addCell(labelC);
//   // 添加带有字型Formatting的对象
//   jxl.write.WritableFont wf = new jxl.write.WritableFont(
//     WritableFont.TIMES, 18, WritableFont.BOLD, true);
//   jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(
//     wf);
//   jxl.write.Label labelCF = new jxl.write.Label(1, 0,
//     "This is a Label Cell", wcfF);
//   ws.addCell(labelCF);
//   // 添加带有字体颜色Formatting的对象
//   jxl.write.WritableFont wfc = new jxl.write.WritableFont(
//     WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
//     UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
//   jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(
//     wfc);
//   jxl.write.Label labelCFC = new jxl.write.Label(1, 0,
//     "This is a Label Cell", wcfFC);
//   ws.addCell(labelCFC);
//   // 2.添加Number对象
//   jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);
//   ws.addCell(labelN);
//   // 添加带有formatting的Number对象
//   jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
//   jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(
//     nf);
//   jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926,
//     wcfN);
//   ws.addCell(labelNF);
//   // 3.添加Boolean对象
//   jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
//   ws.addCell(labelB);
//   // 4.添加DateTime对象
//   jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3,
//     new java.util.Date());
//   ws.addCell(labelDT);
//   // 添加带有formatting的DateFormat对象
//   jxl.write.DateFormat df = new jxl.write.DateFormat(
//     "dd MM yyyy hh:mm:ss");
//   jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(
//     df);
//   jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3,
//     new java.util.Date(), wcfDF);
//   ws.addCell(labelDTF);
//
//   // 写入Excel对象
//   wwb.write();
//
//   // 关闭可写入的Excel对象
//   wwb.close();
//
//   // 关闭只读的Excel对象
//   rw.close();
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
// }
//
// /**
//  * 拷贝、更新工作薄
//  *
//  */
// public void genExcel() {
//  try {
//   // 创建只读的Excel工作薄的对象
//   jxl.Workbook rw = jxl.Workbook.getWorkbook(new File("E:/test.xls"));
//
//   // 创建可写入的Excel工作薄对象
//   jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(
//     "E:/desc.xls"), rw);
//
//   // 读取第一张工作表
//   jxl.write.WritableSheet ws = wwb.getSheet(0);
//
//   // 获得第一个单元格对象
//   jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//
//   // 判断单元格的类型, 做出相应的转化
//   if (wc.getType() == CellType.LABEL) {
//    Label l = (Label) wc;
//    l.setString("The value has been modified." + wc.getContents());
//   }
//
//   // 写入Excel对象
//   wwb.write();
//
//   // 关闭可写入的Excel对象
//   wwb.close();
//
//   // 关闭只读的Excel对象
//   rw.close();
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
// }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值