寒假以后在做移动的项目。关于权限控制了。最近移动的项目经理让我额外做一个简单系统实现。大概是这样的。
他给我两张暗访问卷的excel表格。让我将之弄成静态网页。然后做一个管理系统。登陆者有两类。一类是暗访者。就是提
交表格的。另外一类是管理员。对提交的数据进行管理。管理员把暗访者提交到数据库里面的数据导入到excel表格中。
然后实现远程下载。比如。服务器在武汉。暗访者在长沙登陆。提交完暗访问卷数据保存到武汉的数据库里。然后假如管理
员在广州登陆。通过执行操作将数据库里面的数据导入到武汉服务器里生成excel表格。然后。管理员可以进行下载。
其实整个流程蛮简单的。我使用xml作为数据库的。这样我觉得移动性比较强。和access差不多。要将从前天暗访者提交
的数据提交到xml数据库里面。我们需要借助一个开源包 dom4j。这个另外会写的。今天主要讲一下如何用jxl
操作excel表格。jxl 是java excel api 的简称。
官网 :http://www.andykhan.com/jexcelapi/tutorial.html#writing
这个开源包是韩国人写的。看来我们有理由相信,韩国人不止会整容和拍电视剧。而且会写程序。
当然解析excel文件的不止是有jxl这么一种开源包。还有另外一种叫做 poi 。这是apache公司的杰作。但是因为操作复
杂,代码量大的缘故。不压代码量小。操作简便。易懂易学的jxl而用户量比较小。我们在使用jxl进行操作之前首先要下载
一个叫做jxl.ar 的包。这个包在附件里面我会上传。下载完之后引入项目里面即可。
既然是操作 excel文件。那么免不了进行增删改查。
首先我们从简单的创建一个excel文件开始。
1.新创建一个excel文件。
/**
*
* createWorkbook(); 传入的是文件对象
*
*/
WritableWorkbook wb = Workbook.createWorkbook(new File("a.xls"));
WritableSheet ws = wb.createSheet("表一", 0);
// 传入一个标签对象,0 0表示1行1列。这里和数组的下标一样都是减一的;
Label la = new Label(0, 0, "第一个位置");
ws.addCell(la);
// 添加一个数字对象这儿的数字可以是整数也可以是浮点数。
Number n = new Number(0, 1, 2000.454);
ws.addCell(n);
wb.write();
// 千万别忘了关闭的情况
wb.close();
// 这样就算是简单的完成了一个写入的操作。
我们的excel是丰富多彩的。不仅仅是简单的文字之类的。我们还需要对文字加上字体和大小。
代码如下:
其实,逻辑很简单。我们是对单元格进行操作的,所以就有一个单元格格式对象WritableCellFormat
只要我们想改变某个单元格的相关格式。比如字体,大小颜色之类的。就在要加入的每种单元格对象后面加上单元格格式 对象。这样我们就可以改变这个单元格的格式了。而我们究竟要改变这个单元格的哪种格式。是字体还是图像还是颜色。那我们就必须交代清楚。这样WritableCellFormat对象传入到单元格对象就知道是具体改变那种格式了
WritableWorkbook wb= Workbook.createWorkbook(new File("a.xls"));
WritableSheet ws= wb.createSheet("表一", 0);
WritableFont wf=new WritableFont( WritableFont.ARIAL,20);
WritableCellFormat cf=new WritableCellFormat(wf);
//传入一个标签对象;
Label la=new Label(0,0,"第一个位置",cf);
ws.addCell(la);
//添加一个数字对象这儿的数字可以是整数也可以是浮点数。
Number n=new Number(0, 1, 2000.454,cf);
ws.addCell(n);
wb.write();
wb.close();
System.out.println("创建完成@!");
上述是生成excel文件的方法。
2.
读取excel的方法。这里有两种方法。一种是从文件里面读取。也就是我们很普遍的方法。另外一种方法是从输入流中读取。 先看事例。
这种方法直接读取:
Workbook wb=Workbook.getWorkbook(new File("a.xls"));
这种方法先将文件编程文件流。然后传入其中
java.io.InputStream in=new java.io.FileInputStream(new File("a.xls"));
Workbook wbb=Workbook.getWorkbook(in);
1.我们先来看看第一种情况。
直接读取
Workbook wb = null;
try {
wb = Workbook.getWorkbook(new File("a.xls"));
// 获取这个excel文件的第1个表;
Sheet sheet = wb.getSheet(0);
// 通过行和列值得到确定的单元格
for (int i = 0; i < 5; i++) {
Cell c = sheet.getCell(i, i);
// 可以直接读取单元格的内容。不管此单元格式什么类型的。字符串型的还是数字型的。还是标签性的。得到的内容都是字符串型的;
String content = c.getContents();
System.out.println("content" + content);
}
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
wb.close();
}
//另外一种就不是一锅端了。而是去判断每个单元格的类型;
Workbook wb = null;
try {
wb = Workbook.getWorkbook(new File("a.xls"));
// 获取这个excel文件的第1个表;
Sheet sheet = wb.getSheet(0);
// 通过行和列值得到确定的单元格
for (int i = 0; i < 5; i++) {
Cell c = sheet.getCell(i, i);
// 判断单元格的类型进行读取;
if (c.getType() == CellType.NUMBER) {
Number no = (Number) c;
System.out.println("no:" + no.getValue());
}
String content = c.getContents();
System.out.println("content" + content);
}
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
wb.close();
}
2.第二种读取文件的方式就不是根据文件名了。而是根据流来进行读取;
最好的例子是我们上传文件的情况。假如我们需要从客户端向浏览器端传送一个文件。那么我们就需要用到这个流对象来保存。
好比这么一个情形。我上传的excel文件在后台要生成对应的excel文件。那么我们最好的方式就是一边写入流。另一边服务器端写出流直接到某个excel文件。
我们的前端是下面的代码:
<body>
<form action="JxlServlet" enctype="multipart/form-data" method="post">
<input type=file name=file />
<input type=submit value='上传图片' />
</form>
</body>
我们会发现一个很神奇的东西 enctype="multipart/form-data" 这在我们以前好像没有加这个东西。那么这么个东西是干啥的呢?
请看下面详解:
application/x-www-form-urlencoded |
在发送前对所有字符进行编码(默认)。 |
multipart/form-data |
不对字符编码。当使用有文件上传控件的表单时,该值是必需的。 |
text/plain |
将空格转换为 "+" 符号,但不编码特殊字符。 |
也就是说我们默认是这种情况:
<form action="demo_post_enctype.asp"
method="post" enctype="application/x-www-form-urlencoded">
First name: <input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
<input type="submit" value="Submit" />
</form>
后台代码则是
要是不取出垃圾信息。就会报错。这个垃圾信息我也没有搞明白。希望知情人可以给出解答。
// 获取它的输入流;
ServletInputStream ins = request.getInputStream();
byte[] junk = new byte[1024];
int bytesRead = 0;
// the first four lines are request junk
// 去除掉垃圾信息。
bytesRead = ins.readLine(junk, 0, junk.length);
System.out.println(bytesRead);
bytesRead = ins.readLine(junk, 0, junk.length);
System.out.println(bytesRead);
bytesRead = ins.readLine(junk, 0, junk.length);
System.out.println(bytesRead);
bytesRead = ins.readLine(junk, 0, junk.length);
System.out.println(bytesRead);
try {
Workbook wb = Workbook.getWorkbook(ins);
System.out.println("对象创建成功!");
Sheet s = wb.getSheet(0);
for (int i = 0; i < 5; i++) {
Cell c = s.getCell(i, i);
String content = c.getContents();
System.out.println(content);
}
wb.close();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这就是两种读取excel文件的方式。
下一节讲述修改和复制excel文件的方式。
相关推荐
本文将围绕“浅谈jxl解析excel ——复制、修改excel表”这一主题,深入探讨JXL库的使用方法和关键知识点。 首先,JXL库提供了丰富的API,使得开发人员可以方便地操作Excel文件的各个部分,如工作表、单元格、样式等...
3. **解析保存**:使用JXL库读取并解析Excel文件。以下是一个简单的示例代码片段,展示如何打开文件并遍历工作表: ```java Workbook workbook = Workbook.getWorkbook(new File("path_to_your_excel_file")); ...
jxl库支持读取和写入Excel文件中的工作表、单元格、公式、样式等元素,同时也支持处理图像和图表。这个库简单易用,适合在Java项目中快速实现Excel文件的处理功能。 二、安装jxl库 要使用jxl库,首先需要将其添加到...
下面我们将深入探讨JXL库在Java Excel解析中的应用。 ### 1. JXL库介绍 JXL(Java Excel API)是一个开源的Java库,专门用于处理Microsoft Excel文件。它支持多种操作,如创建新的工作簿、读取现有工作簿、修改工作...
6. **读取Excel**:除了生成Excel文件,jxl还可以读取已有的Excel文件,将其内容转化为Java数据结构,便于处理和分析。 7. **示例代码**:通常,使用jxl的流程包括加载模板文件,找到要填充的单元格,使用`Cell....
本篇文章将深入探讨如何使用JXL库解析Excel 2003的文件,以此来帮助开发者们掌握这一技能。 JXL是一个开源的Java库,它允许Java程序读取、写入和操作Excel文件。在Excel 2003时代,文件格式通常是.XLS,JXL能够很好...
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
JavaExcel库,通常以jxl.jar的形式出现,是Java开发者用于读取和写入Microsoft Excel文件的一个强大工具。这个库提供了方便的API,使得在Java应用程序中操作Excel电子表格变得非常简单。它不仅支持基本的读写功能,...
在这个场景中,我们主要关注如何使用JXL库来解析Excel文件。首先,我们需要确保已经将JXL库引入到我们的项目中,这里提供的"jxl.jar"就是这个库的实现。 JXL库的使用步骤大致如下: 1. **导入依赖**:在Java项目中...
本篇文章将深入探讨如何使用JXL库来生成和读取Excel文件。 首先,让我们从生成Excel文件开始。在Java中,JXL库提供了丰富的API,使得创建工作簿、工作表以及单元格变得十分便捷。以下是一段简单的代码示例,演示了...
标题 "JXL 读取EXCEL" 涉及到的是使用Java Excel Library(简称JXL)这个开源库来处理Microsoft Excel文件。JXL是一个强大的工具,它允许开发者在Java程序中读取、写入和修改Excel文件。下面将详细介绍JXL库以及如何...
总之,利用jxl.jar库,开发者可以在Android应用中实现对Excel文件的全面操作,包括读取、写入以及处理隐藏表。通过理解并熟练运用jxl提供的API,你可以构建出功能强大的Excel处理工具,满足各种业务需求。但同时,要...
JXL和Apache POI是两个广泛使用的库,分别提供了对Excel文件的读取和生成的支持。本篇文章将深入探讨这两个库的使用方法及其特点。 首先,JXL是一个Java API,主要用于读写Excel 97-2003格式的工作簿,即.xls文件。...
总结来说,Java利用JXL库生成Excel文件是通过创建工作簿、工作表、单元格,并设置它们的属性和内容来实现的。JXL提供了广泛的API来处理各种复杂的Excel操作,是Java环境下生成Excel文件的一个实用工具。
Apache POI和JXL是两个流行的Java库,用于读取和写入Microsoft Office格式的文件,包括Excel(.xls和.xlsx)文件。下面将详细阐述这两个库在解析Excel时的应用及其相关知识点。 1. **Apache POI**: - **简介**:...
JXL 操作 EXCEL 的各个类的解析 JXL 操作 EXCEL 的各个类的解析是 Java 语言中操作 Excel 文件的主要方法之一。JXL 通过提供了多种类来实现对 Excel 文件的读写操作。 首先,JXL 提供了一个抽象类 Workbook,该类...
JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...
`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库在导出Excel时添加水印,以及涉及的核心类`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`。 `...
JXL库提供了方便的API,使得开发者可以轻松地处理Excel数据,包括读取单元格内容、修改工作表、添加公式,以及本文重点讨论的——插入和输出图片。 **一、JXL库介绍** JXL是一个开源的Java库,专门用于处理Excel...
jxl库支持多种Excel操作,包括创建新的工作簿、添加工作表、设置单元格格式、插入公式以及读取Excel数据。这个库的使用极大地简化了在Java中处理Excel文件的工作流程。 在描述中提到的"txt转为excel Demo",这是一...