`
yuantong
  • 浏览: 24778 次
  • 性别: Icon_minigender_1
  • 来自: 创新工场
社区版块
存档分类
最新评论

使用jxl读写Excel文件

阅读更多

前几天潜水时看到一篇关于介绍使用Java语言实现读写Excel文件的文章,感觉不太通俗易懂,终于按耐不住,决定自己动手简单讲解使用操作Excel的常用第三方工具包jxl来实现对Excel文件的读写。

我们先看一下读的操作:

/**
	 * 读
	 * @param file 欲读取的Excel文件的路径
	 * @return
	 * @throws Exception
	 */
	public static String read(File file) throws Exception {
		StringBuffer sb = new StringBuffer();
		
		Workbook wb = null;
		try {
			// 获取工作簿对象
			wb = Workbook.getWorkbook(file);
			if (wb != null) {
				// 获取工作簿对象就可以获取工作簿内的工作表对象
				Sheet[] sheets = wb.getSheets();
				if (sheets != null && sheets.length != 0) {
					// 遍历工作簿内所有工作表
					for (int i=0;i<sheets.length;i++) {
						// 获取该工作表内的行数
						int rows = sheets[i].getRows();
						// 遍历行
						for (int j=0;j<rows;j++) {
							// 获取当前行的所有单元格
							Cell[] cells = sheets[i].getRow(j);
							if (cells != null && cells.length != 0) {
								// 遍历单元格
								for (int k=0;k<cells.length;k++) {
									// 获取当前单元格的值
									String cell = cells[k].getContents();
									// 缩进
									sb.append(cell + "\t");
								}
								sb.append("\t\n");
							}
						}
						sb.append("\t\n");
					}
				}
				System.out.println("成功读取了:" + file + "\n");
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		} finally {
			wb.close();
		}
		return sb.toString();
	}

方法的返回类型是一个String,我定义了一个StringBuffer对象,大家知道StringBuffer上的主要操作是 appendinsert 方法,可以重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端,这样的话我们在接受返回值的时候就可以方便的取到被转换成String类型的数据了。首先我们通过传入的欲读取文件路径,获取工作簿对象,获取工作簿对象之后,我们就可以轻而易举的取到该工作簿内的所有的工作表了,我们声明一个工作表类型的数组:Sheet[] sheets = wb.getSheets()以便遍历得到每个工作表内的行数,之后就是行内的单元格,单元格再到单元格内的值,整个步骤都是按从大到小的顺利来的,可以说一气呵成,短短的几个循环,搞定。

接下来我们看写的操作:

/**
	 * 写
	 * @param fileName 被写入的Excel文件的路径
	 * @param sheetName 被写入的Excel文件的工作表
	 * @param location 被写入的Excel文件的工作表位于工作簿的位置
	 * @throws Exception
	 */
	public static void write(String fileName, String sheetName, int location) throws Exception {
		WritableWorkbook wwb = null;
		Label label = null;
		
		try {
			// 创建可写入的工作簿对象
			wwb = Workbook.createWorkbook(new File(fileName));
			if (wwb != null) {
				// 在工作簿里创建可写入的工作表,第一个参数为工作表名,第二个参数为该工作表的所在位置
				WritableSheet ws = wwb.createSheet(sheetName, location);
				if (ws != null) {
					/* 添加表结构 */
					// 行
					for (int i=0;i<5;i++) {
						// 列
						for (int j=0;j<5;j++) {
							// Label构造器中有三个参数,第一个为列,第二个为行,第三个则为单元格填充的内容
							label = new Label(j, i, "第"+(i+1)+"行," + "第"+(j+1)+"列");
							// 将被写入数据的单元格添加到工作表
							ws.addCell(label);
						}
					}
					// 从内存中写入到文件
					wwb.write();
				}
				System.out.println("路径为:" + fileName + "的工作簿写入数据成功!");
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		} finally {
			wwb.close();
		}
	}

 我们看到在方法首行定义了一个WritableWorkbook 对象,WritableWorkbook 实际上就是一个写工作簿对象,同样我们要先获取一个工作簿,传入的文件路径,将欲读取的文件赋给WritableWorkbook 对象,这样我们就可以获取工作簿内的工作表了,得到工作表就好办了,我们通过调用WritableWorkbook 对象的createSheet()方法,传入工作表名和该表的所在位置,成功得到工作表后就开始在该工作表内添加表结构,这里我写的是五行五列,可以根据自己的实际要求改一下就OK,那么Label是一个什么东西呢?Label实际上就是一个填充单元格的对象,通过指定的行和列及需要填充的内容,最后将被写入数据的单元格添加到工作表中就大功告成了。最后一步调用WritableWorkbook 的write()方法将写入内存的数据写入到文件即可。Over!!!

下面是测试类:

package org.yt.jxl.excelDemo;

import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
 * 执行对Excel文件的读写操作
 * @author 袁通
 */
public class ExcelDemo {
        public static void main(String[] args) {
		/* 测试读取(注意:文件路径中的盘符D:/,注意斜杠不要写成反斜杠"\") */
  // 如果不存在该文件,返回空并抛出异常
  /*File file = new File("D:/testRead.xls");
  try {
    System.out.println(read(file));
  } catch (Exception e) {
    System.out.println(e.getMessage());
  }*/  
  /* 测试写入(注意:如果进程中正在运行被写入的文件,将抛出异常) */
  try {
   // 如果不存在该文件,程序将新建一个同名文件
   write("D:/testWrite.xls", "Sheet1", 0);
  } catch (Exception e) {
   System.out.println(e.getMessage()); 
  }	
}

 

分享到:
评论
14 楼 mycybyb 2009-11-28  
Excel读取,内存占用才是最重要的问题
13 楼 keating 2009-11-28  
yuantong 写道
keating 写道
介个教程有点简单,不妨弄弄合并单元格、单元格style等,我一般用poi~

poi挺不错,您觉得这个文章讲的如何:http://05150212.iteye.com/blog/353433

恩好文,都是常用的功能,直接去apache poi看也不错,有例子和api
12 楼 yuantong 2009-11-28  
keating 写道
介个教程有点简单,不妨弄弄合并单元格、单元格style等,我一般用poi~

poi挺不错,您觉得这个文章讲的如何:http://05150212.iteye.com/blog/353433
11 楼 keating 2009-11-28  
介个教程有点简单,不妨弄弄合并单元格、单元格style等,我一般用poi~
10 楼 yuantong 2009-11-28  
GRDJE 写道
yuantong 写道
mycybyb 写道
GRDJE 写道
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?

不是。

想请教一下您,哪个才是jxls?或者说jxls是什么?

拜托, google没被墙吧, 实在不行baidu也凑合

出门在外不用谷歌百度还活不成了?我就想让您跟我解释
9 楼 GRDJE 2009-11-27  
yuantong 写道
mycybyb 写道
GRDJE 写道
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?

不是。

想请教一下您,哪个才是jxls?或者说jxls是什么?

拜托, google没被墙吧, 实在不行baidu也凑合
8 楼 smildlzj 2009-11-27  
yuantong 写道
mycybyb 写道
GRDJE 写道
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?

不是。

想请教一下您,哪个才是jxls?或者说jxls是什么?


有问题...baidu一下..

PS:jxls也不是很强大..现在用得很局限...
7 楼 zhangyou1010 2009-11-27  
感觉还是比较简单,不知一般写excel的报表是不是用这种方法。
6 楼 yuantong 2009-11-27  
mycybyb 写道
GRDJE 写道
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?

不是。

想请教一下您,哪个才是jxls?或者说jxls是什么?
5 楼 mycybyb 2009-11-27  
GRDJE 写道
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?

不是。
4 楼 GRDJE 2009-11-27  
yuantong 写道
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊

是吗?
3 楼 yuantong 2009-11-27  
adamzhao 写道
可以试一下jxls,简单强大

这就是jxls啊
2 楼 adamzhao 2009-11-27  
可以试一下jxls,简单强大
1 楼 fengsky491 2009-11-27  
学习    

相关推荐

    java利用jxl读取excel文件

    使用`jxl`库读取Excel文件主要涉及以下步骤: 1. **导入必要的库**:在Java源代码中,你需要导入`jxl`相关的包。例如: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; ...

    JXL 读取EXCEL

    由于提供的压缩包子文件名是"readExcel",我们可以假设这个文件可能包含了一个简单的Java程序,用于演示如何使用JXL读取Excel文件。如果你想要进一步了解或调试这个例子,可以解压文件并运行其中的代码。 总的来说...

    java使用jxl打印excel报表文件

    JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...

    JXL读写EXCEL示例

    读取Excel文件: 1. 创建一个`Workbook`对象:这是JXL中的核心类,代表整个Excel工作簿。你可以通过`Workbook.getWorkbook(File)`方法打开一个现有的Excel文件。 ```java File excelFile = new File("path_to_your_...

    JXL读写Excel小例子

    读取Excel文件同样简单。以下代码演示了如何打开一个已存在的Excel文件并读取其内容: ```java import jxl.Workbook; import jxl.Sheet; import jxl.Cell; import jxl.read.biff.BiffException; import java.io....

    用jxl下载excel文件

    一旦文件下载完成,我们可以使用JXL库来读取Excel文件中的数据。下面是一些基本的操作示例: ##### 加载工作簿 ```java Workbook workbook = Workbook.getWorkbook(new File("path/to/file.xls")); ``` ##### 获取...

    jxl读取Excel文件

    《使用JXL库读取Excel文件详解》 在IT领域,数据处理是不可或缺的一部分,而Excel作为常用的电子表格工具,其文件格式(如.xls或.xlsx)在数据交换中扮演着重要角色。Java作为一种广泛使用的编程语言,对于处理...

    ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容

    以下是一个使用JXL读取Excel文件的示例: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write....

    jxl读写excel数据,输出图片

    使用JXL,我们可以读取Excel文件中的数据,包括文本、数字、日期等。以下是一个简单的示例,展示如何读取Excel文件: ```java WritableWorkbook workbook = Workbook.getWorkbook(new File("input.xls")); Sheet ...

    利用jxl操作excel文件

    2. **读取Excel文件**:使用`Workbook`类的静态方法`Workbook.getWorkbook(File file)`来打开一个Excel文件。`Workbook`对象代表整个Excel文件,可以从中获取`Sheet`对象,每个`Sheet`代表一个工作表。 ```java ...

    JXL读写Excel源码

    在Android开发中,JXL可以帮助我们创建、更新或读取Excel文件,这对于数据存储、报告生成或测试自动化等场景非常有用。 在描述中提到,由于作者正在从事安卓测试工作,所以回顾并使用了JXL。尽管Android原生并不...

    使用jxl读取Excel表格数据

    要开始读取Excel文件,首先需要导入必要的jxl库: ```java import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; ``` 接着,你可以使用以下代码打开一个Excel文件: ```java ...

    jxl操作excel文件例子

    1. **读取Excel文件**:你可以使用`Workbook`类的`read(File)`方法打开一个Excel文件。然后,通过`getSheets()`获取工作簿中的所有工作表,进一步使用`getSheet(int index)`获取指定索引的工作表。工作表中的数据...

    jxl操作excel文件

    读取Excel文件 ```java package test; import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ReadExcel { public static void main(String args[]) { try { // 打开 ...

    使用jxl解析excel(.xls)固定模板(智联简历为例)

    3. **解析保存**:使用JXL库读取并解析Excel文件。以下是一个简单的示例代码片段,展示如何打开文件并遍历工作表: ```java Workbook workbook = Workbook.getWorkbook(new File("path_to_your_excel_file")); ...

    JXL(Java操作Excel文件Oracle数据库)

    以下是一个简单的示例,展示如何使用JXL读取Excel文件: ```java import jxl.*; public class ExcelReader { public static void main(String[] args) { try { Workbook workbook = Workbook.getWorkbook(new ...

    jxl的excel读写操作

    2. **读取Excel文件** 使用`Workbook`类来打开Excel文件。以下是一个基本示例: ```java Workbook workbook = Workbook.getWorkbook(new File("yourfile.xls")); Sheet sheet = workbook.getSheet(0); // 获取第...

    使用jxl操作Excel

    3. **ReadExcel.java**:此文件展示了如何读取Excel文件的内容。在`jxl`中,读取Excel主要涉及: - 使用`WorkbookSettings`和`Workbook`类打开Excel文件。 - 获取工作表(`Sheet`)对象。 - 遍历工作表中的行和列...

    jxl实现excel的读取和写入 jar包

    使用jxl读取Excel文件,首先需要引入jxl-2.6.12.jar包。以下是一个简单的读取示例: ```java import jxl.*; public class ExcelReader { public static void main(String[] args) { try { Workbook workbook = ...

Global site tag (gtag.js) - Google Analytics