前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >POI 方式-excle 表格导出实现-java-poi

POI 方式-excle 表格导出实现-java-poi

作者头像
微风-- 轻许--
发布2022-04-13 08:48:49
8830
发布2022-04-13 08:48:49
举报
文章被收录于专栏:java 微风java 微风

效果:

jsp 页面 用的Bootstrap :

<li class="dropdown">

代码语言:javascript
复制
	                    	<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-file-excel-o"></i></a>
	                        <ul class="dropdown-menu" role="menu">
	                          <li><a href="javascript:void(0);" id="excel">excel导出 </a></li>
	                        </ul>
	                    </li>

表格是用的jquery 的dataTable ,js :

代码语言:javascript
复制
// 导出 
	    	$("#excel").click(function(){
	    		
	    		 // 查询条件: 
                var account = $('#account').val();
                var riceCount = $('#riceCount').val();
                var format = $('#format').val();
                var regioin = $('#regioin').val();
               
	            var url = "/order/excelBegFlowInfo?account="+
	            account+"&riceCount="+riceCount+"&format="+format+"&regioin="+regioin;
	            if ($("#datatable tbody tr").text() == "表中数据为空") {
	            	$.tooltip("没有可导出的数据", false);
	            	return;
	            }
	            kk = url;
			})

后台调用部分:

代码语言:javascript
复制
/**
	 * 导出 
	 * @throws Exception
	 */
	@RequestMapping("/excelBegFlowInfo")
	public void excelBegFlowInfo(HttpServletResponse response, BegFlowInfo info) throws Exception {
		// 要导出的列表数据
		List<BegFlowInfo> totalList = _begFlowOrderService.selectBegFlowInfo(info);
		if (CollectionUtils.isEmpty(totalList)) {
			return;
		}
		List<List<Object>> list = new ArrayList<List<Object>>();	
		
		for (BegFlowInfo begFlowInfo : totalList) {
			List<Object> dataList = new ArrayList<Object>();
			dataList.add(begFlowInfo.getId() == null ? "":begFlowInfo.getId());
			dataList.add(begFlowInfo.getCreateDate() == null ? "":begFlowInfo.getCreateDate());
			dataList.add(begFlowInfo.getAccount() == null ? "":begFlowInfo.getAccount());
			dataList.add(begFlowInfo.getCarrier() == null ? "":begFlowInfo.getCarrier());
			dataList.add(begFlowInfo.getRegioin() == null ? "":begFlowInfo.getRegioin());
			dataList.add(begFlowInfo.getFormat() == null ? "" :begFlowInfo.getFormat());
			dataList.add(begFlowInfo.getPrice() == null ? "":begFlowInfo.getPrice());
			dataList.add(begFlowInfo.getType() == null ? "":begFlowInfo.getType().getName());
			dataList.add(begFlowInfo.getRiceCount() == null ? "0":begFlowInfo.getRiceCount());
			dataList.add(begFlowInfo.getIdentifyCode() == null ? "":begFlowInfo.getIdentifyCode());
			dataList.add(begFlowInfo.getSmsCommand() == null ? "":begFlowInfo.getSmsCommand());
			dataList.add(begFlowInfo.getUsableDate() == null ? "":begFlowInfo.getUsableDate());			
			dataList.add(giveCount == null ? "":giveCount);
			list.add(dataList);
		}
		//表头
		String[] headers = new String[]{"序号","xxx","xxx","XXX","XXX","XXX","XXX","XXX","XXX",
				"XXX","XXXX","XXXX"};
		// list 是要导出的表数据 
		HSSFWorkbook workbook = ExcelUtil.excelOut(headers, list);
		try{  
			response.reset(); //清除response中的缓存信息
			response.setHeader("Content-Disposition", "attachment; filename=" + new String("订单管理.csv".getBytes("gbk"), "iso8859-1"));
			response.setContentType("application/vnd.ms-excel;");
			response.setCharacterEncoding("utf-8");
            workbook.write(response.getOutputStream());
	    } catch (Exception e){
	    	 e.printStackTrace();  
	    }
	}xxx","xxx","XXX","XXX","XXX","XXX","XXX","XXX",
				"XXX","XXXX","XXXX"};
		// list 是要导出的表数据 
		HSSFWorkbook workbook = ExcelUtil.excelOut(headers, list);
		try{  
			response.reset(); //清除response中的缓存信息
			response.setHeader("Content-Disposition", "attachment; filename=" + new String("订单管理.csv".getBytes("gbk"), "iso8859-1"));
			response.setContentType("application/vnd.ms-excel;");
			response.setCharacterEncoding("utf-8");
            workbook.write(response.getOutputStream());
	    } catch (Exception e){
	    	 e.printStackTrace();  
	    }
	}

POI 方式-excle导出工具类实现:

代码语言:javascript
复制
import java.util.List;


import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Excel工具
 * @author jiangyu
 * @date   
 */
public class ExcelUtil {

	public static HSSFWorkbook excelOut(String[] cloumName, List<List<Object>> list){
		//声明一个工作簿  
        HSSFWorkbook workbook = new HSSFWorkbook();  
        //生成一个表格  
        HSSFSheet sheet = workbook.createSheet();  
        //设置表格默认列宽度为20个字符  
        sheet.setDefaultColumnWidth(20);
        //生成一个样式,用来设置标题样式  
        HSSFCellStyle style = workbook.createCellStyle();  
        // 表头居中
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
        //生成一个字体  
        HSSFFont font = workbook.createFont();  
        font.setFontHeightInPoints((short) 12); // 字体高度
        font.setFontName(" 黑体 "); // 字体
        //把字体应用到当前的样式  
        style.setFont(font);  
        // 生成并设置另一个样式,用于设置内容样式  
        HSSFCellStyle style2 = workbook.createCellStyle();  
        style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
        // 生成另一个字体  
        HSSFFont font2 = workbook.createFont();  
        font2.setFontName(" 黑体 "); // 字体
        // 把字体应用到当前的样式  
        style2.setFont(font2);  
		
		HSSFRow row = sheet.createRow(0);  
		for(int i = 0; i < cloumName.length; i++){  
			//单元格
            HSSFCell cellHead = row.createCell(i);  
            cellHead.setCellStyle(style);  
            HSSFRichTextString text = new HSSFRichTextString(cloumName[i]);  
            cellHead.setCellValue(text); 
        }  
        
		for (int i = 0; i < list.size(); i++){  
	        row = sheet.createRow(i + 1);  
	        List<Object> dataList = list.get(i);  
	        for (int j = 0; j < dataList.size(); j++) {
	        	// 表格内容样式设置
	        	HSSFCell cellHead = row.createCell(j);  
                cellHead.setCellStyle(style2);  
                HSSFRichTextString text = new HSSFRichTextString(String.valueOf(dataList.get(j)));  
                
	        	// 为空
	        	if(text == null || text.toString() == ""){
	        		 cellHead.setCellValue(""); 
	        	}
	        	// 整数,不为电话
	        	else if(ValidateUtils.isInteger(String.valueOf(text))
	        			&& !(StringUtils.startsWith(String.valueOf(text),"1")
	        			&& String.valueOf(text).length() == 11)){
	        		 cellHead.setCellValue(Integer.parseInt(String.valueOf(text))); 
	        	}
	        	// 有小数、或为电话
	        	else if(ValidateUtils.isDouble(dataList.get(j).toString())){
	        		 cellHead.setCellValue(Double.parseDouble(String.valueOf(text))); 
	        	}
	        	// 字符串
	        	else{
	                 cellHead.setCellValue(String.valueOf(text)); 
	        	}
			}
	     }
		
		return workbook;
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档