现在的位置: 首页 > 综合 > 正文

jxl导入导出总结

2018年01月31日 ⁄ 综合 ⁄ 共 5447字 ⁄ 字号 评论关闭

jar包
jxl.jar
commons-fileupload-1.2.2.jar
commons-io-1.4.jar

jar包和实例下载地址:http://download.csdn.net/detail/w5167839/7902223

思路:
上传
1.上传的文件通过http协议指定格式传输到后台
method="post" action="upload.action" enctype="multipart/form-data"
 
2.后台获取文件数据 (可以限制上传文件大小upload.setSizeMax())
DiskFileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload upload = new ServletFileUpload(factory);
 List<FileItem> items = upload.parseRequest(req);
 
3.在指定目录下创建相同名称的文件然后将数据内容写入
String path = request.getServletContetxt().getRealPath("upload").getPath()+"\"+
+item.getName().substring(item.getName().lastIndexOf("/")+1);
item.write(new File(path));

下载
  1.指定目录创建下载文件new File(req.getServletContext().getRealPath("down")+"/"+"DownExcel.xls");
  2.创建写入类WritableWorkbook wwb =WriteWorkbook.createWorkbook(file);
              WritableSheet ws = wwb.createSheet("小学生", 0);
  3.写入数据Label label =new Label(i,j,"xxx");
            ws.addCell(label);
   4.写入然后关闭流
    wwb.write();
    wwb.close();
  5.网页显示下载文件路径链接;
    out.println("<script>window.location.href='down/DownExcel.xls'</script>");
  JSP

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
  <head>
  </head>
  <body>
	<form method="post" action="upload._action" enctype="multipart/form-data">
	   <input type="button" value="导出excel" onClick="window.location.href='down._action'"/>
	   <input type="file" name="file"/>
	   <input type="submit" value="导入excel" />
	</form>  
  </body>
</html>

UploadDownServlet

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.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadDownServlet extends HttpServlet {
	/**
	 *creater : lh
	 *UploadDownServlet.java
	 *function : 上传下载;
	 */
	
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String uri = req.getRequestURI().substring(req.getRequestURI().lastIndexOf("/")+1);
		req.setCharacterEncoding("gbk");
		resp.setContentType("text/html;charset=gbk");
		PrintWriter out = resp.getWriter();
		if(uri.equals("upload._action")){
			System.out.println(uri);
			DiskFileItemFactory factory = new DiskFileItemFactory();
			//设置磁盘缓存;
			factory.setSizeThreshold(5*1024);
			ServletFileUpload upload = new ServletFileUpload(factory);
//			upload.setSizeMax(5*1024*1024);
			//将请求转换成表单域的流
			try {
				List<FileItem> fileitem = upload.parseRequest(req);
				for(FileItem item : fileitem){
					if(!item.isFormField()){
						//只能上传excel文件;
						if(item.getName().substring(item.getName().lastIndexOf(".")+1).equals("xls")){
							//指定目录路径
							String prevPath = req.getServletContext().getRealPath("upload");
							//分割文件名(有些浏览器会将绝对路径返回)
							String nextPath = item.getName().substring(item.getName().lastIndexOf("/")+1);
						
							File excel = new File(prevPath+"/"+nextPath);
							//将数据写入excel中
							item.write(excel);
							//读取excel内容;
							InputStream is = new FileInputStream(excel);
						
							Workbook wwb = Workbook.getWorkbook(is);
						
							Sheet sheet = wwb.getSheet(0);
						
							int cols = sheet.getColumns();
						
							int rows = sheet.getRows();
						
							for(int j =0;j<rows;j++){
								for(int i = 0;i<cols;i++){
									Cell cell = sheet.getCell(i, j);
									System.out.println(cell.getContents());
								}
							}
						}
					}
				}
			}catch (Exception e) {
				e.printStackTrace();
			}
		}

		if(uri.equals("down._action")){
			//指定目录路径
			String prevPath = req.getServletContext().getRealPath("down");
			File file = new File(prevPath+"/"+"DownExcel.xls");
			//创建写入工作薄类
			WritableWorkbook wwb =Workbook.createWorkbook(file);
			//创建写入表类
			WritableSheet ws = wwb.createSheet("小学生", 0);
			String title[] = {"学校","姓名","年龄"};
			List<String> list =new ArrayList<String>();
			list.add("一中1");
			list.add("张三1");
			list.add("201");
			list.add("二中1");
			list.add("李四1");
			list.add("211");
			list.add("三中1");
			list.add("王五1");
			list.add("221");
			
//			//format 插入格式
//			WritableCellFormat format1  =new WritableCellFormat();
//			format1.setBackground(Colour.DARK_YELLOW);
//			format1.setAlignment(Alignment.CENTRE);
//			format1.setVerticalAlignment(VerticalAlignment.BOTTOM);
//			
//			WritableCellFormat format2  =new WritableCellFormat();
//			format2.setAlignment(Alignment.JUSTIFY);
//			format2.setVerticalAlignment(VerticalAlignment.CENTRE);
//			
//			WritableCellFormat format3  =new WritableCellFormat();
//			format3.setAlignment(Alignment.LEFT);
//			format3.setVerticalAlignment(VerticalAlignment.JUSTIFY);
//			
//			WritableCellFormat format4  =new WritableCellFormat();
//			format4.setAlignment(Alignment.RIGHT);
			
			//导入标题
			try {
			for(int i=0;i<title.length;i++){
				    System.out.println(title[i]+title.length);
					Label label =new Label(i,0,title[i]);
					ws.addCell(label);
			}
			int n=0;
			int j=1;
			//导入内容
			while(n<list.size()){
				for(int i=0;i<title.length;i++){
					Label label =new Label(i,j,list.get(n));
					ws.addCell(label);
					n++;
				}
				j++;
			}
			wwb.write();
			wwb.close();
			//下载链接
			out.println("<script>window.location.href='down/DownExcel.xls'</script>");
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
 }
}

web.xml

  <servlet-name>upload_down</servlet-name>
  	<servlet-class>com.lh.servlet.UploadDownServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>upload_down</servlet-name>
  	<url-pattern>*._action</url-pattern>
  </servlet-mapping>

 

抱歉!评论已关闭.