从java读取Excel继续说大道至简 .

在上一篇博客《从复杂到简单,大道至简》中说道我们要把复杂的问题简单化,也就是要把问题细分,让大问题变成小问题,这样解决起来会相对容易,当我们把容易的小问题解决掉了,大问题自动就会迎刃而解。


       所以今天这篇博客是继续那个主体来说,因为权限管理项目里面涉及到了批量导入的功能,我的上篇博客也对这个功能业务单元细分了几个小问题,其中一个就是要会利用jxl包中的类来读取excel中的数据,


       所以今天就说说如果利用这个包中的类来读取excel的数据。当把我下面说的几个方法学会了之后,我想读取excel数据是非常简单的。


       先说一下jxl包,它是通过java操作excel表格的工具类库,并不依赖windows系统平台。

        这里我仅仅介绍一下jxl这个包中的几个比较重要的类,因为会了这几个我感觉一般的问题就能够解决,如果还想继续深入的话,可以下载jxl.jar并且进行深入研究,写几个DEMO就能够掌握。


         先说一下,Workbook类提供的方法:


1.intgetNumberOfSheets();获得工作薄(Workbook)中工作表(Sheet)的个数,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. int sheets = rwb.getNumberOfSheets();  
int sheets = rwb.getNumberOfSheets();

2.Sheet[]getSheets();返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb2 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb2 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();  
Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();

3.StringgetVersion();返回正在使用的API的版本号,好像是没什么太大的作用。示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb3 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb3 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. String apiVersion = rwb3.getVersion();  
String apiVersion = rwb3.getVersion();

         在说一下,Sheet接口提供的方法


1. StringgetName();获取Sheet的名称,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb4 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb4 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs = rwb4.getSheet(0);  
jxl.Sheet rs = rwb4.getSheet(0);
[java] view plaincopyprint?
  1. String sheetName = rs.getName();  
String sheetName = rs.getName();

2.intgetColumns();获取Sheet表中所包含的总列数,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb5 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb5 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs2 = rwb5.getSheet(0);  
jxl.Sheet rs2 = rwb5.getSheet(0);
[java] view plaincopyprint?
  1. int rsColumns = rs2.getColumns();  
int rsColumns = rs2.getColumns();

3.Cell[]getColumn(int column)获取某一列的所有单元格,返回的是单元格对象数组,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb6 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb6 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs3 = rwb6.getSheet(0);  
jxl.Sheet rs3 = rwb6.getSheet(0);
[java] view plaincopyprint?
  1. Cell[] cell = rs3.getColumn(0);  
Cell[] cell = rs3.getColumn(0);

4.intgetRows()获取Sheet表中所包含的总行数,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb7 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb7 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs4 = rwb7.getSheet(0);  
jxl.Sheet rs4 = rwb7.getSheet(0);
[java] view plaincopyprint?
  1. int rsRows = rs4.getRows();  
int rsRows = rs4.getRows();

5.Cell[]getRow(int row)获取某一行的所有单元格,返回的是单元格对象数组,示例子:

[java] view plaincopyprint?
  1. jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(newFile("D:/user.xls"));  
jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(newFile("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs5 = rwb8.getSheet(0);  
jxl.Sheet rs5 = rwb8.getSheet(0);
[java] view plaincopyprint?
  1. Cell[] cell5 = rs5.getRow(0);  
Cell[] cell5 = rs5.getRow(0);

6.CellgetCell(int column, int row);获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,示例:

[java] view plaincopyprint?
  1. jxl.Workbook rwb9 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));  
jxl.Workbook rwb9 =jxl.Workbook.getWorkbook(new File("D:/user.xls"));
[java] view plaincopyprint?
  1. jxl.Sheet rs6 = rwb9.getSheet(0);  
jxl.Sheet rs6 = rwb9.getSheet(0);
[java] view plaincopyprint?
  1. Cell cell6 = rs6.getCell(00);  
Cell cell6 = rs6.getCell(0, 0);


        有了这些知识之后我们可以做一个简单的demo,经过这个demo之后那么我们就知道怎么用java读取excel表中的数据了。


        Demo--代码:

