Excel操作类

/*
 * Copyright (c) 2013.
 * All Rights Reversed by Wantsong Corp.
 */
package cn.wantsong.commons.util;
/**
 * excel操作类
 * All rights reversed by Wantsong Corporation.
 * User: Wantsong
 * Date: 13-9-13
 * Time: 上午11:46
 */
import cn.wantsong.po.warehouse.StocktakingItem;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.Boolean;
import jxl.write.*;
import jxl.write.Number;
import java.io.*;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 * User: xl
 * Date: 2005-7-17
 * Time: 9:33:22
 * To change this template use File | Settings | File Templates.
 */
public class excelUtil {
    public excelUtil() {
    }
    /**
     * 读取Excel
     *
     * @param filePath
     */
    public static void readExcel(String filePath) {
        try {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
            Sheet st = rwb.getSheet(0);
            int i = 0;
            int j = 0;
            for (i = 0; i < 2; i++) {
                for (j = 0; j < 4; j++) {
                    Cell c00 = st.getCell(i, j);
                    //通用的获取cell值的方式,返回字符串
                    String strc00 = c00.getContents();
                    //获得cell具体类型值的方式
// if (c00.getType() == CellType.LABEL) {
// LabelCell labelc00 = (LabelCell) c00;
// strc00 = labelc00.getString();
// }
                    //输出
                    System.out.println(i);
                    System.out.println(j);
                    System.out.println(strc00);
                }
            }
            //关闭
            rwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 输出Excel
     *
     * @param os
     */
    public static void writeExcel
    (OutputStream
             os) {
        try {
            /**
             * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
             * 因为类WritableWorkbook的构造函数为protected类型
             * method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
             * method(2)如下实例所示 将WritableWorkbook直接写入到输出流
             */
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            //创建Excel工作表 指定名称和位置
            WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
            //**************往工作表中添加数据*****************
            //1.添加Label对象
            Label label = new Label(0, 0, "this is a label test");
            ws.addCell(label);
            //添加带有字型Formatting对象
            WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            Label labelcf = new Label(1, 0, "this is a label test", wcf);
            ws.addCell(labelcf);
            //添加带有字体颜色的Formatting对象
            WritableFont wfc = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
                    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
            Label labelCF = new Label(1, 0, "This is a Label Cell", wcfFC);
            ws.addCell(labelCF);
            //2.添加Number对象
            Number labelN = new Number(0, 1, 3.1415926);
            ws.addCell(labelN);
            //添加带有formatting的Number对象
            NumberFormat nf = new NumberFormat("#.##");
            WritableCellFormat wcfN = new WritableCellFormat(nf);
            Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
            ws.addCell(labelNF);
            //3.添加Boolean对象
            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对象
            DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
            WritableCellFormat wcfDF = new WritableCellFormat(df);
            DateTime labelDTF = new DateTime(1, 3, new java.util.Date(), wcfDF);
            ws.addCell(labelDTF);
            //添加图片对象,jxl只支持png格式图片
// File image = new File("f:\\2.png");
// WritableImage wimage = new WritableImage(0,1,2,2,image);
// ws.addImage(wimage);
            //写入工作表
            wwb.write();
            wwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void createExcel
            (OutputStream
                     os, List<StocktakingItem> stocktakingItemList) {
        try {
            /**
             * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
             * 因为类WritableWorkbook的构造函数为protected类型
             * method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
             * method(2)如下实例所示 将WritableWorkbook直接写入到输出流
             */
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            //stockTaking----->相当于Excel表里的sheet的名字
            WritableSheet ws = wwb.createSheet("stockTaking", 0);
            Label labelcf = new Label(0, 0, "商品Id");
            ws.addCell(labelcf);
            Label labelCF = new Label(1, 0, "盘点数量");
            ws.addCell(labelCF);
            for (int i = 0; i < stocktakingItemList.size(); i++) {
                ws.addCell(new Label(0, i + 1, stocktakingItemList.get(i).getProductId()));
                ws.addCell(new jxl.write.Number(1, i + 1, stocktakingItemList.get(i).getRealCount()));
            }
            wwb.write();
            wwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void uploadExcel(String filePath) {
        try {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
            Sheet st = rwb.getSheet(0);
            int i = 0;
            int j = 0;
            for (i = 0; i < 2; i++) {
                for (j = 0; j < 4; j++) {
                    Cell c00 = st.getCell(i, j);
                    //通用的获取cell值的方式,返回字符串
                    String strc00 = c00.getContents();
                    //获得cell具体类型值的方式
// if (c00.getType() == CellType.LABEL) {
// LabelCell labelc00 = (LabelCell) c00;
// strc00 = labelc00.getString();
// }
                    //输出
                    System.out.println(i);
                    System.out.println(j);
                    System.out.println(strc00);
                }
            }
            //关闭
            rwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象
     * 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,
     * 以使单元格的内容以不同的形式表现
     *
     * @param file1
     * @param file2
     */
    public static void modifyExcel
    (File
             file1, File
            file2) {
        try {
            Workbook rwb = Workbook.getWorkbook(file1);
            WritableWorkbook wwb = Workbook.createWorkbook(file2, rwb);//copy
            WritableSheet ws = wwb.getSheet(0);
            WritableCell wc = ws.getWritableCell(0, 0);
            //判断单元格的类型,做出相应的转换
            if (CellType.LABEL == wc.getType()) {
                Label label = (Label) wc;
                label.setString("The value has been modified");
            }
            wwb.write();
            wwb.close();
            rwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //测试
    public static void main(String[] args) {
        try {
// //输出Excel
            File fileWrite = new File("e:/testWrite.xls");
            fileWrite.createNewFile();
            OutputStream os = new FileOutputStream(fileWrite);
            excelUtil.writeExcel(os);
            //读Excel
            excelUtil.readExcel("e:/testRead.xls");
            //修改Excel
// excelUtil.modifyExcel(new File(""), new File(""));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


/*
 * Copyright (c) 2013.
 * All Rights Reversed by Wantsong Corp.
 */
package cn.wantsong.po.warehouse;
import cn.wantsong.po.Entity;
/**
 * All rights reversed by Wantsong Corporation.
 * User: qingaotao
 * Date: 13-5-5
 * Time: 上午9:22
 */
public class StocktakingItem extends Entity {
    /* 单据id */
    private String voucherID;
    /* 商品Id */
    private String productId;
    /* 规格1 */
    private String specID1;
    /* 规格2 */
    private String specID2;
    /* 单位 */
    private String packingUnitItemId;
    /* 货位 */
    private String goodsLocationID;
    /* 库存清单Id */
    private String wareHouseListId;
    /* 备注 */
    private String remarks;
    /**
     * 账面数量
     */
    private int sysCount;
    /**
     * 实际盘点数量
     */
    private int realCount;
    private String wareHouseID;
    /**
     * 商品类别
     *
     * @return
     */
    private String productGroupId;
    public String getProductGroupId() {
        return productGroupId;
    }
    public void setProductGroupId(String productGroupId) {
        this.productGroupId = productGroupId;
    }
    public String getWareHouseID() {
        return wareHouseID;
    }
    public void setWareHouseID(String wareHouseID) {
        this.wareHouseID = wareHouseID;
    }
    public String getWareHouseListId() {
        return wareHouseListId;
    }
    public void setWareHouseListId(String wareHouseListId) {
        this.wareHouseListId = wareHouseListId;
    }
    public int getSysCount() {
        return sysCount;
    }
    public void setSysCount(int sysCount) {
        this.sysCount = sysCount;
    }
    public int getRealCount() {
        return realCount;
    }
    public void setRealCount(int realCount) {
        this.realCount = realCount;
    }
    public String getVoucherID() {
        return voucherID;
    }
    public void setVoucherID(String voucherID) {
        this.voucherID = voucherID;
    }
    public String getProductId() {
        return productId;
    }
    public void setProductId(String productId) {
        this.productId = productId;
    }
    public String getSpecID1() {
        return specID1;
    }
    public void setSpecID1(String specID1) {
        this.specID1 = specID1;
    }
    public String getSpecID2() {
        return specID2;
    }
    public void setSpecID2(String specID2) {
        this.specID2 = specID2;
    }
    public String getPackingUnitItemId() {
        return packingUnitItemId;
    }
    public void setPackingUnitItemId(String packingUnitItemId) {
        this.packingUnitItemId = packingUnitItemId;
    }
    public String getGoodsLocationID() {
        return goodsLocationID;
    }
    public void setGoodsLocationID(String goodsLocationID) {
        this.goodsLocationID = goodsLocationID;
    }
    public String getRemarks() {
        return remarks;
    }
    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }
}

/*
 * Copyright (c) 2013.
 * All Rights Reversed by Wantsong Corp.
 */
package cn.wantsong.po;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
import java.util.Date;
/**
 * All rights reversed by Wantsong Corporation.
 * User: Wantsong
 * Date: 13-3-21
 * Time: 下午6:07
 */
public class Entity implements Serializable {
    private String id;
    private Date lastUpdateDate;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        if (StringUtils.isEmpty(id)) {
            this.id = null;
        } else {
            this.id = id;
        }
    }
    public Date getLastUpdateDate() {
        return lastUpdateDate;
    }
    public void setLastUpdateDate(Date lastUpdateDate) {
        this.lastUpdateDate = lastUpdateDate;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值