`

JExcel简单实用

阅读更多
通过读取Excel文档批量插入或更新数据库数据, 这种方式在现有软件应用当中已经屡见不鲜了,下面我简单介绍一下使用JExcel开源工具读取excel文档。
一般读取存在两种:其中一种是读取本地文件;另外一种是通过上传的方式直接读取excel内容。
这两种方式大同小异,主要区别在于获取WorkBook调用方法的不同。
第一种:
WorkBook workbook = WorkBook.getWorkbook(java.io.File file);

第二种是在第一种的基础之上直接读取输入流
WorkBook workbook = WorkBook.getWorkbook(java.io.InputStream is);

获取到WorkBook对象后就可以得到sheet对象和Cell对象了。

下面是读取上传文件方式读取的例子,该例子需要commons-fileupload-*.jar和commons-io-*.jar两个包。
<!-- 通用上传组件 -->
<form method="post" enctype="multipart/form-data" action="../test/uploadoperation.jsp">
<table>
<tr>
<td>
请选择需要上传的文档:
</td>
<td>
<input type="file" id="filename" name="filename">
</td>
<td><input type="submit" value="上传"></td>
</tr>
</table>
</form>

response.setContentType("text/html;charset=gbk");
if (!DiskFileUpload.isMultipartContent(request)) {
out.println("只能处理multipart/form-data类型的数据!");
return;
}
DiskFileUpload fu = new DiskFileUpload();
// 最多上传200M数据
fu.setSizeMax(1024 * 1024 * 200);
// 超过1M的字段数据采用临时文件缓存
fu.setSizeThreshold(1024 * 1024);
// 设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码
fu.setHeaderEncoding("gbk");

// 得到所有表单字段对象的集合
List fileItems = null;
try {
fileItems = fu.parseRequest(request);
} catch (FileUploadException e) {
out.println("解析数据时出现如下问题:");
e.printStackTrace();
return;
}

// 如果存在多个文件, 循环读取内容
// 处理每个表单字段
Iterator i = fileItems.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (fi.isFormField()) {
String content = fi.getString("UTF-8");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, content);
} else {
try {
String pathSrc = fi.getName();
/*
* 如果用户没有在FORM表单的文件字段中选择任何文件,那么忽略对该字段项的处理
*/
if (pathSrc.trim().equals("")) {
continue;
}

InputStream is = fi.getInputStream();//得到文件流

Workbook wb = Workbook.getWorkbook(is);//先得到workbook对象
Sheet sheet = wb.getSheet(0);//然后获取该excel对象的工作表对象,sheet对象可存在多个,可通过
//根据实际情况判断是否需要读取第一行的内容
//举例:如果是要把数据导入到数据库, 则可在第一列放置数据库字段名, 可先通过字段名创建表, 然后插入数据
//注意:这里需要注意数组越界的问题
for (int m = 0; m < sheet.getRows(); m++) {
//先读行, 然后读列
Cell[] cells = sheet.getRow(m);
for (int j = 0; j < cells.length; j++)
{
System.out.println(cells[j].getContents());
}
}
} catch (Exception e) {
out.println("存储文件时出现如下问题:");
e.printStackTrace();
return;
} finally { // 总是立即删除保存表单字段内容的临时文件
fi.delete();
}
}
}
分享到:
评论

相关推荐

    JExcel 实用指南

    ### JExcel实用指南知识点解析 #### 一、引言与概述 **JExcel** 是一个强大的Java库,用于处理Excel文件。它为开发者提供了一系列工具和API,使得在Java应用程序中创建、读取、编辑Excel文件变得简单。该实用指南...

    JEXCEL.jar

    标题 "JEXCEL.jar" 指向的是一个Java库,专门用于处理Excel文件。这个API使得Java开发者能够轻松地读取、写入以及操作Excel数据。...对于那些需要在Java项目中与Excel交互的开发者来说,这是一个非常实用的工具。

    WEB程序设计(第7章 JSP实用组件)

    在JSP程序设计中,第七章主要介绍了几个实用组件,这些组件在Web开发中扮演着重要角色,能够丰富Web应用的功能。下面详细说明各个组件的知识点: 1. jspSmartUpload组件 jspSmartUpload组件主要用于文件的上传和...

    一个jScript读取Excel的小类库

    "jEasy"可能代表这个库的名称,旨在表示使用它进行Excel操作是简单的,而"$jExcel"可能是类库的主要组件或入口点,用于实际的Excel操作。 使用此类库,开发者通常可以执行以下操作: 1. **打开Excel文件**:加载...

    jexcelapi_2_4.tar.gz_java项目_jexcelapi_2_4_jexcelapi_2_4-2.tar._j

    它支持对Excel 97至2003(.xls)文件的处理,尽管不支持较新的Excel 2007及以后的.xlsx格式,但考虑到这些老版Excel文件的广泛应用,JExcelAPI仍然具有广泛的实用价值。此外,提供的_jexcelapi_2_4-2.tar._j可能是该...

    jxl.rar_Java_

    此外,随着Java生态系统的不断发展,现在有许多现代替代方案,如OpenCSV、JExcel等,它们提供了更多功能和更好的性能。 总结来说,`jxl-2.6.12.jar`和`loadxls-1.0.jar`为Java程序员提供了一种有效的方法来操作...

Global site tag (gtag.js) - Google Analytics