上传使用flash插件

需要jquery.uploadify.min.js,uploadify.css,poi-ooxml-3.8-20120326.jar等

jsp页面:

<%@include file="/uploadDeclare.jsp"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.uploadify {
float: left;
margin: 10px;
}
</style>
<script type="text/javascript">
//导入功能
$(function() {
$("#uploadFile").uploadify({
buttonClass : '',
fileSizeLimit : '51200KB',
uploader : '${basePath}core/upload!uploadFile.action', // 服务器端处理地址
swf : '${basePath}js/uploadify/uploadify.swf', // 上传使用的 Flash
buttonText : "导入",
buttonCursor : 'hand',
fileObjName : 'uploadify',// 上传参数名称 后台action里面的属性uploadify
fileTypeExts : "*.xls;*.xlsx", // 扩展名
fileTypeDesc : "请选择 文件格式",
removeTimeout : , // 文件说明
auto : true, // 选择之后,自动开始上传
multi : false, // 是否支持同时上传多个文件
queueSizeLimit : , // 允许多文件上传的时候,同时上传文件的个数
queueID : 'queueID', onUploadSuccess : function(file, data, response) {
var data = jQuery.parseJSON(data);
if (data.error == ) {
ldDialog.alert(data.message);
} else {
$.ajax({
url : "${basePath}uploadDocumentAction/uploadDocument!importManyOverallPlan.action",
type : "post",
dataType : "json",
data : {
filePath : data.url,
fileName : data.newFileName,
proId : "${proId}",
},
async : false,
success : function(r) {
if (r.code == 'success') {
ldDialog.tips("导入成功!");
document.pagerForm.submit();
} else {
ldDialog.tips("导入失败!");
}
}
});
}
}
});
});
</script>
</head> <td>
<input type="button" id="uploadFile" class="ldBtnGray" value="导入" />&nbsp;&nbsp;
<a href="${basePath}/upload/template/template13.xlsx" download="template13.xlsx">
<span style='float: right; margin-right: 20px; margin-top: 10px; font-size: 18px; color: #2891d2;'>模板下载</span>
</a>
</td>

uploadDeclare.jsp

<%@page language="java" contentType="text/html; charset=utf-8"%>
<base
href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/" />
<LINK href="${basePath}plugins/uploadify/uploadify.css" type="text/css" rel="stylesheet" />
<script language="javascript" type="text/javascript">
//防止客户端缓存文件,造成uploadify.js不更新,而引起的“喔唷,崩溃啦”
document.write ("<script type='text/javascript' " + "src='${basePath}plugins/uploadify/jquery.uploadify.min.js?" + new Date () + "'><\/script>");
</script>
<style>
.uploadify-box {
width: 130px;
margin: 0px;
margin-top: 10px;
}
</style>

效果页面:

excel文件放在eclipse-workspace\report\WebRoot\upload\template\template13.xlsx目录下,都有的字段:

jsp页面 url : "${basePath}uploadDocumentAction/uploadDocument!importManyOverallPlan.action"对应的类,uploadDocumentAction

