所以今天这篇博客是继续那个主体来说,因为权限管理项目里面涉及到了批量导入的功能,我的上篇博客也对这个功能业务单元细分了几个小问题,其中一个就是要会利用jxl包中的类来读取excel中的数据,
所以今天就说说如果利用这个包中的类来读取excel的数据。当把我下面说的几个方法学会了之后,我想读取excel数据是非常简单的。
先说一下jxl包,它是通过java操作excel表格的工具类库,并不依赖windows系统平台。
这里我仅仅介绍一下jxl这个包中的几个比较重要的类,因为会了这几个我感觉一般的问题就能够解决,如果还想继续深入的话,可以下载jxl.jar并且进行深入研究,写几个DEMO就能够掌握。
先说一下,Workbook类提供的方法:
1.intgetNumberOfSheets();获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
int sheets = rwb.getNumberOfSheets();
- int sheets = rwb.getNumberOfSheets();
2.Sheet[]getSheets();返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb2 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb2 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();
- Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();
3.StringgetVersion();返回正在使用的API的版本号,好像是没什么太大的作用。示例:
jxl.Workbook rwb3 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb3 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
String apiVersion = rwb3.getVersion();
- String apiVersion = rwb3.getVersion();
在说一下,Sheet接口提供的方法
1. StringgetName();获取Sheet的名称,示例:
jxl.Workbook rwb4 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb4 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs = rwb4.getSheet(0);
- jxl.Sheet rs = rwb4.getSheet(0);
String sheetName = rs.getName();
- String sheetName = rs.getName();
2.intgetColumns();获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb5 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb5 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs2 = rwb5.getSheet(0);
- jxl.Sheet rs2 = rwb5.getSheet(0);
int rsColumns = rs2.getColumns();
- int rsColumns = rs2.getColumns();
3.Cell[]getColumn(int column)获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb6 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb6 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs3 = rwb6.getSheet(0);
- jxl.Sheet rs3 = rwb6.getSheet(0);
Cell[] cell = rs3.getColumn(0);
- Cell[] cell = rs3.getColumn(0);
4.intgetRows()获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb7 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb7 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs4 = rwb7.getSheet(0);
- jxl.Sheet rs4 = rwb7.getSheet(0);
int rsRows = rs4.getRows();
- int rsRows = rs4.getRows();
5.Cell[]getRow(int row)获取某一行的所有单元格,返回的是单元格对象数组,示例子:
jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(newFile("D:/user.xls"));
- jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(newFile("D:/user.xls"));
jxl.Sheet rs5 = rwb8.getSheet(0);
- jxl.Sheet rs5 = rwb8.getSheet(0);
Cell[] cell5 = rs5.getRow(0);
- Cell[] cell5 = rs5.getRow(0);
6.CellgetCell(int column, int row);获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,示例:
jxl.Workbook rwb9 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
- jxl.Workbook rwb9 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs6 = rwb9.getSheet(0);
- jxl.Sheet rs6 = rwb9.getSheet(0);
Cell cell6 = rs6.getCell(0, 0);
- Cell cell6 = rs6.getCell(0, 0);
有了这些知识之后我们可以做一个简单的demo,经过这个demo之后那么我们就知道怎么用java读取excel表中的数据了。
Demo--代码:
- public class aaa {
- public static void main(String [] args){
- InputStream is;
- try {
- is = new FileInputStream("C:/Users/CJQ/Desktop/页面模版.xls");
- jxl.Workbook rwb = Workbook.getWorkbook(is);
- Sheet rsModule=rwb.getSheet(1);
- int [] orders= new int[rsModule.getRows()-1];
- for(int rsModuleIndex=1;rsModuleIndex<rsModule.getRows();rsModuleIndex++){
- Cell[] cellModule = rsModule.getRow(rsModuleIndex);
- orders[rsModuleIndex-1]=Integer.parseInt(cellModule[3].getContents());
- }
- for(int i=0;i<orders.length;i++){
- System.out.println(orders[i]);
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (BiffException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
Demo--excel表单:
Demo--运行结果截图:
通过这篇博客的讲解,我感觉java读取excel表的问题迎刃而解了,这个问题解决了,那个批量导入的功能也就解决了一部分小问题,等待其他小问题解决了之后,整个的批量导入的功能也就迎刃而解了。大道至简,运用到实践中。