java中利用jxl包对Excel文件进行修改保存
2016-03-24 20:00
453 查看
今天做了一个小任务,可是对于我来说却完全摸不着头脑,因为是第一次接触,以前都没听过,所以感觉非常不可思议!具体的任务见下图:
![](http://img.blog.csdn.net/20160325143030887?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果是一个表的话还好办,(刚开始没想到办法,就一行一行的展开,有几千条数据,就算是这样半个多小时才完成一个)可是现在有十五批,感觉就很无奈了,一不留神可能就会排错,后来,我在网上查资料看能有什么快捷的办法,无意中看到很多花哨的java对excel的修改,有什么字体大小、颜色的设置,边框的设置等,看得头都晕了。(太花哨,掩盖了主体)后来仔细沉下心来,弄明白了一点,下面我来讲解一下我的思路:对Excel表的修改,无非就是1、打开表;2、读取表中数据;3、新建一个表;4、对读取到的数据进行操作保存到新表中。在这所有步骤前,先到网上下载一个jxl.jar包
![](http://img.blog.csdn.net/20160325143058120?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
完成包的导入后进行java代码的编写:
最终实现的效果,可以在F盘下找到新建的表:
如果是一个表的话还好办,(刚开始没想到办法,就一行一行的展开,有几千条数据,就算是这样半个多小时才完成一个)可是现在有十五批,感觉就很无奈了,一不留神可能就会排错,后来,我在网上查资料看能有什么快捷的办法,无意中看到很多花哨的java对excel的修改,有什么字体大小、颜色的设置,边框的设置等,看得头都晕了。(太花哨,掩盖了主体)后来仔细沉下心来,弄明白了一点,下面我来讲解一下我的思路:对Excel表的修改,无非就是1、打开表;2、读取表中数据;3、新建一个表;4、对读取到的数据进行操作保存到新表中。在这所有步骤前,先到网上下载一个jxl.jar包
完成包的导入后进行java代码的编写:
import java.io.File; import jxl.Cell; import jxl.NumberCell; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** *@author 王能斌 *基本的对Excel表的操作 * */ public class ExcelHanldle { public static void main(String[] args) { try { //找到需要修改的表 Workbook wb = Workbook.getWorkbook(new File("G:/2016铅球.xls")); //找到表中的第一个sheet Sheet read= wb.getSheet(0); //获取表的列数 int rows = read.getRows(); //新建要写入数据的表,并指定路径 WritableWorkbook book = Workbook.createWorkbook( new File("F:/第一批.xls")); //第几个表被创建 WritableSheet sheet = book.createSheet("体育项目", 0); //添加新表各列字段 【new Lable(列,行,数据)】不要弄混了 sheet.addCell(new Label(0, 0, "机器号")); sheet.addCell(new Label(1, 0, "批次")); sheet.addCell(new Label(2, 0, "节次")); sheet.addCell(new Label(3, 0, "组次")); sheet.addCell(new Label(4, 0, "密号")); sheet.addCell(new Label(5, 0, "性别")); int total = 1; //下面是我这个任务具体实现的算法,可以看看 for(int i = 1; i < rows ; i++){ int name = (int) ((NumberCell)read.getCell(0,i)).getValue(); String pc = read.getCell(1,i).getContents(); int jc = (int) ((NumberCell)read.getCell(2,i)).getValue(); int zc = (int) ((NumberCell)read.getCell(3,i)).getValue(); Cell c4 = read.getCell(4,i); Cell c5 = read.getCell(5,i); String sex = read.getCell(6,i).getContents(); int a = Integer.parseInt(c4.getContents()); int b = Integer.parseInt(c5.getContents()); int sum = b - a + 1; //循环往第一个表中拿出数据添加到新建表 for(int k = total; k < (total + sum) ; k++){ //添加数字类型的数据(getContents()得到的是String类型的数据) Number nam = new Number(0, k, name); sheet.addCell(nam); sheet.addCell(new Label(1,k,pc)); Number jie = new Number(2, k, jc); sheet.addCell(jie); Number zu = new Number(3, k, zc); sheet.addCell(zu); sheet.addCell(new Label(4,k,"0" + a++)); sheet.addCell(new Label(5,k,sex)); } total += sum ; } //表的写入 book.write(); //关闭 book.close(); } catch (Exception e) { e.printStackTrace(); } } }
最终实现的效果,可以在F盘下找到新建的表:
相关文章推荐
- eclipse安装svn
- Spring DI模式 小样例
- spring+mybatis使用事务管理不生效原因分析
- activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型
- activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型
- Spring开发-spring入门
- Java 华为推送 Access Token过期刷新
- java回顾篇——进制转换,变量,数据类型的转换,运算符
- java7自动资源管理
- JAVA的POI操作Excel
- bug_ _java.lang.RuntimeException: Unable to start activity ComponentInfo{包名/类名}
- java并发:线程同步机制之Lock
- 【JAVA】导出jar包时,Class files on classpath not found
- java Collection概述
- java回顾篇——关键字,标志符,注释,常量
- Spring定时调度任务实现方式
- java方法签名中参数和返回类型字母含义
- 使用java通过Get请求进行爬虫操作
- java NIO 和阻塞I/O的区别
- Java的abstract类和abstract方法