其中base类DesigndrawOverallPlanPo中书协的属性和属性的get(),set()方法,可自行编写

    /**
* 批量导入
* @param modelMap
* @param request
* @return
* @throws ParseException
*/
@ResponseBody
@RequestMapping("uploadDocument!importManyOverallPlan.action")
public JSONObject importManyOverallPlan(ModelMap modelMap, HttpServletRequest request) throws ParseException {
String filePath = this.getStringParameter("filePath");
String fileName = this.getStringParameter("fileName");
String proId = this.getStringParameter("proId");
final JSONObject result = new JSONObject();
final UploadDocument uploadDocument = this.parameterToPoPrefix(UploadDocument.class);
ProApprovalPo proApproval = this.proApprovalBaseService.queryProApprovalById(proId);
User user = this.getSessionUser();
String proName = "";
boolean success = false;
String code = ""; if(user != null && proApproval != null) {
String abPath = request.getSession().getServletContext().getRealPath("/");
filePath = abPath + filePath;
List<DesigndrawOverallPlanPo> designdrawOverallPlans = new ReadInfoTableExcel().getExcelToOverallPlan(filePath);
proName = proApproval.getProName();
for(int i=;i<designdrawOverallPlans.size();i++) {
DesigndrawOverallPlanPo designdrawOverallPlan = designdrawOverallPlans.get(i);
//首先校验excel文件中的项目id和项目名称是否正确
//还有计划开始时间要小于等于计划结束时间
//且时间格式2018-01-02要正确
//计划开始时间和计划结束时间是date类型与导入时类型(java.long.String)不匹配,
//所以现在导入时,计划开始时间值:reserved1,计划结束时间:reserved2
//.trim():取消空格
if(StringUtils.isEmpty(designdrawOverallPlan.getProId()) || !proId.equals(designdrawOverallPlan.getProId().trim())) {
continue;
}else if(StringUtils.isEmpty(designdrawOverallPlan.getProName()) || !proName.equals(designdrawOverallPlan.getProName().trim())) {
continue;
}else if(StringUtils.isNotEmpty(designdrawOverallPlan.getReserved1()) && StringUtils.isNotEmpty(designdrawOverallPlan.getReserved2())) {
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
String startAcTime = designdrawOverallPlan.getReserved1().trim();
String endAcTime = designdrawOverallPlan.getReserved2().trim();
//计算持续时长(天):计划结束时间-计划开始时间
if(validationTimeFormat(startAcTime) && validationTimeFormat(endAcTime)) {
int day = (int)((format.parse(endAcTime).getTime() - format.parse(startAcTime).getTime())/( * * * )) + ;
if(day<) {
continue;
}else {
designdrawOverallPlan.setStartAcTime(format.parse(startAcTime));
designdrawOverallPlan.setEndAcTime(format.parse(endAcTime));
designdrawOverallPlan.setContinueDate(day);
}
}
}
designdrawOverallPlan.setReserved1(null);
designdrawOverallPlan.setReserved2(null);
designdrawOverallPlan.setProId(designdrawOverallPlan.getProId().trim());
designdrawOverallPlan.setProName(designdrawOverallPlan.getProName().trim());
designdrawOverallPlan.setBaseInfo(user);
designdrawOverallPlanBaseService.insertDesigndrawOverallPlan(designdrawOverallPlan);
success = true;
}
}
result.put("code", code);
return result;
}
/**
* 校验时间格式为2018-01-02
* @param time
* @return
*/
public boolean validationTimeFormat(String time) {
boolean bool = false;
Pattern pattern = Pattern.compile("[0-9]*");
if(time != null && time.length() == ) {
//校验前四位是否为数字
if(pattern.matcher(time.substring(, )).matches()) {
//校验第五位是-
if("-".indexOf(time.substring(, ))!=-) {
//校验第6,7位是否为数字
if(pattern.matcher(time.substring(,)).matches()) {
//校验第8位是否为-
if("-".indexOf(time.substring(, ))!=-) {
//校验第9,10位是否为数字
if(pattern.matcher(time.substring(, )).matches()) {
bool = true;
}
}
}
}
} }
return bool;
}

方法:ReadInfoTableExcel().getExcelToOverallPlan(filePath);

 /**
* 获取excel里的信息
* @param filepath
* @param filetype
* @param uuid
* @return
*/
public List<DesigndrawOverallPlanPo> getExcelToOverallPlan(String filePath) {
//这儿导入使用两个方法原因:
//excel版本有03版本和07版本的区别,文件后缀名分别为.xls和.xlsx。它们对应的POI中的Workbook也是不同的,
//分别是HSSFWorkbook和XSSFWorkbook;对于不同版本的EXCEL文档要使用不同的工具类
try{
return addExcelToOverallPlanXSSF1(filePath);
}catch(Exception e){
try{
return addExcelToOverallPlanXSSF2(filePath);
}catch (Exception e1){
return null;
}
}
}

