您的位置:首页 > 编程语言 > Java开发

java中利用jxl包对Excel文件进行修改保存

2016-03-24 20:00 453 查看
今天做了一个小任务,可是对于我来说却完全摸不着头脑,因为是第一次接触,以前都没听过,所以感觉非常不可思议!具体的任务见下图:



如果是一个表的话还好办,(刚开始没想到办法,就一行一行的展开,有几千条数据,就算是这样半个多小时才完成一个)可是现在有十五批,感觉就很无奈了,一不留神可能就会排错,后来,我在网上查资料看能有什么快捷的办法,无意中看到很多花哨的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盘下找到新建的表:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: