导入功能只能支持 .xls 后缀的文件...功能不够强大..嘿嘿
已经处理了数字后面有.0的问题 导入poi的包就可以使用了
下面是主要功能:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
public class ImportAction {
private final int BUFFER_SIZE = 100;// 上传的字符流大小
private File file;
private String ext;
private String savePath;
private String fileFileName;
private float percent = 0;
private InputStream in = null;
private List<String> all;
private boolean copy(File src, File dst) {
float completedSize = 0;
float fileSize = 0;
try {
analytic(src);
in = new BufferedInputStream(new FileInputStream(src));
fileSize = in.available();
byte[] buffer = new byte[BUFFER_SIZE];
int len = 0;
while ((len = in.read(buffer)) > 0) {
completedSize += (long) len;
percent = completedSize / fileSize * 100;
}
} catch (Exception e) {
System.out.println(e);
} finally {
if (null != in) {
try {
in.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
return true;
}
public String sumPre() {
try {
PrintWriter out = ServletActionContext.getResponse().getWriter();
System.out.println(getFileFileName() + " filename");
String FileFileName2 = new String(getFileFileName().getBytes("utf-8"), "ISO8859-1");
out.print(percent + ":" + FileFileName2);
} catch (IOException e) {
System.out.println(e);
}
return null;
}
@SuppressWarnings("unchecked")
public void analytic(File is) {
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(is));
HSSFSheet sheet = workbook.getSheetAt(0);
all = new ArrayList<String>();
for (int x = 0; x <= sheet.getLastRowNum(); x++) { //for循环获取所有数据
HSSFRow row = sheet.getRow(x);
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
String value = "";
HSSFCell cell = (HSSFCell) cells.next();
switch (cell.getCellType()) { // 获取数据类型
case HSSFCell.CELL_TYPE_NUMERIC: // 数字
value = String.valueOf((int) cell.getNumericCellValue());//处理数字
break;
case HSSFCell.CELL_TYPE_STRING: // 字符串
value = String.valueOf(cell.getStringCellValue()); // 字符串处理
break;
case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
value = String.valueOf(cell.getBooleanCellValue()); // bool类型处理
break;
case HSSFCell.CELL_TYPE_FORMULA: // 公式
value = String.valueOf(cell.getCellFormula()); // 公式处理
break;
}
switch (((int) cell.getColumnIndex())) {//判断数据在哪列
case 0:
all.add("这是第1列的值 " + value);
break;
case 1:
all.add("这是第2列的值 " + value);
break;
case 2:
all.add("这是第3列的值 " + value);
break;
case 3:
all.add("这是第4列的值 " + value);
break;
}
}
}
} catch (Exception e) {
System.out.println(e);
}
}
public String upload() {
try {
File srcfile = this.getFile();// 依赖注入的方法取得文件域的对象
String uploadPath = ServletActionContext.getServletContext().getRealPath("upload");// 上传路径
ext = fileFileName.substring(fileFileName.lastIndexOf(".")).toLowerCase();// 取得后缀
File dstFile = new File(uploadPath, fileFileName);
copy(srcfile, dstFile);
} catch (Exception e) {
System.out.println(e);
}
return "success";
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getExt() {
return ext;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public void setExt(String ext) {
this.ext = ext;
}
public List<String> getAll() {
return all;
}
public void setAll(List<String> all) {
this.all = all;
}
}
下面是stuts配置文件:
<!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.multipart.maxSize" value="61440000000"></constant>
<package name="fileUpload" namespace="/" extends="struts-default">
<action name="fileUpload" class="org.yzxdemo.Import.action.ImportAction"
method="upload">
<!-- 动态设置Action中的savePath属性的值 -->
<param name="savePath">/upload</param>
<result name="success">/filejd.jsp</result>
</action>
<action name="sumPre" class="org.yzxdemo.Import.action.ImportAction" method="sumPre">
</action>
</package>
</struts>
下面是页面代码 :
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<script type="text/javascript" src="js/jquery-1.6.2.min.js">
</script>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
font-size: 14px;
}
-->
</style>
<script type="text/javascript">
parent.$("#filehid").attr("value", ""); //主要是用来做验证的
function aa() {
var val = $("input[name=file]").val();//获取输入框的值
var k = val.substring(val.lastIndexOf(".")).toLowerCase();//获取后缀名
if (k != ".xls") {
alert("请上传后缀名为xls的文件");
return false;
}
}
</script>
<body>
<br>
<table width="454">
<tr>
<td width="91" align="right">
文件路径:
</td>
<td width="351">
<form name='aform1' method='post' action="fileUpload.action"
enctype="multipart/form-data" onsubmit="return aa();">
<input name='file' type='file' />
<input type="submit" value="上传" />
</form>
</td>
</tr>
</table>
</body>
</html>
filejd.jsp主要是用来输出导入的值:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<body>
<table width="100%" height="21%">
<s:iterator value="all">
<tr height="20">
<td width="100%" valign="top"><s:property/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
分享到:
相关推荐
ssh2整合poi导入导出excel实例,将工程导入myeclipce就可以运行,数据库采用mysql,源码具体使用见工程里面的文档,界面美观,一个很不错的实例,分享给大家
SSH框架中关于EXCEL表格导入到MySQL数据库
本人实际项目功能简化出来的小功能,由三大框架ssh构成,使用的是注解方式。项目中去除了连接数据库那一块,如需数据库操作,请进行相应修改。使用方式:直接用eclipse把项目导入进去,配置Tomcat7.0运行即可
SSH2框架下实现的导入导出EXCEL小案例,有详细的注释
简单的SSH三层架构+Ajax实现Google自动搜索极为相似版+直接Excel导入数据库 附加数据库时请将数据库的名字改为 student_manage
ssh整合web导出excel
SSH框架整合,包括发送邮件,excel文件的及文件上传下载等一般项目里面用到的框架,完整实现在权限管理功能,逻辑性强和代码结构清晰,对新手学开发有很好的帮助,这个是企业里面可以运行的项目。
OA (ssh) 基本实现(poi 生成 Excel , struts2动态下载 mysql数据库文件) 学习笔记(含源代码) 借鉴 风中叶 老师的视频,写的文章,代码比较详实。 说了很多我的看法,和思考,做了充分的日志
程序使用Struts2(SSH即Struts2+Hibernate+Spring)+POI+MySQL实现Excel动态数据导入和导出,程序源码文件附带运行说明
这个一个比较完整的ssh整合后实现导入导出excel、百度富文本编辑器使用、highcharts统计图表应用、clob大对象处理等综合性、实用性比较强的案例代码实现
JAVA 操作Excel导入 核心代码,是ssh的结构
基于全注解的SSH2框架 有很详细的代码讲解 并且通过日志配置保存数据库以及数据库导入导出excel文件
1.本动态导入导出Excel工程导入Eclipse即可用行,支持所有版本的Excel导入导出。...2.程序使用Struts2+POI+SQLSever(SSH即Struts2+Hibernate+Spring)实现Excel动态数据导入和导出,压缩包内含程序源码文件。
自己写的绝对好用,很好用的,在ssh框架中用
SSH框架ORACLE数据导入导出工具最近要进行设备数据处理,CSV数据量已经超过百万级别,EXCEL无法进行处理,做了一个基于SSH框架,实现CSV文件上传,数据过滤导入ORACLE数据库,查询分析数据,并生成EXCEL文件,实现...
导入导出的excel优化,java代码,ssh框架,将excel批量保存
3.导出EXCEL表格,导入EXCEL表内容到数据库 4.HTML导出word文档 5.根据模板生成各种文件(word、txt等) 6.发送邮件 7.文件的上传与下载 附件说明:common-yujian-api.rar 文档说明 common-yujian.jar jar工具包 ...
将excel的数据导入到Oracle数据库中,根据不同的数据库,可以更改BaseDao里面的URL和lib里面的数据库驱动jar包。本人只用了Struts2,若想SSH集成,自己弄去,没多大区别的
主要是关于exel文件的导入,里面牵涉到POI的兼容excel03和07运用,用到的框架技术主要是springMVC+SSH+extjs ,里面涉及到java反射