`
qq630703545
  • 浏览: 2259 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

ssh2Excel导入

 
阅读更多

  导入功能只能支持 .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>

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics