博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jxl导出Excel文件
阅读量:4493 次
发布时间:2019-06-08

本文共 10105 字,大约阅读时间需要 33 分钟。

一、java项目实现读取Excel文件和导出Excel文件

实现读取和导出Excel文件的代码:

package servlet;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.CellFormat;import jxl.format.Colour;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class Excel {	/**	 * @param args	 * Excel读写程序	 * @throws IOException 	 * @throws BiffException 	 */	public static void main(String[] args) throws BiffException, IOException {		//导出Excel文件		writeExcel();		//读取Excel文件		//readExcel();	}		//读Excel文件	public static void readExcel() throws BiffException, IOException{		 //创建一个list 用来存储读取的内容		  List list = new ArrayList();		  Workbook rwb = null;		  Cell cell = null;		  		  //创建输入流		  InputStream stream = new FileInputStream("d:\\testJXL.xls");		  		  //获取Excel文件对象		  rwb = Workbook.getWorkbook(stream);		  		  //获取文件的指定工作表 默认的第一个		  Sheet sheet = rwb.getSheet(0);  		 		  //行数(表头的目录不需要,从1开始)		  for(int i=0; i

导出结果:

二、web项目中实现导出Excel文件

2.1、新建动态web项目

新建项目后在项目中添加jxl-2.6.jar文件和servlet-api.jar文件。

2.2、新建数据实体对象Member.java

package entity;import java.util.Date;public class Member implements java.io.Serializable {	// Fields	private String id;	private String checkOrg;	private String sn;	private String memberName;	private String sex;	private String cardId;	private String duty;	private String title;	private String academic;	private String special;	private String workTime;	private String memo;	private String role;		private Date lastModify;	    private Date regTime;	// Constructors	/** default constructor */	public Member() {	}	/** full constructor */	public Member(String checkOrg, String sn, String memberName, String sex,			String cardId, String duty, String title, String academic,			String special, String workTime, String memo, String role, Date lastModify, Date regTime) {		this.checkOrg = checkOrg;		this.sn = sn;		this.memberName = memberName;		this.sex = sex;		this.cardId = cardId;		this.duty = duty;		this.title = title;		this.academic = academic;		this.special = special;		this.workTime = workTime;		this.memo = memo;		this.role = role;		this.lastModify = lastModify;		this.regTime = regTime;	}	// Property accessors	public String getId() {		return this.id;	}	public void setId(String id) {		this.id = id;	}	public String getCheckOrg() {		return this.checkOrg;	}	public void setCheckOrg(String checkOrg) {		this.checkOrg = checkOrg;	}	public String getSn() {		return this.sn;	}	public void setSn(String sn) {		this.sn = sn;	}	public String getMemberName() {		return this.memberName;	}	public void setMemberName(String memberName) {		this.memberName = memberName;	}	public String getSex() {		return this.sex;	}	public void setSex(String sex) {		this.sex = sex;	}	public String getCardId() {		return this.cardId;	}	public void setCardId(String cardId) {		this.cardId = cardId;	}	public String getDuty() {		return this.duty;	}	public void setDuty(String duty) {		this.duty = duty;	}	public String getTitle() {		return this.title;	}	public void setTitle(String title) {		this.title = title;	}	public String getAcademic() {		return this.academic;	}	public void setAcademic(String academic) {		this.academic = academic;	}	public String getSpecial() {		return this.special;	}	public void setSpecial(String special) {		this.special = special;	}	public String getWorkTime() {		return this.workTime;	}	public void setWorkTime(String workTime) {		this.workTime = workTime;	}	public String getMemo() {		return this.memo;	}	public void setMemo(String memo) {		this.memo = memo;	}	public String getRole() {		return this.role;	}	public void setRole(String role) {		this.role = role;	}	public Date getLastModify() {		return lastModify;	}	public void setLastModify(Date lastModify) {		this.lastModify = lastModify;	}	public Date getRegTime() {		return regTime;	}	public void setRegTime(Date regTime) {		this.regTime = regTime;	}}

2.3、添加servlet文件:ExportExlServlet.java

package servlet;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.Date;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.Workbook;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.Colour;import jxl.format.VerticalAlignment;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import entity.Member;public class ExportExlServlet extends HttpServlet {	private WritableWorkbook wwb = null;	private WritableSheet sheet = null;	private WritableSheet sheetk = null;	private WritableSheet sheeth = null;	@Override	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		String checkOrgId = null;		String orgName = "XX单位";		try {			exportCheckOrgMember(checkOrgId, orgName, response);		} catch (RowsExceededException e) {			e.printStackTrace();		} catch (WriteException e) {			e.printStackTrace();		}		exportExcel(response, wwb, orgName + "人员明细表");	}		/**	 * 导出数据处理	 * @param checkOrgId	 * @param orgName	 * @param response	 * @throws IOException	 * @throws RowsExceededException	 * @throws WriteException	 */		private void exportCheckOrgMember(String checkOrgId,String orgName, HttpServletResponse response)			throws IOException, RowsExceededException, WriteException {		//此处listMember需要从数据库中取值		List
listMember = new ArrayList
(); Member member1 = new Member("str", "str", "str", "str", "str", "str", "str", "str", "str", "str", "隶书", "str", new Date(), new Date()); listMember.add(member1); listMember.add(member1); listMember.add(member1); System.out.println(listMember.size()+"***"); response.setContentType("application/ms-excel"); String sheetName_ = orgName + "人员明细表";//文件名==》XX人员明细表 String sheetName = new String(sheetName_.getBytes(),"iso8859-1"); response.addHeader("Content-Disposition", "attachment;filename="+ sheetName + ".xls"); OutputStream os = response.getOutputStream(); wwb = Workbook.createWorkbook(os); wwb.setProtected(false); //EXECL中的一个sheet sheetk = wwb.createSheet("人员明细", 0); //============设置execl表的一些属性=========== WritableFont wf = new WritableFont(WritableFont.ARIAL, 13,WritableFont.BOLD, false); WritableCellFormat wcf = new WritableCellFormat(wf); WritableFont wf1 = new WritableFont(WritableFont.ARIAL, 13,WritableFont.NO_BOLD, false); WritableCellFormat wcf1 = new WritableCellFormat(wf1); wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK); wcf.setVerticalAlignment(VerticalAlignment.CENTRE); wcf1.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK); wcf1.setVerticalAlignment(VerticalAlignment.CENTRE); //============设置execl表的一些属性======END===== /*sheetk.mergeCells(0, 0, 9, 0); sheetk.addCell(new Label(0, 0, "人员明细表《这是合并的单元格》", wcf)); //添加单元格 new Label(列位置,行位置,单元格内容,WritableCellFormat对象) //此处第二个参数1,代表第二行,上面合并的单元格是第一行 sheetk.addCell(new Label(0, 1, "序号", wcf)); sheetk.addCell(new Label(1, 1, "姓名", wcf)); sheetk.addCell(new Label(2, 1, "性别", wcf)); sheetk.addCell(new Label(3, 1, "身份证号", wcf)); sheetk.addCell(new Label(4, 1, "学历", wcf)); sheetk.addCell(new Label(5, 1, "专业", wcf)); sheetk.addCell(new Label(6, 1, "职称", wcf)); sheetk.addCell(new Label(7, 1, "职务", wcf)); sheetk.addCell(new Label(8, 1, "角色", wcf)); sheetk.addCell(new Label(9, 1, "备注", wcf));*/ String[] title = {"编号", "姓名", "性别", "身份证号", "学历", "专业", "职称", "职务", "角色", "备注"}; Label label; for (int i = 0; i < title.length; i++) { // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z // 在Label对象的子对象中指明单元格的位置和内容 //label = new Label(i, 0, title[i]); label = new Label(i, 0, title[i], Excel.getHeader()); // 将定义好的单元格添加到工作表中 sheetk.addCell(label); } // 设置字体 jxl.write.WritableFont wfont = new jxl.write.WritableFont(WritableFont.createFont("隶书"), 20); WritableCellFormat font = new WritableCellFormat(wfont); //循环数据,将数据填充到单元格内 int t = 1; for (Member member:listMember) { sheetk.addCell(new Label(0, t, t+"", wcf1)); sheetk.addCell(new Label(1, t, member.getMemberName(), wcf1)); sheetk.addCell(new Label(2, t, member.getSex(), wcf1)); sheetk.addCell(new Label(3, t, member.getCardId(), wcf1)); sheetk.addCell(new Label(4, t, member.getAcademic(), wcf1)); sheetk.addCell(new Label(5, t, member.getSpecial(), wcf1)); sheetk.addCell(new Label(6, t, member.getTitle(), wcf1)); sheetk.addCell(new Label(7, t, member.getDuty(), wcf1)); sheetk.addCell(new Label(8, t, member.getRole(), wcf1)); sheetk.addCell(new Label(9, t, member.getMemo(), font)); t++; } } /* * 执行导出操作 */ private void exportExcel(HttpServletResponse response, WritableWorkbook retValue, String filename) { response.setContentType("application/ms-excel"); /*response.addHeader("Content-Disposition", "attachment; filename=" + filename + ".xls");*/ try { retValue.write(); retValue.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } }}

2.4、在web.xml文件中添加servlet配置:

index.jsp
ExportExlServlet
servlet.ExportExlServlet
ExportExlServlet
/ExportExlServlet

2.5、添加index.jsp请求servlet

    This is my JSP page. 
导出数据

  导出结果:

 源码下载地址:

转载于:https://www.cnblogs.com/ablejava/p/5788655.html

你可能感兴趣的文章
mainline.js主线
查看>>
fseek()
查看>>
Python学习笔记——PyQt控件中文字居中显示
查看>>
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
查看>>
Beta阶段敏捷冲刺前准备
查看>>
mini web框架-3-替换模板
查看>>
Siamese Network简介
查看>>
svg学习(三)rect
查看>>
ruby 模块 的引入
查看>>
CI Weekly #21 | iOS 持续集成快速入门指南
查看>>
隐藏显示终端的光标(shell echo,linux c printf)
查看>>
利用DFS求联通块个数
查看>>
总结:
查看>>
spring boot 整合redis --sea 方式1
查看>>
Android Http请求方法汇总
查看>>
缓存技术PK:选择Memcached还是Redis?
查看>>
Laravel-lumen 配置JWT
查看>>
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
推荐一款能写原创诗词的小程序
查看>>