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();
// }
// }
}