- 浏览: 348497 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
haiw:
谢谢分享
Oracle 的递归查询(树型查询) -
nomandia:
除非是通过open打开的窗口,否则没法close的
JS 关闭当前页面 -
c30989239:
注意 SimpleDateFormat 是非线程安全的
Java 获取网络时间并在jsp中显示 -
归来朝歌:
不错,以后可能用得上
Java 操作Excel -
luhantu:
不错!学习了
Java 操作Excel
除Struts2必须的jar包外,还需要jar包:poi-3.7-beta-20100620.jar
首先是jsp代码实现上传:
<body>
<s:form id="form1" name="form1" action="roleFileUpload.action" method="post" enctype="multipart/form-data" theme="simple">
<table width="80%" border="1" align="center" class="DB_table">
<tr>
<td colspan="99" align="left">文件上传</td>
</tr>
<tr>
<td colspan="99" id="more">
<s:file name="uploadFile" label="文件位置" size="80"/>
</td>
</tr>
<tr>
<td colspan="99" align="right">
<s:submit value="上传"></s:submit>
<s:reset value="重置"></s:reset>
</td>
</tr>
</table>
[/align]
</s:form>
</body>
其次是Struts.xml配置文件:
<action name="roleFileUpload" class="roleFileAction" method="loadRoleFile">
<result name="success">/page/role/roleallinput.jsp</result>
<result name="input">/page/role/roleallinput.jsp</result>
</action>
然后是Action类实现:
public class RoleFileUploadAction extends ActionSupport{
private File uploadFile;
private String uploadFileFileName;
private FileLoadDao fileLoadDao;
private RoleDao roleDao;
public File getUploadFile() {
return uploadFile;
}
public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}
public String getUploadFileFileName() {
return uploadFileFileName;
}
public void setUploadFileFileName(String uploadFileFileName) {
this.uploadFileFileName = uploadFileFileName;
}
public FileLoadDao getFileLoadDao() {
return fileLoadDao;
}
public void setFileLoadDao(FileLoadDao fileLoadDao) {
this.fileLoadDao = fileLoadDao;
}
public RoleDao getRoleDao() {
return roleDao;
}
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
@Override
public void validate() {
super.validate();
}
public String loadRoleFile(){
String directory = "/upload";
String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);
//生成上传的文件对象
File target = new File(targetDirectory,uploadFileFileName);
//如果文件已经存在,则删除原有文件
if(target.exists()){
target.delete();
}
//复制file对象,实现上传
try {
FileUtils.copyFile(uploadFile, target);
} catch (IOException e) {
e.printStackTrace();
}
loadRoleInfo();
return SUCCESS;
}
/**
* 把Excele表读出的数据,组装成一个List,统一导入数据库
* @param uploadFileFileName
*/
public void loadRoleInfo(){
String directory = "/upload";
String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);
File target = new File(targetDirectory,uploadFileFileName);
List roleList = new ArrayList();
try{
FileInputStream fi = new FileInputStream(target);
Workbook wb = new HSSFWorkbook(fi);
Sheet sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum()+1;
for(int i=1;i<rowNum;i++){
PtRoleInfo ptRoleInfo = new PtRoleInfo();
Row row = sheet.getRow(i);
int cellNum = row.getLastCellNum();
for(int j=0;j<cellNum;j++){
Cell cell = row.getCell(j);
String cellValue = null;
switch(cell.getCellType()){ //判断excel单元格内容的格式,并对其进行转换,以便插入数据库
case 0 : cellValue = String.valueOf((int)cell.getNumericCellValue()); break;
case 1 : cellValue = cell.getStringCellValue(); break;
case 2 : cellValue = String.valueOf(cell.getDateCellValue()); break;
case 3 : cellValue = ""; break;
case 4 : cellValue = String.valueOf(cell.getBooleanCellValue()); break;
case 5 : cellValue = String.valueOf(cell.getErrorCellValue()); break;
}
switch(j){//通过列数来判断对应插如的字段
case 0 : ptRoleInfo.setRoleId(cellValue);break;
case 1 : ptRoleInfo.setRoleName(cellValue);break;
case 2 : ptRoleInfo.setDeil(cellValue);break;
}
}
roleList.add(ptRoleInfo);
}
for(PtRoleInfo pt:roleList){
fileLoadDao.roleInfotoDB(pt);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
最后在roleInfoToDB方法中需要使用‘事务Transaction’来进行批量插入,确保插入失败的能完全回滚。这样Excel文件的读取以及数据库的写入就实现了
首先是jsp代码实现上传:
<body>
<s:form id="form1" name="form1" action="roleFileUpload.action" method="post" enctype="multipart/form-data" theme="simple">
<table width="80%" border="1" align="center" class="DB_table">
<tr>
<td colspan="99" align="left">文件上传</td>
</tr>
<tr>
<td colspan="99" id="more">
<s:file name="uploadFile" label="文件位置" size="80"/>
</td>
</tr>
<tr>
<td colspan="99" align="right">
<s:submit value="上传"></s:submit>
<s:reset value="重置"></s:reset>
</td>
</tr>
</table>
[/align]
</s:form>
</body>
其次是Struts.xml配置文件:
<action name="roleFileUpload" class="roleFileAction" method="loadRoleFile">
<result name="success">/page/role/roleallinput.jsp</result>
<result name="input">/page/role/roleallinput.jsp</result>
</action>
然后是Action类实现:
public class RoleFileUploadAction extends ActionSupport{
private File uploadFile;
private String uploadFileFileName;
private FileLoadDao fileLoadDao;
private RoleDao roleDao;
public File getUploadFile() {
return uploadFile;
}
public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}
public String getUploadFileFileName() {
return uploadFileFileName;
}
public void setUploadFileFileName(String uploadFileFileName) {
this.uploadFileFileName = uploadFileFileName;
}
public FileLoadDao getFileLoadDao() {
return fileLoadDao;
}
public void setFileLoadDao(FileLoadDao fileLoadDao) {
this.fileLoadDao = fileLoadDao;
}
public RoleDao getRoleDao() {
return roleDao;
}
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
@Override
public void validate() {
super.validate();
}
public String loadRoleFile(){
String directory = "/upload";
String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);
//生成上传的文件对象
File target = new File(targetDirectory,uploadFileFileName);
//如果文件已经存在,则删除原有文件
if(target.exists()){
target.delete();
}
//复制file对象,实现上传
try {
FileUtils.copyFile(uploadFile, target);
} catch (IOException e) {
e.printStackTrace();
}
loadRoleInfo();
return SUCCESS;
}
/**
* 把Excele表读出的数据,组装成一个List,统一导入数据库
* @param uploadFileFileName
*/
public void loadRoleInfo(){
String directory = "/upload";
String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);
File target = new File(targetDirectory,uploadFileFileName);
List roleList = new ArrayList();
try{
FileInputStream fi = new FileInputStream(target);
Workbook wb = new HSSFWorkbook(fi);
Sheet sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum()+1;
for(int i=1;i<rowNum;i++){
PtRoleInfo ptRoleInfo = new PtRoleInfo();
Row row = sheet.getRow(i);
int cellNum = row.getLastCellNum();
for(int j=0;j<cellNum;j++){
Cell cell = row.getCell(j);
String cellValue = null;
switch(cell.getCellType()){ //判断excel单元格内容的格式,并对其进行转换,以便插入数据库
case 0 : cellValue = String.valueOf((int)cell.getNumericCellValue()); break;
case 1 : cellValue = cell.getStringCellValue(); break;
case 2 : cellValue = String.valueOf(cell.getDateCellValue()); break;
case 3 : cellValue = ""; break;
case 4 : cellValue = String.valueOf(cell.getBooleanCellValue()); break;
case 5 : cellValue = String.valueOf(cell.getErrorCellValue()); break;
}
switch(j){//通过列数来判断对应插如的字段
case 0 : ptRoleInfo.setRoleId(cellValue);break;
case 1 : ptRoleInfo.setRoleName(cellValue);break;
case 2 : ptRoleInfo.setDeil(cellValue);break;
}
}
roleList.add(ptRoleInfo);
}
for(PtRoleInfo pt:roleList){
fileLoadDao.roleInfotoDB(pt);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
最后在roleInfoToDB方法中需要使用‘事务Transaction’来进行批量插入,确保插入失败的能完全回滚。这样Excel文件的读取以及数据库的写入就实现了
发表评论
-
springmvc整合cxf webservice
2016-03-15 16:54 1345springmvc中整合cxf webservice。 ... -
JSTL fn函数中字符串拼接
2015-11-30 11:35 5277关于JSTL的标签,在网上查了很久,都是介绍fn ... -
Java 获取网络时间并在jsp中显示
2015-09-07 14:15 1902开发中经常会遇到需要将服务器时间或者网络时间显示在 ... -
记录--ReflectionUtil
2015-07-22 10:51 834import java.lang.reflect.Field; ... -
JSTL foreach及if when标签使用
2015-07-22 08:48 2095需要在jsp中加入以下标签库和函数库 <%@ ta ... -
Java 获取服务器IP和本地Ip
2015-07-21 21:39 8747在项目中经常会遇到需要获取服务器的IP和本地IP, ... -
Mybatis 模糊查询
2015-06-11 18:42 664参数中直接加入%% param.setUsernam ... -
MyBatis之增加删除修改
2015-06-11 16:32 1702insert、update、delete这三个元素分别用于执行 ... -
MyBatis 传入参数parameterType详解
2015-06-11 16:29 18808在MyBatis的select、insert、update ... -
Java 操作Excel
2015-06-10 20:54 2326前不久做过Excel的导入导出功能,其主要的难点是java如何 ... -
SpringMVC+mybatis 实现easyui中tree
2015-06-08 22:08 5333最近做项目用到了前端框架easyUI,以下是easyUI ... -
MD5加密工具类
2015-06-03 18:47 1353package base; /** * MD5加密算法 * ... -
spring+mybatis配置
2015-02-08 17:04 8921.用spring配置mybatis <?xml ver ... -
JAVA 处理JSON工具类
2014-12-31 13:49 1608以下代码为Java处理json数据的工具类,以备后用 pac ... -
Java解析及读取Json数据
2014-12-31 13:46 18731.JSON介绍 JSON比XML简单,主要体现在传输相 ... -
新版SSH整合(备用)
2014-09-01 19:40 1665在网上找的S4S2H4架构实现,现记录一下,以备后用。 附件中 ... -
jsp静态化和伪静态化
2014-06-12 16:21 838首先说说为什么要静态化。 对于现在的Web Applicat ... -
JSP自定义标签的创建和使用
2014-04-18 10:45 1272摘自http://jzinfo.iteye.com/blog/ ... -
ssh项目中strust2从2.0.11升级到2.3.15.1详细步骤
2014-03-28 15:33 2249将ssh项目中strust2从2.0.11升级到2.3.15. ... -
MyEclipse下创建的项目 导入eclipse(转载)
2014-03-19 17:15 819FROM:http://www.cnblogs.com/zho ...
相关推荐
在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...
运用struts2将数据库中的数据导入和导出,同时会用到poi的jar包
本教程将深入探讨如何利用Struts2实现从Oracle数据库导出数据到Excel,以及如何将Excel文件中的数据导入到Oracle。 首先,我们需要了解Oracle数据库的基础知识。Oracle是世界上最广泛使用的商业关系型数据库管理...
在Struts2中实现Excel导入功能,可以让用户上传Excel文件,然后在服务器端进行数据处理,例如存储到数据库或者进行数据分析。 在描述中提到的“完整美运行有JAR包”,意味着这个压缩包可能包含了所有必要的库文件,...
首先,让我们深入理解一下如何使用Struts2和POI来实现Excel的导入导出。 1. **Struts2的Action配置**: 在Struts2中,你需要创建一个Action类来处理用户请求。这个Action类会有一个方法,专门处理导入或导出Excel...
在Struts2中实现Excel的导入和导出功能,可以帮助用户处理大量的数据,例如批量导入数据库,或者允许用户下载数据为Excel格式进行分析。下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 ...
总结,这个项目展示了如何结合Struts2的MVC架构、Apache POI的Excel处理能力和JDBC的数据库操作,实现从Excel文件批量导入数据到SQL Server 2000数据库的功能。这个过程涉及文件上传、数据读取、数据库交互等多个...
Struts2 框架与 Apache 的 JXL 库整合,可以方便地实现在 Java Web 应用中导入和导出 Excel 表格的功能。Apache JXL 是一个强大的 Java 库,专门用于读写 Microsoft Excel 文件,使得开发者无需依赖 Office API 就能...
总结来说,"基于Struts2及POI实现的导入功能"是一个常见的Java Web开发场景,它利用Struts2的请求处理和文件上传能力,结合Apache POI的Excel文件处理功能,实现了从Excel文件高效地导入数据到Web应用中的功能。...
java struts 把数据导入 excel java struts 把数据导入 excel java struts 把数据导入 excel
在这个场景下,我们讨论的是如何在Struts框架下实现Excel的导入,并使用jxl库进行解析。 jxl库是Java中广泛使用的处理Excel文件的第三方库,它可以读取、写入和修改Excel文件。下面我们将深入探讨这两个主题:...
在本项目中,“Struts2+POI3.7做excel导入”意味着我们将利用Struts2的文件上传功能结合POI库,实现用户从网页上选择Excel文件并将其数据导入到系统中的功能。 首先,我们需要在Struts2的配置文件(struts.xml)中...
Java 实现 Excel 导入导出 ...在 Struts2+Spring 框架中实现 Excel 导入导出需要使用 POI 库来读取和写入 Excel 文件中的数据,并对数据进行处理。使用 POI 库可以简化 Excel 文件的操作,并提高程序的性能。
以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,实现数据的导入和导出功能,提高工作效率。在实际项目中,可以...
Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...
本知识点主要关注如何在Struts2框架中实现数据导入功能,特别是从Excel文件中导入数据。 首先,我们需要了解Struts2的核心组件和工作流程。Struts2框架通过Action类处理HTTP请求,Action类是业务逻辑的入口点。在...
在IT行业中,数据的导入导出是常见的...以上就是使用Eclipse、MySQL和Struts2实现Excel数据导入导出的基本流程和关键知识点。实际操作中,你还需要结合提供的完整代码进行理解和学习,以便更好地掌握这个功能的实现。
struts+hibernate实现excel导入数据库 注意:Excel导入是指读服务器端的数据,也就是说,如果想用客户端的Excel是需要把Excel文件先上传到服务器上的,然后再导入,我也是前几天才发现的。
本篇文章将详细介绍如何利用Apache POI与Struts2来实现Excel的读写以及合并多个Excel工作表。 首先,Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF格式(.xls)和新版本的OOXML格式(.xlsx)。要...