SpringMvc 使用poi导入导出Excel

controller <pre name="code" class="java">    @ResponseBody
    @RequestMapping(value = "/chxm/exportAndUpdate")
    public void exportAndUpdate(@RequestParam(value = "projectId") String projectId,
    		@RequestParam(value = "projectName") String  projectName,HttpServletResponse response){
    	chxmService.exportAndUpdate(projectId,projectName,response);
    }

service
<pre name="code" class="java">@Override
	public void exportAndUpdate(String projectId,String projectName,HttpServletResponse response) {
		try{
			response.setContentType("application/vnd.ms-excel;charset=utf-8");
            OutputStream outputStream = response.getOutputStream();
            String fileName = new String((projectName).getBytes(), "utf-8");
            response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");// 组装附件名称和格式
            response.setCharacterEncoding("utf-8");

            // 准备excel文件内容
            String[] zxxTitles = { "幢号","建筑物名称","楼栋西南角X坐标","楼栋西南角Y坐标","占地面积","建筑面积",
            					"基本用途","总层数","地上层数","地下层数","单元数","建筑结构", "特殊幢标识符","备注" };
            List<TZxx> zxxs = zxxDao.findZxxByChxmId(Long.parseLong(projectId));
            String[] cxxTitles = { "所属幢号", "实际层", "名义层","层建筑面积","层阳台面积","层共有建筑面积",
            					"层分摊建筑面积","层半墙面积","层高","备注","层图文件夹" };
            List<TCxx> cxxs = cxxDao.findHxxByChxmId(Long.parseLong(projectId));
            String[] hxxTitles = { "幢号","户编号", "单元", "户型结构","所在层(最低层)","所在层(最高层)","房屋用途",
            					"套内面积","分摊面积","建筑面积","地下部分建筑面积","其他建筑面积","分摊系数","房屋类型",
            					"房屋性质","设计用途","阳台数","封闭阳台数","非封闭式阳台","备注","房屋坐落","户型","户型图文件夹" };
            List<THxx> hxxs = hxxDao.findHxxByChxmId(Long.parseLong(projectId));
            String[] hcgTitles = { "幢号","户编号","层高","实际层","备注" };
            List<THcg> hcgs = hcgDao.findHcgxxByChxmId(Long.parseLong(projectId));

            // 创建一个workbook 对应一个excel应用文件
            XSSFWorkbook workBook = new XSSFWorkbook();
            this.export(workBook,"幢",zxxTitles,zxxs,TZxx.class);
            this.export(workBook,"层",cxxTitles,cxxs,TCxx.class);
            this.export(workBook,"户",hxxTitles,hxxs,THxx.class);
            this.export(workBook,"户层高",hcgTitles,hcgs,THcg.class);
            try{
                workBook.write(outputStream);
                outputStream.flush();
                outputStream.close();
                logger.info("项目"+fileName+"更正导出幢、层、户、户层高信息OK!");
            }catch (IOException e){
            	logger.info("项目"+fileName+"更正导出幢、层、户、户层高信息error!");
            }finally{
	            try
	            {
	            	outputStream.close();
	            }
	            catch (IOException e)
	            {
	                e.printStackTrace();
	            }
            }
		}catch (IOException e)
        {
            e.printStackTrace();
        }
	}

	private void export(XSSFWorkbook workBook, String sheetName, String[] titles, List<?> list ,Class<?> class1) {

        // 在workbook中添加一个sheet,对应Excel文件中的sheet
        XSSFSheet sheet = workBook.createSheet(sheetName); 

        // 构建表头
        XSSFRow headRow = sheet.createRow(0);

        XSSFCell cell = null;
        for (int i = 0; i < titles.length; i++)
        {
            cell = headRow.createCell(i);
            cell.setCellValue(titles[i]);
            sheet.setColumnWidth(i,titles[i].getBytes().length * 256);
        }  

        // 构建表体数据
        if (list != null && list.size() > 0)
        {
        	if(class1.getName().equals(TZxx.class.getName())){
        		for (int j = 0; j < list.size(); j++){
        			XSSFRow bodyRow = sheet.createRow(j + 1);
                	TZxx zxx = (TZxx) list.get(j);
                	//幢号
                	cell = bodyRow.createCell(0);
                	cell.setCellValue(zxx.getZh_());
                	//建筑物名称
                	cell = bodyRow.createCell(1);
                	cell.setCellValue(zxx.getFcqmc());
                	//楼栋西南角X坐标
                	cell = bodyRow.createCell(2);
                	cell.setCellValue(zxx.getFxnjx());
                	//楼栋西南角Y坐标
                	cell = bodyRow.createCell(3);
                	cell.setCellValue(zxx.getFxnjy());
                	//占地面积
                	cell = bodyRow.createCell(4);
                	cell.setCellValue(zxx.getBzzdmj());
        		}
        	}else if (class1.getName().equals(TCxx.class.getName())) {
        		for (int j = 0; j < list.size(); j++){
        			XSSFRow bodyRow = sheet.createRow(j + 1);
                	TCxx cxx = (TCxx) list.get(j);  

                	//所属幢号
                	cell = bodyRow.createCell(0);
                	cell.setCellValue(cxx.getZh_());
                	//实际层
                	cell = bodyRow.createCell(1);
                	cell.setCellValue(cxx.getSjc());
                	//名义层
                	cell = bodyRow.createCell(2);
                	cell.setCellValue(cxx.getMyc());
                	//层建筑面积
                	cell = bodyRow.createCell(3);
                	cell.setCellValue(cxx.getBcjzmj());
                	//层阳台面积
                	cell = bodyRow.createCell(4);
                	cell.setCellValue(cxx.getBcytmj());
                	//层共有建筑面积
                	cell = bodyRow.createCell(5);
                	cell.setCellValue(cxx.getBcgyjzmj());
		<span style="white-space:pre">	</span>}
        	}else if(class1.getName().equals(THxx.class.getName())){
        		for (int j = 0; j < list.size(); j++){
        			XSSFRow bodyRow = sheet.createRow(j + 1);
					THxx hxx = (THxx) list.get(j);  

			//幢号
                	cell = bodyRow.createCell(0);
                	cell.setCellValue(hxx.getZh_());
                	//户编号
                	cell = bodyRow.createCell(1);
                	cell.setCellValue(hxx.getHh());
                	//单元
                	cell = bodyRow.createCell(2);
                	cell.setCellValue(hxx.getDyh());
                	//户型结构
                	cell = bodyRow.createCell(3);
                	cell.setCellValue(hxx.getJg());
                	//所在层(最低层)
                	cell = bodyRow.createCell(4);
                	cell.setCellValue(hxx.getLayer());
                	//所在层(最高层)
                	cell = bodyRow.createCell(5);
                	cell.setCellValue(hxx.getToplayer());
	        	}
            }else if(class1.getName().equals(THcg.class.getName())){
        		for (int j = 0; j < list.size(); j++){
        			XSSFRow bodyRow = sheet.createRow(j + 1);
        			THcg hcg = (THcg) list.get(j);  

			//幢号
                	cell = bodyRow.createCell(0);
                	cell.setCellValue(hcg.getZh_());
                	//户编号
                	cell = bodyRow.createCell(1);
                	cell.setCellValue(hcg.getHh());
                	//层高
                	cell = bodyRow.createCell(2);
                	cell.setCellValue(hcg.getScg().toString());
                	//实际层
                	cell = bodyRow.createCell(3);
                	cell.setCellValue(hcg.getSjc());
                	//备注
                	cell = bodyRow.createCell(4);
                	cell.setCellValue(hcg.getBz());
        		}
        	}
	}
}

