package com.nzw.test;


import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


import jxl.Sheet;

import jxl.Workbook;

import jxl.format.UnderlineStyle;

import jxl.write.Label;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;


import com.nzw.entity.User;


/**

 * Excel数据的导入导出

 * @author Administrator

 *

 */


public class TestExcel {

    public static void main(String[] args) {

//      String filepath="D:"+"\\usering.xls";

//      expExcel(filepath); 


      String filename="D:"+File.separator+"myuser6.xls";

      List<User> list = new ArrayList<User>(); 

      User u1 = new User(new Long(1000),"张三","13968556355","湖南岳阳","5845121@qq.com");

      User u2 = new User(new Long(1001),"李四","13968556355","湖南益阳","5873122@qq.com");

      User u3 = new User(new Long(1002),"王五","13968556355","湖南浏阳","5675121@qq.com");

      User u4 = new User(new Long(1003),"赵六","13968556355","湖南邵阳","5848561@qq.com");

      User u5 = new User(new Long(1004),"陈七","13968556355","湖南衡阳","5842344@qq.com");

      User u6 = new User(new Long(1006),"红霸","13968556355","湖南耒阳","5678121@qq.com");

      list.add(u1);

      list.add(u2);

      list.add(u3);

      list.add(u4);

      list.add(u5);

      list.add(u6);

      impExcel(list,filename);

    }

    /**

     * 将Excel中的数据导入到数据库中

     * @param filePath 文件名

     */

    public static void expExcel(String filePath){

    //实例化一个工作簿对象  

        Workbook workBook;

try {

workBook = Workbook.getWorkbook(new File(filePath));

//获取该工作表中的第一个工作表  

       Sheet sheet=workBook.getSheet(0);  

       //获取该工作表的行数,以供下面循环使用  

       int rowSize=sheet.getRows();

       System.out.println("======总共"+rowSize+"行=====");

       for(int i=0;i<rowSize;i++){

         //姓名

        String name = sheet.getCell(0,i).getContents(); 

        //电话

        String phone = sheet.getCell(1,i).getContents(); 

        //地址

        String address = sheet.getCell(2,i).getContents(); 

        //邮箱

        String email = sheet.getCell(3,i).getContents(); 

        //密码

        String password = sheet.getCell(4,i).getContents(); 

        System.out.println("===="+name+"===="+phone+"====="+address+"======"+email+"========="+password+"=====");

       }  

}catch (IOException e) {

System.out.println("未找到Excel文件");

e.printStackTrace();

catch (Exception e) {

System.out.println("操作Excel失败");

e.printStackTrace();

    }

    

    /**

     * 将数据库中的数据导入到Excel中

     * @param list 数据库中要导入到Excel中的数据

     * @param fileName 文件名

     */

    public static void impExcel(List<User> list,String fileName){

    WritableWorkbook wb = null;

    File file = new File(fileName);

    int count=0;

    try {

    //判断文件是否存在

    if(!file.exists()){

    file.createNewFile();

    }

    //以fileName为名字创建一个workBook

    wb = Workbook.createWorkbook(file);

    //创建工作表 ,名字test01 第一个工作簿

    WritableSheet sheet = wb.createSheet("test01",0);

    //合并单元格,表示从第一列开始到第5列结束,第一行开始到第2行结束进行合并

    sheet.mergeCells(0, 0, 4, 1);

    //将第一行的高度设置为200

    sheet.setRowView(2, 500);

    //将第三、四、五列的宽度设置成200

    sheet.setColumnView(2, 15);

    sheet.setColumnView(3, 15);

    sheet.setColumnView(4, 20);

    //查询数据库中的数据

    //TODO

   

    //单元格内容居中显示

WritableCellFormat cellFormat = new WritableCellFormat(); 

cellFormat.setAlignment(jxl.format.Alignment.CENTRE);

WritableCellFormat cellFormat2 = new WritableCellFormat(); 

cellFormat2.setAlignment(jxl.format.Alignment.CENTRE);

    /* 

        * WritableFont.createFont("宋体"):设置字体为宋体 

        * 10:设置字体大小 

        * WritableFont.BOLD:设置字体加粗(BOLD:加粗     NO_BOLD:不加粗) 

        * false:设置非斜体 

        * UnderlineStyle.NO_UNDERLINE:没有下划线 

        */  

       WritableFont font 

       = new WritableFont(WritableFont.createFont("宋体"),14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE); 

   

       //要插入到的Excel表格的行号,默认从0开始 表头行

Label head = new Label(0,0,"用户信息数据");

    Label id = new Label(0,2,"ID号");//表示第一行第1列

    Label username = new Label(1,2,"姓名");//表示第2行第一列

    Label phone = new Label(2,2,"电话");//表示第一行第3列

    Label address = new Label(3,2,"地址");//表示第一行第4列

    Label email = new Label(4,2,"邮箱");//表示第一行第5列

   

    head.setCellFormat(cellFormat2);//设置居中

    cellFormat2.setFont(font);//设置字体

    head.setCellFormat(cellFormat2);

   

    //使相应的列单元格内容居中显示

    id.setCellFormat(cellFormat);

    username.setCellFormat(cellFormat);

    phone.setCellFormat(cellFormat);

    address.setCellFormat(cellFormat);

    email.setCellFormat(cellFormat);

   

    sheet.addCell(head);

    sheet.addCell(id);

    sheet.addCell(username);

    sheet.addCell(phone);

    sheet.addCell(address);

    sheet.addCell(email);

    System.out.println("=====总共:"+list.size()+" 行========");

    //循环插入到Excel电子表格中

    for(int i=0;i<list.size();i++){

    Label id_i = new Label(0, i+3, list.get(i).getId()+"");

    Label name_i = new Label(1,i+3,list.get(i).getUsername());

    Label phone_i = new Label(2,i+3,list.get(i).getUsertel());

    Label addr_i = new Label(3,i+3,list.get(i).getUseradd());

    Label email_i = new Label(4,i+3,list.get(i).getEmail());

   

    //单元格内容居中显示

    id_i.setCellFormat(cellFormat);

    name_i.setCellFormat(cellFormat);

    phone_i.setCellFormat(cellFormat);

    addr_i.setCellFormat(cellFormat);

    email_i.setCellFormat(cellFormat);

   

   

    sheet.addCell(id_i);

    sheet.addCell(name_i);

    sheet.addCell(phone_i);

    sheet.addCell(addr_i);

    sheet.addCell(email_i);

    count++;

    }

    System.out.println("==========导入Excel:"+count+" 行==========");

    //写进Excel文件中

    wb.write();

    //关闭Excel工作簿对象

    wb.close();

   

   

} catch (IOException e) {

System.out.println("创建文件失败!");

}

    catch (Exception e) {

System.out.println("操作失败!");

}

   

    }

    

}


备注:必须要导入jxl.jar