import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.apache.struts.upload.FormFile;
/**
 * @author Hay Vanpull
 * 
 */
public class JXLTOOL
{
    private Workbook                workbook   = null; // 工作部对象
                                                       
    private HashMap<String, String> mapData    = null; // data数据
                                                       
    private Sheet                   sheet      = null; // 工作表
                                                       
    public int                      totalRows  = 0;   // 总行数
                                                       
    public int                      totalCells = 0;   // 总列数
                                                       
    /**
     * 以一个InputStream为参数的构造器
     * 
     * @param inputStream
     * @throws IOException
     * @throws BiffException
     */
    public JXLTOOL(InputStream inputStream) throws BiffException, IOException
    {
        this.workbook = Workbook.getWorkbook(inputStream);
        this.sheet = this.workbook.getSheet(0);
        this.getRows();
        this.getCells();
    }
    
    /**
     * 以一个Struts FormFile为参数的构造器
     * 
     * @param file
     * @throws IOException
     * @throws FileNotFoundException
     * @throws BiffException
     */
    public JXLTOOL(FormFile file) throws FileNotFoundException, IOException,
            BiffException
    {
        this(file.getInputStream());
    }
    
    /**
     * 以一个File为参数的构造器
     * 
     * @param file
     * @throws IOException
     * @throws BiffException
     */
    public JXLTOOL(File file) throws BiffException, IOException
    {
        this(new FileInputStream(file));
    }
    
    /**
     * 以一个文件路径path的构造器
     * 
     * @param filePath
     * @throws IOException
     * @throws BiffException
     */
    public JXLTOOL(String filePath) throws BiffException, IOException
    {
        
        this(new File(filePath));
    }
    
    /**
     * 把所有数据放到一个map中去,key为行号加列号
     * 
     * @return
     */
    public HashMap<String, String> getExcelDate()
    {
        mapData = new HashMap<String, String>();
        for (int i = 0; i < this.totalRows; i++)
        {
            for (int j = 0; j < this.totalCells; j++)
            {
                this.mapData.put(i + "" + j, this.getData(j, i));
            }
        }
        return this.mapData;
    }
    
    /**
     * 得到总行数
     */
    private void getRows()
    {
        this.totalRows = sheet.getRows();
    }
    
    /**
     * 得到总列数
     */
    private void getCells()
    {
        this.totalCells = this.sheet.getColumns();
    }
    
    /**
     * 得到数据
     * 
     * @param cell
     * @param row
     * @return
     */
    private String getData(int cell, int row)
    {
        Cell rs = this.sheet.getCell(cell, row);
        return rs.getContents();
    }
}