POI入门总结

最近用了一下读取XLS文件的中间件POI,简单在网络上找了一些资料发现非常多,加上我自己的应用这里总结一下者:文虹,欢迎来到我的博客http://winnernoom.iteye.com/

poi,与jxl一样都可以实现java操作excel文件

HSSF对Excel的操作主要是通过下面几个对象实现:
HSSFWorkbook    工作簿对象对应于Excel文件
HSSFSheet       Sheet对象对应于Excel中的Sheet
HSSFRow         行对象表示Sheet中的一行(这个对象在JXL中并没有提供)
HSSFCell        单元格对象


基本步骤:

通过Poi操作Excel十分方便,将一个Excel抽象为一个Workbook,一个表单页抽象为Sheet,表单中的一行抽象为Row,一行中的一个单元格可以抽象为Cell。HSSF对应的是97-03格式(.xls),XSSF对应的是07格式的(.xlsx)。

      Workbook的获取有以下几种方式:

      1.可以通过WorkbookFactory,工厂方法

         Workbook wb=WorkbookFactory.create(new FileInputStream(file));//可以读取xls格式或xlsx格式。

      2.直接通过HSSFWorkbook或XSSFWorkbook的构造方法

         Workbook wb=new HSSFWorkbook();//生成一个空的Excel文件

         Workbook wb=new HSSFWorkbook(new FileInputStream(file));//读取一个已经存在的Excel文件

      Sheet可由Workbook创建和得到

         Sheet s=wb.createSheet(sheet);//创建一个名为sheet的表单

         HSSFSheet sheet = wb.getSheetAt(0);//得到第一个seet表单,也可以通过表单名字得到

      Row由Sheet创建和得到

         Row r=s.createRow(row);//新创建一行,行号为row+1

         HSSFRow row = sheet.getRow(n);//得到一行,从0开始

      Cell有Row创建和得到

         Cell c=r.createCell(col);//创建一个单元格,列号为col+1

         row.getCell(n)// 得到一个单元格,从0开始

      最后就可以通过c.setCellValue(value)向单元格填充内容即可

 

单元格可以是各种类型,类型如下

static int CELL_TYPE_BLANK            Blank Cell type (3)
static int CELL_TYPE_BOOLEAN           Boolean Cell type (4)
static int CELL_TYPE_ERROR           Error Cell type (5)
static int CELL_TYPE_FORMULA           Formula Cell type (2)
static int CELL_TYPE_NUMERIC           Numeric Cell type (0)
static int CELL_TYPE_STRING           String Cell type (1)


例子:如下代码是得到指定的XLS文件中第一个sheet的第一个列数据,要求数据类型是文本类型。

 


 public  List<String> readExcel(String path) throws Exception {
  List<String> list = new ArrayList<String>();
 

 try {
   FileInputStream fis = new FileInputStream(path);   
   HSSFWorkbook wb = new HSSFWorkbook(fis);


//   int sheetCount = wb.getNumberOfSheets();//得到有个sheet
 
   HSSFSheet sheet = wb.getSheetAt(0);//得到一个sheet
  
   for (int i = 0; i < sheet.getLastRowNum(); i++) {
   
    HSSFRow row = sheet.getRow(i);
   
    if(row.getCell(0).getCellType()==1){//表示文本类型
    
    list.add(row.getCell(0).getRichStringCellValue().toString());
    
    }else if(row.getCell(0).getCellType()!=3){
     throw new Exception("电子表格中存储的不是文本格式,请修改电子表格中的格式");
    }
   
                   
   }
  
  } catch (FileNotFoundException e) {
   e.printStackTrace();
    } catch (IOException e) {
   e.printStackTrace();
    }
    return list;

}

作者:文虹,欢迎来到我的博客http://winnernoom.iteye.com/

你可能感兴趣的:(C++,c,Excel,网络应用,C#)