`
daizhaoyun
  • 浏览: 27999 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SSI实现 excel 与ORACLE 之间的导入导出

    博客分类:
  • SSI
阅读更多

1.导入相应的jar包

 

jxl.jar
antlr-2.7.2.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ibatis-2.3.4.726.jar
ognl-2.6.11.jar
spring.jar
struts2-core-2.0.14.jar
struts2-spring-plugin-2.0.14.jar
xwork-2.0.7.jar
ojbc14.jar

 

2.页面用freemerk

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户管理</title>

<script>
  function interExcel(){
     window.location.href="interExcel.action"
  }
  
  function goExcelToOracle(){
     window.location.href="goExcelToOracle.action"
  }
</script>
</head>
<body>
   <form>
   <table>
   <tr><td>ID</td><td>姓名</td><td>密码</td></tr><br />
   <#list list?if_exists as user>
      <tr><td>${user.id}</td><td>${user.userName}</td><td>${user.password}</td></tr>
   </#list>
   
   <tr><td><input type="button" onclick="interExcel()" value="导入到Excel表中"/></td></tr>
   <tr><td><input type="button" onclick="goExcelToOracle()" value="Excel导入Oracle数据库"/></td></tr>
   </table>
   
   </form>
</body>
</html>

 

3. web.xml的配置

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>excel</display-name>
  <welcome-file-list>
    <welcome-file>user.jsp</welcome-file>
  </welcome-file-list>
   <context-param>
      <param-name>contextConfigLocation</param-name>
 	  <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <filter>
     <filter-name>struts</filter-name>
     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  
  <filter-mapping>
     <filter-name>struts</filter-name>
     <url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>

 

4.struts.xml的配置

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 
    <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
    
    <package name="user" extends="struts-default" namespace="/">
    
        <action name="getAllUser" class="userAction" method="getAllUser">
            <result name="success" type="freemarker">WEB-INF/user.ftl</result>
        </action>
     
     <!-- 数据导入到Excel -->   
        <action name="interExcel" class="userAction" method="interExcel">
            <result name="success" type="freemarker">
                /WEB-INF/user.ftl
            </result>
            <result name="error" type="freemarker">
               /WEB-INF/error.ftl
            </result>
        </action>
     <!-- 数据从Excel导入Oracle数据库表中 -->   
        <action name="goExcelToOracle" class="userAction" method="goExcelToOracle">
              <result name="success" type="freemarker">
                   /WEB-INF/user.ftl
              </result>
        </action>
    </package>
    
  
</struts>

 

5.applicationContext.xml的配置

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>file:${global.config.path}jdbc_user_zhaoyun.properties</value>
			</list>
		</property>
	</bean>

	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName">
			<value>${jdbc.driverClassName}</value>
		</property>
		<property name="url">
			<value>${jdbc.url}</value>
		</property>
		<property name="username">
			<value>${jdbc.username}</value>
		</property>
		<property name="password">
			<value>${jdbc.password}</value>
		</property>
	</bean>


	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="configLocation">
			<value>classpath:sql-map-config.xml</value>
		</property>
	</bean>
     <!-- 本地服务对象 -->
	<bean id="userDao" class="com.daizhaoyun.dao.UserDaoImpl">
		<property name="client">
			<ref bean="sqlMapClient" />
		</property>
	</bean>
	<bean id="userService" class="com.daizhaoyun.service.UserServiceImpl">
		<property name="userDao">
			<ref bean="userDao" />
		</property>
	</bean>
	<bean id="userAction" class="com.daizhaoyun.action.UserAction">
		<property name="userService">
			<ref bean="userService" />
		</property>
	</bean>
	 
</beans>

 

6.jdbc_user_zhaoyun.properties 属性文件

 

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@192.168.129.12:1521:SID
#jdbc.username=test
#jdbc.password=aixs3GKgn4oVplJGeAI96Q..
jdbc.url=jdbc:oracle:thin:@192.168.129.12:1521:SID
jdbc.username=test
jdbc.password=test
jdbc.initialSize=1
jdbc.maxActive=2
jdbc.maxIdle=1
jdbc.defaultAutoCommit=true
jdbc.maxWait=5000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=180
	

 

7.sql-map-config.xml的配置

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

    <settings enhancementEnabled="true" maxTransactions="40" maxRequests="32" maxSessions="10"/>

<!-- sqlmap映射文件  处理相应的sql操作-->
    <sqlMap resource="sqlmap-user.xml"/>

</sqlMapConfig>

 

8.sqlmap-user.xml的配置

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>
  <!-- 类型映射 -->
   <typeAlias alias="user" type="com.daizhaoyun.dto.User"/>
   <resultMap id="MenuResult" class="com.daizhaoyun.dto.User" >
    <result column="ID" property="id"  />
    <result column="USERNAME" property="userName"  />
    <result column="PASSWORD" property="password"  />
  </resultMap>
   
   <select id="getAllUser" resultClass="user">
        select * from user_zhaoyun
   </select>
   
   <insert id="insertUser" parameterClass="user">
       insert into user_zhaoyun(id,username,password) values(#id#,#userName#,#password#)
   </insert>
   
</sqlMap>

 9.Dto

 

package com.daizhaoyun.dto;

public class User {
	
	private Integer id;
    private String userName;
    private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
    

}

 10.DAO

package com.daizhaoyun.dao;

import java.util.List;

import com.daizhaoyun.dto.User;

public interface UserDao {
	
	public List<User> getAllUser();
	
    public void insertUser(User user);
}
 
package com.daizhaoyun.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.daizhaoyun.dto.User;
import com.ibatis.sqlmap.client.SqlMapClient;

public class UserDaoImpl implements UserDao {
	
	SqlMapClient client;

	public SqlMapClient getClient() {
		return client;
	}

	public void setClient(SqlMapClient client) {
		this.client = client;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<User> getAllUser() {
		List<User> list = new ArrayList<User>();
		try {
			list = client.queryForList("getAllUser");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public void insertUser(User user) {
        try {
        	//事务的开启
        	client.startTransaction();
			client.insert("insertUser", user);
			client.commitTransaction();
			client.endTransaction();
		} catch (SQLException e) {
			e.printStackTrace();
		}		
	}

}

 11.SERVICE

 

package com.daizhaoyun.service;

import java.util.List;

import com.daizhaoyun.dto.User;

public interface UserService {
	public List<User> getAllUser();
	public void insertUser(User user);
}
 
package com.daizhaoyun.service;

import java.util.List;

import com.daizhaoyun.dao.UserDao;
import com.daizhaoyun.dto.User;

public class UserServiceImpl implements UserService {
	
	private UserDao userDao;

	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	public List<User> getAllUser() {
		return userDao.getAllUser();
	}

	@Override
	public void insertUser(User user) {
        userDao.insertUser(user);		
	}

}

 12.ACTION

package com.daizhaoyun.action;

import java.util.ArrayList;
import java.util.List;

import com.daizhaoyun.dto.User;
import com.daizhaoyun.service.UserService;
import com.daizhaoyun.tools.ExcelOpt;
import com.daizhaoyun.tools.GoToOracle;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
	private UserService userService;
	private List<User> list;
	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}


	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	/**
	 * 系统入口
	 */
	public String getAllUser(){
		list = userService.getAllUser();
		return SUCCESS;
	}
	
	/**
	 * 数据导入Excel的操作
	 */
	public String interExcel(){
		//获取所有的表中数据
		list = userService.getAllUser();
		//EXCEL文件路径
		String s = "D:/test.xls";
		ExcelOpt eop = new ExcelOpt();
		//数据导入Excel操作
		eop.a(s, list);
		return SUCCESS;
	}
	
	/**
	 * Excel导入到Oracle数据库表
	 */
	public String  goExcelToOracle(){
		GoToOracle go = new GoToOracle();
		String path="D:/test01.xls";
		List<String> l = new ArrayList<String>();
		l = go.insert(path);
		String[] st ;
		User user = new User();
		for(int i=0;i<l.size();i++){
			String str = l.get(i);
			st = str.split(",");
			user.setId(Integer.parseInt(st[0]));
			user.setUserName(st[1]);
			user.setPassword(st[2]);
			userService.insertUser(user);
		}
		return SUCCESS;
	}

}

13.tools

package com.daizhaoyun.tools;

import java.io.File;
import java.io.IOException;
import java.util.List;

import com.daizhaoyun.dto.User;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**
 * @author daizhaoyun
 *  创建一个excel
 */
public class ExcelOpt{
	/**
	 * 生成一个Excel文件 jxl
	 */
	public void a(String fileName,List<User> list) {
		WritableWorkbook wwb = null;
		try {
			// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
			wwb = Workbook.createWorkbook(new File(fileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (wwb != null) {
			// 创建一个可写入的工作表
			// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
			WritableSheet ws = wwb.createSheet("用户信息表", 0);
            Label label1 = new Label(1, 0, "ID");
            Label label2 = new Label(2, 0, "姓名");
            Label label3 = new Label(3, 0, "密码");
            try {
            	// 下面开始添加单元格
				ws.addCell(label1);
				ws.addCell(label2);
				ws.addCell(label3);
			} catch (RowsExceededException e1) {
				e1.printStackTrace();
			} catch (WriteException e1) {
				e1.printStackTrace();
			}
			// 下面开始添加单元格
			for (int i = 0; i < list.size(); i++) {
					Label label4 = new Label(1, i+1,list.get(i).getId().toString());
					Label label5 = new Label(2, i+1,list.get(i).getUserName());
					Label label6 = new Label(3, i+1,list.get(i).getPassword());
					// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
					/*Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第"
							+ (j + 1) + "列");*/
					try {
						// 将生成的单元格添加到工作表中
						ws.addCell(label4);
						ws.addCell(label5);
						ws.addCell(label6);
					} catch (RowsExceededException e) {
						e.printStackTrace();
					} catch (WriteException e) {
						e.printStackTrace();
					}
			}
			try {
				// 从内存中写入文件中
				wwb.write();
				// 关闭资源,释放内存
				wwb.close();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (WriteException e) {
				e.printStackTrace();
			}
		}
	}
	
}
 
package com.daizhaoyun.tools;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class GoToOracle {

	public List<String> insert(String path) {
		List<String> list = new ArrayList<String>();
		File file = new File(path);
		// 创建新的Excel 工作簿
		Workbook rwb = null;
		try {
			rwb = Workbook.getWorkbook(file);
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 得到工作簿中的第一个表索引即为excel下的sheet1,sheet2,sheet3...
		Sheet sheet = rwb.getSheets()[0];
		int rsColumns = sheet.getColumns();// 列数
		int rsRows = sheet.getRows();// 行数
		String simNumber = "";// 每个单元格中的数据

		String str = "";// 拼接要插入的列
	
		for (int i = 1; i < rsRows; i++) {
			for (int j = 0; j < rsColumns; j++) {
				Cell cell = sheet.getCell(j, i);
				simNumber = cell.getContents();
				if(j == rsColumns - 1){
					str += simNumber;
				}else{
					str += simNumber + ",";
				}
			}
			list.add(str);
			str = "";
		}
		return list;
	}

}
 

14.通过http://localhost:8080/excel/ getAllUser.action访问

分享到:
评论
2 楼 tiger112 2012-07-16  
aixs3GKgn4oVplJGeAI96Q..    这个竟然搜到你了  暴露了  哈哈哈
1 楼 tiger112 2012-07-16  
你是一号店的 哈哈 

相关推荐

    SSI框架整合(Oracle数据库增删改查示例)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...

    fpga与ssi通信

    在本文中,我们将讨论FPGA与SSI通信之间的关系,并设计一个基于FPGA的SSI通信控制器。该控制器使用VHDL硬件描述语言,基于Xilinx公司的FPGA设计平台,实现了一个可扩展的SoPC架构的通信控制器。该控制器能够灵活地...

    SSI+Oracle整合框架

    "SSI+Oracle整合框架"是基于Struts2、Spring和iBatis三个开源框架与Oracle数据库相结合的应用开发架构。这个框架常用于构建大型的企业级应用,因为它提供了强大的控制层(Struts2)、灵活的依赖注入(Spring)以及...

    maven+ssi对oracle实现增删改查(二)

    【标题】"maven+ssi对oracle实现增删改查(二)" 主要涉及的是在Java开发中,如何使用Maven构建项目,并结合SSI(Simple Servlet Interceptor)框架来处理Oracle数据库的CRUD操作。Maven是Java项目管理工具,它帮助...

    SSI框架的实现

    在本教程中,我们将深入探讨如何实现SSI框架,并构建一个功能完善的动态网页系统。 1. **SSI基本语法** SSI的基本语法以`&lt;!--#`开头,`--&gt;`结尾,中间插入不同的指令。例如,`&lt;!--#include virtual="header....

    FPGA之SSI接口协议实现 fpga开发.pdf

    FPGA之SSI接口协议实现 FPGA之SSI接口协议实现是指在 Field-Programmable Gate Array(现场可编程门阵列)中实现 Synchronous Serial Interface(同步串行接口)协议。SSI 是一种全双工的串行接口,允许芯片与多种...

    ssi实现注册登录

    1. **SSI基本原理**: SSI工作原理是在HTML文件中插入特殊的指令,这些指令在服务器端被解析并替换为实际的内容。例如,`&lt;!--#include virtual="file.html" --&gt;`会将"file.html"的内容插入到当前页面相应位置。 2....

    SSI框架搭建增删改查以及分页

    在这个项目中,我们将会深入探讨如何利用这些技术实现数据库的增删改查(CRUD)操作以及分页功能,并将其部署到Oracle数据库。 首先,Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,协调应用的业务...

    SSI整合,有ibatis连接oracle的分页,ajax等技术

    开发者可能在Web服务器上配置了SSI支持,同时在后端设置了Ibatis与Oracle数据库的连接,前端使用JavaScript和AJAX来与后端进行交互,实现动态加载分页数据。 从"压缩包子文件的文件名称列表"来看,虽然具体文件内容...

    SSI框架+权限(Oracle)

    在SSI框架中,Oracle通常作为后端的数据存储,通过JDBC接口与应用进行交互。 **JDK1.5**,也称为Java SE 5.0,引入了许多重要的新特性,例如泛型、枚举、注解(Annotation)和类型安全的集合。这些特性极大地提升了...

    自创:dwz+ssi+oracle秒级从uml变成品

    绝对自创:dwz+ssi+oracle秒级从uml变成品 前台:dwz java层:struts2+spring+mybatis 数据库:oracle

    SSI oracle 工程实例

    标题中的"SSI oracle 工程实例"指的是一个融合了Struts、Spring和iBatis三个框架的Oracle数据库工程示例。这个项目可能是为了演示或教学如何在Java Web开发中有效地集成这三个流行的技术,并且利用Oracle数据库来...

    采用SSI协议实现的绝对值编码器

    通过Verilog编程,可以创建出能够处理SSI协议的逻辑电路,实现编码器与主控系统的高效通信。 绝对值编码器与增量型编码器相比,具有显著优势。绝对值编码器在任何时候都能提供当前位置的绝对值,即使在断电后重启,...

    SSI框架实现登陆以及增删改查

    而iBatis则作为数据访问层,简化了SQL操作,实现了数据库查询与业务逻辑的解耦。 首先,让我们深入了解Struts框架。Struts是Apache软件基金会的一个开源项目,它基于Model-View-Controller设计模式,帮助开发者构建...

    SSI文件上传与下载V1.3.22

    在"SSI文件上传与下载V1.3.22"这个主题中,我们主要讨论的是如何利用SSI实现文件的上传和下载功能。 一、SSI基础 1. SSI语法:SSI指令通常以`&lt;!--#`开头,`--&gt;`结束,如`&lt;!--#include virtual="header.html" --&gt;`...

    struts2_spring_ibatis根据模板文件导出Excel

    在这个项目中,“struts2_spring_ibatis根据模板文件导出Excel”是利用这三大框架实现了一个功能,即根据预设的模板文件生成并导出Excel电子表格。 首先,Struts2是基于Model-View-Controller(MVC)架构的Web应用...

    ssi整合 jar包

    7. **SSI与动态语言结合**:在Java环境中,尽管可以直接使用SSI库,但更常见的情况是结合JSP、Servlet或其他动态语言来处理复杂的业务逻辑,而仅使用SSI处理简单的页面元素包含。 综上所述,这个"SSI整合的jar包...

    【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

    《LabVIEW FPGA入门:实现串行同步接口(SSI)》 LabVIEW FPGA是NI(National Instruments)提供的一个强大的工具,允许用户使用图形化编程环境来设计和实现FPGA(Field Programmable Gate Array)应用程序。本篇...

    SSI_read.rar_SSI verilog_SSI 11bit read_SSI_read_ssi verilog_v

    在本项目中,我们关注的是如何使用Verilog硬件描述语言来实现一个11位编码器的SSI读取功能。Verilog是一种广泛应用于集成电路设计、验证的语言,能够描述数字系统的结构和行为。 首先,理解11位编码器的含义是关键...

Global site tag (gtag.js) - Google Analytics