jxl导入导出总结

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>
时间: 2024-10-09 02:10:27

jxl导入导出总结的相关文章

Excel jxl导入导出

JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 现在发布的稳定版本是V2.0,提供以下功能: 从Excel 95.97.2000等格式的文件中读取数据: 读取Exc

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;

JXL导入/导出

近两年技术没有过细化总结,突然心血来潮,随手来总结一些问题,废话不多说,切入正题. jxl导入导出这里主要用的EXTJS+Sh  前端:创建按键,调用触发事件,根据触发事件中url找到控制层相对应的路径 按键 2.js /* * 导入 */ importItem : function() { Ext.QuickTips.init(); Ext.onReady(function() { var form = new Ext.form.FormPanel({ baseCls : 'x-plain',

jxl导入导出实例

1 package com.tgb.test; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import jxl.Cell; 9 import jxl.Sheet; 10 import jxl.Workbook; 11 import jxl.write.Label; 12 import jxl.write.Numb

jxl导入导出Excel

Excel的导入导出在项目中经常用到,比较常用的解析架包是jxl和poi.这里首先介绍jxl是如何实现的. 通过参考网上的写法跟我个人的理解: 导入Excel:通过本地文件得到一个输入流,然后根据Excel的结构来解析数据. 导出Excel:声明一个输出流对象,根据参数来得到一个workbook,用来写入数据的.然后根据Excel表的结构来想workbook添加元素即可.sheet.cell.... 导出Excel,导出含有图片的数据:jxl只支持png格式的图片. 导出对象到Excel表:其实

java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用! 简单先写一下目录的建立的主要代码,测试用的 List ls = new ArrayList();//报表名称列表  ls.add("BB_BB03");  ls.add("BB_BB05");  ls.add("BB_BB06"); try { 

excel的导入导出的实现

1.创建Book类,并编写set方法和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.out.println("调用了类型方法"); 11 return type; 12 } 13 14 pu

利用反射实现通用的excel导入导出

如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.ou

java实现文件批量导入导出实例(兼容xls,xlsx)

1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出.另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了. 2.POI使用详解 2.1 什么是Apache POI? Apache POI是Apache软件基金会的开放源码函式库,