dao

				
时间: 2024-10-12 15:27:37

SpringMvc 使用poi导入导出Excel的相关文章

poi导入导出excel后记

续上一篇:在springmvc项目中使用poi导入导出excel http://blog.csdn.net/kingson_wu/article/details/38942967 一. 导入时,发现了不少问题,如果是导出excel之后,在里面不删除行,只是简单的修改一些数据的话,则不会出问题,但如果是删除了一些行,或者excel表不是导出的,而是另外的excel文件,里面有很多数据ctrl+a,ctrl+v生成的,那么导入的时候就会出问题,因为里面虽然看起来的数据就那么多,但是有一些数据痕迹.很

基于SSM的POI导入导出Excel实战第一篇-SSM框架的整合

业务背景:在JavaWeb应用开发中,经常需要将应用系统中某些业务数据导出到Excel中,又或者需要将这些业务数据先收集到Excel然后一键导入到系统 业务需求:如何用Java实现导入导出Excel 需求分析:目前流行的Java导入导出Excel的框架有POI跟JXL,这两者的优缺点在这里我就不作比较了,感兴趣的童鞋可以自行搜索了解一下; 技术选型:从本文开始,我将分享一下如何基于SSM框架+POI实现Java应用导入导出Excel,数据库采用mysql5.6,应用服务器采用tomcat7 工具

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

基于SSM的POI导入导出Excel实战第二篇-导出EXCEL

业务需求:这里我以产品信息为例,用于POI导入导出Excel实战的操作对象 需求分析:我们要导出的数据格式比较简单,其实就是待导出的表(视图)的数据,如下图所示: 实现思路:A.会发现待导出的数据列表是一个矩阵式的格式,即二维的形式 B.其中的头部id name unit price stock 等字段field是固定不变的,将会充当excel的头部 C.以数据行的角度观察数据列表,会发现每一行每一列的值都是B所指的那些字段一一对应的取值value D.由此可以得出这些数据组织是由每一行数据组成

基于SSM的POI导入导出Excel实战尾篇-其余功能实战(mvc三层开发模式体验)

业务需求:前几篇基本已经介绍完毕项目的核心功能,即POI导入导出Excel,为了整个项目的完整性,并让诸位童鞋体验体验企业级javaweb应用mvc三层模式的开发流程,本文将介绍一下项目的其余功能,包括搜索,新增,修改,删除 需求分析:作为程序员,在项目中经常接触的就是CRUD了,本篇博文将整合jquery-easyui框架(版本采用1.5.5.4)异步实现上述几个功能,给项目画上一个完整的句号!当然啦,在刚开始开发时,对于自己开发好的后端接口完全可以用Postman进行模拟(我就是这样做的),

在springmvc项目中使用poi导入导出excel

首先要导入spring相关包,poi,和fileupload包,我是使用maven构建的. 一.导入excel (1)使用spring上传文件 a.前台页面提交 <form name="excelImportForm" action="${pageContext.request.contextPath}/brand/importBrandSort" method="post" onsubmit="return checkImpor

基于SSM的POI导入导出Excel实战第二篇-导入EXCEL

业务需求:上文已经实现了产品信息Excel的导出,接下来将用POI实现Excel导入 需求分析:导入其实是导出的逆过程,数据格式是一样的,均为矩阵式(二维)的数据格式,下面将以导出的模板作为Excel导入时数据填充的文件! 下面就直接进入正文,在阅读正文源码期间如果有相关问题可以加我QQ:1974544863 咨询我 或者加群:583522159 进行技术讨论.下面是我的个人公众号,感兴趣的童鞋可以关注(有干货以及项目实战分享哦) 好了,让我们进入代码实战吧! 在实战之前,介绍一下项目使用的"状

java中使用poi导入导出excel文件_并自定义日期格式

Apache POI项目的使命是创造和保持java API操纵各种文件格式基于Office Open XML标准(OOXML)和微软的OLE复合文档格式(OLE2)2.总之,你可以读写Excel文件使用java.此外,您可以读取和写入MS Word和PowerPoint文件使用java.Apache POI是java Excel解决方案(Excel 97-2008). 需要jar: poi-3.9-20121203.jar 导出 public static void main(String[]

springMVC框架+POI组件导出Excel

目的:访问url(http://localhost:8080/POIOutputExcel/outputexcel.do)实现excel导出,效果图如下: 文件目录(配置文件就不多说了,跟前面的随笔一样一样的) User.java public class User { private Integer id; private String name; private Double cash; //此处省略getter/setter方法 } Datalist.java public class D