[java] view plaincopyprint?
  1. public class aaa {  
  2.     public static void main(String [] args){  
  3.         InputStream is;  
  4.             try {  
  5.                 is = new FileInputStream("C:/Users/CJQ/Desktop/页面模版.xls");  
  6.               
  7.             jxl.Workbook rwb = Workbook.getWorkbook(is);  
  8.               
  9.             Sheet rsModule=rwb.getSheet(1);  
  10.             int [] orders= new int[rsModule.getRows()-1];  
  11.             for(int rsModuleIndex=1;rsModuleIndex<rsModule.getRows();rsModuleIndex++){  
  12.                 Cell[] cellModule = rsModule.getRow(rsModuleIndex);  
  13.                 orders[rsModuleIndex-1]=Integer.parseInt(cellModule[3].getContents());  
  14.             }  
  15.   
  16.             for(int i=0;i<orders.length;i++){  
  17.                 System.out.println(orders[i]);  
  18.             }  
  19.   
  20.             } catch (FileNotFoundException e) {  
  21.                 // TODO Auto-generated catch block   
  22.                 e.printStackTrace();  
  23.             }   catch (BiffException e) {  
  24.                 // TODO Auto-generated catch block   
  25.                 e.printStackTrace();  
  26.             } catch (IOException e) {  
  27.                 // TODO Auto-generated catch block   
  28.                 e.printStackTrace();  
  29.             }  
  30.               
  31.     }  
  32. }  
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表的问题迎刃而解了,这个问题解决了,那个批量导入的功能也就解决了一部分小问题,等待其他小问题解决了之后,整个的批量导入的功能也就迎刃而解了。大道至简,运用到实践中。

转载于:https://www.cnblogs.com/javaTest/archive/2012/06/14/2589571.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java堆介绍

对于Java应用程序来说&#xff0c;Java堆&#xff08;Java Heap&#xff09;是虚拟机所管理的内存中最大的一块。Java堆是被所 有线程共享的一块内存区域&#xff0c;在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例&#xff0c;Java 世界里“几乎”所有的对象实例都…

推荐算法工程师的成长之道

推荐算法工程师的成长之道 原创&#xff1a; gongyouliu 大数据与人工智能 3月20日 源链接&#xff1a;原文地址 本文&#xff0c;作者会基于自己的实践经验讲述推荐算法工程师的成长之道&#xff0c;这里的“道”有发展路径和道(道理、方法论、经验、智慧)两层意思。 所以本文…

java电子商务源码解读 b2b2c o2o

大型企业分布式互联网电子商务平台&#xff0c;推出PC微信APP云服务的云商平台系统&#xff0c;其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 分布式、微服务、云架构电子商务平台 java b2b2c o2o 技术解决方案 开发语言&#xff1a; java、j2ee 数据库&#x…

jQuery上传插件-uploadify3.1使用说明

uploadify &#xff0c;简单实用的flash上传组件&#xff0c;兼容性良好。 现已有html5版本。 官方地址&#xff1a;http://www.uploadify.com/ 官方英文文档&#xff1a;http://www.uploadify.com/documentation/ Demos Download 使用方法(.net版本): 前台JS $("#id&q…

《关键对话——掌握关键对话》读书笔记(二)

《关键对话——掌握关键对话》读书笔记(二) 上一节中我们已经定义了关键对话&#xff0c;在面对关键对话时&#xff08;比如老板给你安排了一项非常不合适的任务&#xff09;&#xff0c;你的选择可能只有如下两种&#xff1a; 1.当面表示反对&#xff0c;把老板惹怒 2.沉默接…

信息流推荐多样性

信息流推荐多样性 一、问题现状 信息流产品中一个常见的问题是多样性越来越差&#xff0c;造成这种问题的原因在于机器学习算法本身。下面通过一副系统循环图来介绍多样性差的问题。 资讯库随机推荐文章&#xff0c;由于是按照全库比例采样&#xff0c;娱乐占比较大&#xf…

Robocode教程2——你的第一个robo,取个好名字哦

摘自&#xff1a;http://site.douban.com/widget/notes/7736245/note/210029011/ 你需要准备的东西&#xff1a;1.c语言的知识和一点点的java知识&#xff0c;robocode意在学习java&#xff0c;不要要太深的java水平&#xff0c;你只要理解java和c的区别就可以了。2.robocode A…

《关键对话——从“心”开始,如何确定目标》读书笔记(三)

从“心”开始&#xff0c;如何确定目标、 我们的问题并不是行为本身是错误的&#xff0c;而是我们的动机有问题&#xff0c;即我们常常弄错要面对的目标。 一、从心开始 对话高手总是能做到从心开始。在开展高风险对话时&#xff0c;他们总是首先明确目的和动机&#xff0c;无…

UI设计师的面试过程

Palantir Technologies是一家提供分析、整合、可视化各种数据的IT型技术公司。在该公司&#xff0c;前端工程师和后端工程师有同样的面试过程&#xff0c;前端工程师也需要的一定的编程基础。该公司技术博客Palantir TeckBlog日前发表了一篇博文《The UI Design Interview》&am…

C语言代码实现数组(简单)

前一节课讲了数组的删除功能实现&#xff1a;删除功能 本节课内容我们实现数组的反转功能和冒泡排序功能&#xff1a; #include <stdio.h> #include <string.h> #include <malloc.h> #include <stdlib.h>struct Arr{int * pBase; //存储数组第一个元…

数据在市场运营中的应用

数据在市场运营中的应用 1. 背景 目前的产品运营、用户拉新、渠道投放、留存等都是靠人工进行策略制定&#xff0c;有的公司和部门完全靠着以前的经验在尝试互联网产品的市场营销和运营。这样不仅效率很低&#xff0c;而且效果也不显著。 主要存在的问题有以下几点&#xff…

C语言的typedef用法

案例1&#xff1a; #include <stdio.h> #include <string.h> #include <malloc.h>typedef int zhangsan; //为int在多取一个名字 zhangsan等价于intstruct Student{int sid;char sname[100];char sex;} ST;int main() {int i 10; //等价于zhangsan i10…

信息流项目计划和思路

目录 一、对项目的认识. 4 1&#xff0e;用户需求和竞品. 4 2. 项目现状. 4 3. 发展前景. 4 二、项目的业务方向和思路. 6 1. 业务方向. 6 2. 2020年目标. 6 3. 思路. 6 3.1用户留存提升&#xff08;6%->12%&#xff09;. 6 3.2日活提升&#xff08;30万->80万…

MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中&#xff0c;N指的是字符的长度,VARCHAR类型最大支持65535,指的是65535个字节,但并不支持65535长度的varchar&#xff0c;65535中应该包含了所有字段的长度、变长字段长度标示…

数据结构链表知识入门

链表定义: n个节点离散分配&#xff0c; 彼此通过指针相连 每个节点只有一个前驱节点&#xff0c;每个节点只有一个后续节点 首节点没有前驱节点尾节点没有后续节点 专业术语: 首节点:第一个有效节点尾节点:最后一个有效节点头结点: 1&#xff0c;第一个有效节点之前的那个节…

《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)

《关键对话——注意观察&#xff0c;如何判断对话氛围是否安全》读书笔记(四) 在对话过程中&#xff0c;既要关注对话内容&#xff08;即讨论的主题&#xff09;&#xff0c;也要观察对话气氛&#xff08;即参与者的反应&#xff09;。越早意识到你和对方退出了对话机制&#x…

扬长避短使用Windbg和Visual Studio高效调试调试你的代码

扬长避短使用Windbg和Visual Studio高效调试调试你的代码 经常被问及这样的问题&#xff1a; 你为什么非要使用Windbg调试你的程序&#xff1f; 记得有一次面试的时候笔者也被问到这样的问题&#xff0c;我的回答是&#xff1a;不是我非要使用Windbg, 只是在不同的情况下使用不…

链表的分类

分类: 单链表 双链表:每一个节点有两个指针域 循环链表&#xff1a;能通过任何一个节点找到其他所有的结点 非循环链表 链表中第一个结点的存储位置叫做头指针&#xff0c;那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点&#xff0c;其实就是上一个的后继指…

机器学习基础笔记总结

最近在学习latex&#xff0c;将之前的机器学习基础知识相关的笔记用latex整理了以下&#xff0c;源地址如下&#xff1a; https://github.com/duankai/latex_book&#xff0c;感兴趣的可以自由下载&#xff0c;也可以随意使用latex的格式。 pdf 效果如下&#xff0c;文件可在h…