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