方法:addExcelToOverallPlanXSSF1 和 addExcelToOverallPlanXSSF2,这儿利用到了反射的方法使属性和字段值一一对应起来。

  /**
* 批量导入 方法1
* @param filePath
* @return
* @throws IOException
*/
public List<DesigndrawOverallPlanPo> addExcelToOverallPlanXSSF1(String filePath) throws IOException{
List<ZuobiaoInfo> zuobiaoInfos = new ArrayList<>();
List<DesigndrawOverallPlanPo> designdrawOverallPlans = new ArrayList<DesigndrawOverallPlanPo>();
XSSFWorkbook swb = new XSSFWorkbook(filePath);
XSSFSheet sheet = swb.getSheetAt();
zuobiaoInfos = new TableinfoTest().getOverallPlan();
//获取excel文件中的行数
int rowsNumber = this.getnumber(filePath);
for(int i=;i<rowsNumber;i++) {
boolean flag = true;
DesigndrawOverallPlanPo designdrawOverallPlan = new DesigndrawOverallPlanPo();
for(int j=;j<zuobiaoInfos.size();j++) {
Class c = designdrawOverallPlan.getClass();
Class[] cargs = new Class[];
int cellnumber = zuobiaoInfos.get(j).getZongzuobiao();
try {
Object realArgs = this.getXSSFSheetExcelvalue(i+, cellnumber, sheet);
if(realArgs!=null) {
cargs[] = realArgs.getClass();
String method = zuobiaoInfos.get(j).getMethod();
Method m = c.getMethod(method, cargs);
Object[] inArgs = new Object[];
inArgs[] = realArgs;
m.invoke(designdrawOverallPlan, inArgs);
}
} catch (Exception e) {
e.printStackTrace();
flag = false;
break;
}
}
if(flag) {
designdrawOverallPlans.add(designdrawOverallPlan);
}
}
return designdrawOverallPlans;
}
/**
* 批量导入 方法2
* @param filePath
* @return
* @throws IOException
*/
public List<DesigndrawOverallPlanPo> addExcelToOverallPlanXSSF2(String filePath) throws IOException{
List<ZuobiaoInfo> zuobiaoInfos = new ArrayList<>();
List<DesigndrawOverallPlanPo> designdrawOverallPlans = new ArrayList<DesigndrawOverallPlanPo>();
HSSFWorkbook xwb = new HSSFWorkbook(new FileInputStream(filePath));
HSSFSheet sheet= xwb.getSheetAt();
zuobiaoInfos = new TableinfoTest().getOverallPlan();
//获取excel文件中的行数
int rowsNumber = this.getnumber(filePath);
for(int i=;i<rowsNumber;i++) {
boolean flag = true;
DesigndrawOverallPlanPo designdrawOverallPlan = new DesigndrawOverallPlanPo();
for(int j=;j<zuobiaoInfos.size();j++) {
Class c = designdrawOverallPlan.getClass();
Class[] cargs = new Class[];
int cellnumber = zuobiaoInfos.get(j).getZongzuobiao();
try {
Object realArgs=this.getHSSFSheetExcelvalue(i+, cellnumber, sheet);
if(realArgs!=null) {
cargs[] = realArgs.getClass();
String method = zuobiaoInfos.get(j).getMethod();
if(!realArgs.toString().equals("")){
Method m = c.getMethod(method, cargs);
Object[] inArgs = new Object[];
inArgs[] = realArgs;
m.invoke(designdrawOverallPlan, inArgs);
}else{
flag = false;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
flag = false;
break;
}
}
if(flag) {
designdrawOverallPlans.add(designdrawOverallPlan);
}
}
return designdrawOverallPlans;
}

方法:this.getnumber(filePath);

 public int getnumber(String filepath)  {

        try{
XSSFWorkbook xwb = new XSSFWorkbook(filepath);
XSSFSheet sheet = xwb.getSheetAt();
int allsheetnumber=sheet.getLastRowNum();
System.out.println(allsheetnumber);
return allsheetnumber;
}catch (Exception e){
e.printStackTrace();
try { HSSFWorkbook xwb1 = new HSSFWorkbook(new FileInputStream(filepath));
HSSFSheet sheet1= xwb1.getSheetAt();
int allsheetnumber1=sheet1.getLastRowNum();
return allsheetnumber1;
}catch (Exception e1){
e1.printStackTrace();
return ;
}
} }

方法:this.getHSSFSheetExcelvalue(i+1, cellnumber, sheet);

 public String getHSSFSheetExcelvalue(int rownumber,int cellnumber,HSSFSheet sheet){
String str=null;
if(sheet.getRow(rownumber)!=null){
if(sheet.getRow(rownumber).getCell(cellnumber)!=null){
str=sheet.getRow(rownumber).getCell(cellnumber).toString();
}
}
return str;
}

方法:TableinfoTest().getOverallPlan(),其中setProId等是base类DesigndrawOverallPlanPo中属性proId的set()方法。

public class TableinfoTest {
List<ZuobiaoInfo> overallPlan = new ArrayList<ZuobiaoInfo>
(Arrays.asList(
new ZuobiaoInfo("setProId", "项目编号", ),
new ZuobiaoInfo("setProName", "项目名称", ),
new ZuobiaoInfo("setWorkContent", "工作内容", ),
new ZuobiaoInfo("setReserved1", "计划开始时间", ),
new ZuobiaoInfo("setReserved2", "计划结束时间", ),
new ZuobiaoInfo("setRemarks", "备注", )
));
public List<ZuobiaoInfo> getOverallPlan() {
return overallPlan;
} public void setOverallPlan(List<ZuobiaoInfo> overallPlan) {
this.overallPlan = overallPlan;
} }

类:ZuobiaoInfo

package com.landicorp.pilot.action.readexcel;

public class ZuobiaoInfo {

    public String Method;//方法名
public String name;
public int zongzuobiao;//纵坐标 public ZuobiaoInfo(){ }
public ZuobiaoInfo(String Method, String name ,int zongzuobiao){
this.Method=Method;
this .zongzuobiao=zongzuobiao;
this .name=name;
}
public int getZongzuobiao() {
return zongzuobiao;
}
public void setZongzuobiao(int zongzuobiao) {
this.zongzuobiao = zongzuobiao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public String getMethod() {
return Method;
} public void setMethod(String method) {
Method = method;
} }

jsp页面导入excel文件的步骤及配置的更多相关文章

  1. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  2. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

  3. 润乾填报页面导入excel后增加js动作

     当页面从excel中导入数据之后,自动加入js的检查功能,下面是如何在导入excel后直接引入js的功能实例: var _orgImportExcel = report1_importExcel ...

  4. 基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能

    思路: 1.首先,页面前端,上传附件,提交给后台,并带一个随机性的参数(可以用时间戳): 2.后端接收附件,做一系列的逻辑处理,无误后,将对应的文件存储在上传的目录下: 3.然后前端,上传附件成功后, ...

  5. SQL Server Management Studio 手动导入Excel文件

    SQL Server Management Studio(企业管理器) 手动导入Excel文件,有时间还是非常方便的,省去了写代码的麻烦. 具体步骤如下: 下面附上 创建游标的方法(用于循环读取临时表 ...

  6. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  7. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  8. phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。

    工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...

  9. YII使用PHPExcel导入Excel文件的方法

    1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...

随机推荐

  1. Oracle 【基 本 操 作】

    1.日期时间 select SYSDATE from DUAl; select TO_CHAR(SYSDATE, 'YYYY-MM-DD') from DUAL; select TO_CHAR(SYS ...

  2. Free中的buffer和cache理解

    吐血推荐文章: Linux内存中的Cache真的能被回收么? free中的buffer和cache: redhat对free输出的解读 两者都是RAM中的数据.简单来说,buffer是即将要被写入磁盘 ...

  3. 10.多shard场景下relevence score可能不准确

    主要知识点 多shard场景下relevence score可能不准确的原因 多shard场景下relevence score可能不准确解决方式     一.多shard场景下relevance sc ...

  4. PAT 1039. Course List for Student

    Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists o ...

  5. Selenium的安装和简单实用——PhantomJS安装

    简介 Selenium是一个用于Web应用程序测试的工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,S ...

  6. 【codeforces 801B】Valued Keys

    [题目链接]:http://codeforces.com/contest/801/problem/B [题意] 定义一个对两个字符串x,y的f(x,y)函数; 返回的是一个字符串; 这个返回的字符串的 ...

  7. 手工MAVEN建立WEBAPP项目并打包部署

    参考URL: http://my.oschina.net/zimingforever/blog/266028 最简单的东东,可以就两条命令: 建立目录及POM.XML: mvn archetype:g ...

  8. Spring MVC-集成(Integration)-生成PDF示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_pdf.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显示如何 ...

  9. 解决Linux ssh登录马上退出问题

    纠结了非常久,最终找到解决方法: 把sshd_config文件里的UsePAM改成no就能够了

  10. Codeforces Round #303 (Div. 2) E

    五道水题,但要手快才好...我手慢了,E题目都没看完TAT.... 想了一发,很水,就是一遍Dijk即可,使用优先队列,同时记录由哪条边转移而来 #include <iostream> # ...