实验简介
Excel文件是比较常用的一种数据存储格式,通过标准的行列式二维表的形式来进行存储。其实熟悉了Excel表格的数据格式,我们对后续操作XML,操作数据库等均有了基础。
实验目的
1.掌握使用jxl组件对Excel进行读写。
实验流程
1.下载jxl的 jar包。
http://www.manyjar.com 搜索jxl,下载即可。jar包是一个压缩文件,通常用于发布java的.class二进制文件(即源代码编译过后的字节码文件,是可以直接运行的文件)。通常第三方组件的发布使用jar文件,我们自己的源代码,也可以导入为jar文件供别人使用,我们可以选择将源代码一直导出或者只导出编译过后的字节码文件,用于保护自己源代码的版权。
2.在项目中引入jar包。
(1).在JavaCore项目根目录下,创建一个目录:lib,用于保存所有第三方的jar包。
(2).将上述下载回来的jar文件复制到lib目录下,笔者导入的jar包版本为:jxl-2.6.12.jar。
(3).在Eclipse中,在项目JavaCore上右键,点击“Refresh”刷新目录结构,确保lib目录中的jar文件出现在项目目录中。
(4).在项目JavaCore上右键,点击“Properties”,打开项目属性对话框,进入“Java Build Path”节点。进入到“Libraries”标签页。
(5) 点击“Add Jar”按钮,浏览到对应的jar文件,点击“确定”即可。
3.准备一个Excel文件。
我们同样在项目的data目录下准备一个标准的二维Excel表格数据,保存为Studets.xls,内容如下:
4.使用jxl读取Excel
需要导入的包如下:
import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; |
读取Excel,遍历整个数据的代码:
// 遍历整个表格的内容并将其按原格式输出 public void readExcelByJxl(String fileName){ File file = new File(fileName); try{ FileInputStream fis = new FileInputStream(file); jxl.Workbook rwb = Workbook.getWorkbook(fis); // 获取到Excel中所有的Sheet Sheet[] sheet = rwb.getSheets(); for (int i = 0; i < sheet.length; i++) { // 获取到当前的Sheet Sheet rs = rwb.getSheet(i); // 遍历当前Sheet中的行 for (int j = 0; j < rs.getRows(); j++) { Cell[] cells = rs.getRow(j); // 遍历当前行中的每一列 for(int k=0;k<cells.length;k++) { System.out.print(cells[k].getContents()); System.out.print("\t"); } System.out.println(); } } fis.close(); }catch(Exception e){ e.printStackTrace(); } } |
调用代码:
public static void main(String[] args) { ExcelReadWrite erw = new ExcelReadWrite(); String path = System.getProperty("user.dir"); erw.readExcelByJxl(path + "\\data\\Students.xls"); } |
5.使用jxl写入Excel。
// 创建一张Excel表格 private void writeExcelByJxl(){ WritableWorkbook book = null; String info[] = {"序号","学号","姓名","性别","年龄","学历","学校"}; try{ // 创建一个Excel表格 String fileName = System.getProperty("user.dir") + "\\data\\NewStudents.xls"; book = Workbook.createWorkbook(new File(fileName));
// 创建一张Sheet,或者使用book.getSheet(i)取得一张现有的Sheet WritableSheet sheet = book.createSheet("NewStudents.xls", 0);
// 添加表头 for(int j=0;j<7;j++){ Label label = new Label(j, 0, info[j]); sheet.addCell(label); }
// 为表格添加一条新的记录 sheet.addCell(new Label(0, 1, "1")); sheet.addCell(new Label(1, 1, "WNCD201703015")); sheet.addCell(new Label(2, 1, "敬越")); sheet.addCell(new Label(3, 1, "男")); sheet.addCell(new Label(4, 1, "24")); sheet.addCell(new Label(5, 1, "本科")); sheet.addCell(new Label(6, 1, "电子科技大学成都学院"));
// 写入数据并关闭文件 book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } |
6.使用jxl修改Excel。
修改的操作与写入的操作非常类似,只是打开文件的方式不同而已。如下下述代码,修改Students.xls这张表格的第3行第6列的值。
private void modifyExcelByJxl(){ try{ String fileName = System.getProperty("user.dir") + "\\data\\Students.xls"; //获得Excel文件 Workbook wb = Workbook.getWorkbook(new File(fileName)); //打开一个文件副本,并且指定数据写回到原文件 WritableWorkbook book = Workbook.createWorkbook(new File(fileName), wb); //打开目标Sheet WritableSheet sheet = book.getSheet(0); sheet.addCell(new Label(5, 3, "研究生")); // 写入数据并关闭文件 book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } |
思考练习
1.利用jxl操作Excel完成WoniuATM的用户注册与登录验证。
2.自学使用poi组件完成对Excel的操作。