importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.ArrayList;importjava.util.List;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFFont;importorg.apache.poi.hssf.usermodel.HSSFHeader;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.apache.struts2.ServletActionContext;importcom.dev.iex.po.Student;
定义的的变量:private File excelFile;//File对象,目的是获取页面上传的文件
private List stuList=new ArrayList();
定义的方法:publicFile getExcelFile() {returnexcelFile;
}public voidsetExcelFile(File excelFile) {this.excelFile =excelFile;
}public ListgetStuList() {returnstuList;
}public void setStuList(ListstuList) {this.stuList =stuList;
}
主要编写的是importExcel方法,如下:
@SuppressWarnings("finally")public String importExcel()throwsException
{
String id=null;
String name=null;
String sex=null;
String Dormitory=null;
String Sept=null;
Workbook workbook= null;int k=0;int flag = 0; //指示指针所访问的位置
if(excelFile!=null)
{
String path=excelFile.getAbsolutePath();//获取文件的路径
try{
workbook= new XSSFWorkbook(path);//初始化workbook对象
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) { //读取每一个sheet
System.out.println("2007版进入读取sheet的循环");if (null !=workbook.getSheetAt(numSheets)) {
XSSFSheet aSheet= (XSSFSheet)workbook.getSheetAt(numSheets);//定义Sheet对象
for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {//进入当前sheet的行的循环
if (null !=aSheet.getRow(rowNumOfSheet)) {
XSSFRow aRow= aSheet.getRow(rowNumOfSheet); //定义行,并赋值
for (int cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++)
{//读取rowNumOfSheet值所对应行的数据
XSSFCell xCell = aRow.getCell(cellNumOfRow); //获得行的列数//获得列值//System.out.println("type="+xCell.getCellType());
if (null !=aRow.getCell(cellNumOfRow))
{if(rowNumOfSheet == 0)
{//如果rowNumOfSheet的值为0,则读取表头,判断excel的格式和预定格式是否相符
if(xCell.getCellType() ==XSSFCell .CELL_TYPE_NUMERIC)
{
}else if(xCell.getCellType() ==XSSFCell .CELL_TYPE_BOOLEAN)
{
}else if(xCell.getCellType() ==XSSFCell .CELL_TYPE_STRING)
{if(cellNumOfRow == 0)
{if