(1)日期问题
从单元格中取得的日期与数据库中日期无法匹配,由于单元格中取得的日期默认形式为“Mon Mar 18 16:53:27 CST 2013”,我们要先把其格式化为想要格式的日期字符串,如“yyyy-mm-dd”,然后用java.sql.Date的valueOf( )方法取得该日期字符串对应于数据库中的日期。
1 java.util.Date date=cell.getDateCellValue();//取得单元格中的日期 2 DateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");//定义想要的日期格式 3 String working_date=fmt.format(date);//把日期格式化为"yyyy-MM-dd"形式的日期字符串 4 String sql="insert into tmp_excel(working_date) values(?)"; 5 PreparedStatement stmt=conn.prepareStatement(sql); 6 stmt.setDate(1,java.sql.Date.valueOf(working_date));//取得字符串日期对应与数据库的日期
(2)提交(Submit)弹窗问题和取消(Cancel)按钮问题
当点击导入按钮时,会弹出提示"确认导入数据"窗口,确定则导入数据到真实表,删除临时表数据,并显示导入更新多少条数据。取消则不执行任何动作,回到当前页面。
当点击取消按钮时,删除保存在临时表中的数据,然后跳转到上传页面。使用取消按钮,必须在struts中配置相应的属性,否则会报InvalidCancelException异常。
dataImport.jsp
1 <%@ page language="java" pageEncoding="GBK"%> 2 3 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 4 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 5 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> 6 <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%> 7 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <title>生产能率Excel上传</title> 13 <script type="text/javascript"> 14 function msg(){ 15 if(confirm("您确认要导入数据吗?")){ 16 document.importForm.submit(); 17 } 18 } 19 </script> 20 </head> 21 <body> 22 23 <logic:notEmpty name="msg" scope="request"> 24 <h4><%=request.getAttribute("msg")%></h4> 25 <h4> 26 更新了 27 <font color="red"><%=request.getAttribute("count")%></font>条记录。 28 </h4> 29 </logic:notEmpty> 30 <br /> 31 <html:form action="/dataImport" method="post"> 32 <html:button value="导入" property="" style='font-size:18px' onclick="msg();"/> 33 <html:cancel value="取消" style='font-size:18px'></html:cancel> 34 </html:form> 35 </body> 36 </html>
<html:form>不能像html中的form一样,设置name属性,而是在struts-config.xml中<action-mappings>中的action的name配置,<action name="importForm" ...>,js中事件取得表单名字时,也是根据这里的配置。
Action中对Cancel按钮的处理:判断是否点击了“取消”按钮,如果点击了“取消”按钮,则删除上传到临时表中的数据,并重定向导上传页面。
importAction.java
1 boolean flag=this.isCancelled(request); 2 if(flag){ 3 String sql="delete from tmp_excel where userid=?"; 4 stmt=conn.prepareStatement(sql); 5 stmt.setString(1, uid); 6 stmt.executeUpdate(); 7 return mapping.findForward("upload"); 8 }
在struts-config.xml文件中配置相应的跳转路径和取消属性。
1 <global-forwards> 2 <forward name="upload" path="/uploadExcel.jsp"></forward> 3 </global-forwards> 4 5 <action path="/dataImport" 6 type="com.foster.action.ImportAction" 7 name="importForm" 8 scope="request"> 9 <set-property property="cancellable" value="true"/> 10 <forward name="success" path="/dataImport.jsp"></forward> 11 </action>
注:个人感觉日期问题处理很繁琐,贴出来,以待指正。