ssh导入导出数据 表格

excel基础元素

工作簿

工作表(属于工作簿)

行(属于工作表)

单元格(属于行;由行和列确定)


-------------操作excel

1、创建/读取工作簿 HSSFWorkBook(-07)   XSSFWorkBook(07-)  大批量SXSSFWorkBook

2、创建/读取工作表

3、创建/读取行

4、创建/读取单元格



-----------excel样式

合并单元格对象(CellRangeAddress)属于工作簿;运用于工作表

CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) 起始行号,结束行号,起始列号,结束列号

样式是属于工作簿的;运用于单元格

字体是属于工作簿的;加载于样式;通用样式运用于单元格



JSP代码

 

//导出用户到表格

functiondoExportExcel(){window.open("${basePath}nsfw/user_exportExcel.action");

}

<input type="button" value="导出" class="s_button" onclick="doExportExcel()"/> 

Action

//导入文件

private File userExcel;//文件"userExcel"

private String userExcelContentType;//文件类型

private String userExcelFileName;// 文件名称

Get Set 方法

//导出用户到表格
	public void exportExcel(){
		try {
			//1 确定需要导出的数据 
			List<User> userList = userService.findObjects();
			if(userList!=null){
				//2 设置响应信息
				HttpServletResponse response = ServletActionContext.getResponse();
					//2.1 设置响应类型
				response.setContentType("application/x-execl");
					//2.2 设置以下载方式打开文件
				response.setHeader("Content-Disposition", "attachment;filename="+new String("用户列表.xls".getBytes(),"ISO-8859-1") );
					//2.3 获得输出流
				OutputStream outputStream = response.getOutputStream();					
				//3 导出
				userService.exportExcel(userList,outputStream);
				if(outputStream != null){
					outputStream.close();
				}				
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}

service

//导出用户列表到表格
@Override
public void exportExcel(List<User> userList, OutputStream outputStream) {
ExcelUtil.exportExcel(userList, outputStream);
}

ExcelUtil 

public class ExcelUtil {

		/**
		 * 导出用户列表到表格 
		 * @param userList 参数为用户集合列表
		 * @param outputStream 参数为输出流
		 */
		public static void exportExcel(List<User> userList, OutputStream outputStream) {
			try {
				//1  创建工作薄
				HSSFWorkbook workBook = new HSSFWorkbook();
					//1.1  创建合并单元格对象 
				CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, 4);				
				//2 创建工作表
				HSSFSheet sheet = workBook.createSheet();
				
					//2.1 加载合并单元格对象
				sheet.addMergedRegion(cellRangeAddress);			
				//3 创建行 
					//3.1头标题行
				HSSFRow rowHead = sheet.createRow(0);
				HSSFCell cellHead = rowHead.createCell(0);		
				cellHead.setCellValue("用户列表");
					//3.1.3将设置好的样式添加到头标题行		
				cellHead.setCellStyle( getStyle(workBook,(short) 16));			
					//3.2 标题行
				HSSFRow rowColumn = sheet.createRow(1);
					//3.2.1 标题数组
				String[] title={"用户名","账号","所属部门","性别","电子邮箱"};
				for(int i=0 ; i< title.length;i++){//遍历数组
					HSSFCell cellColumn = rowColumn.createCell(i);
					//3.2.2 调用方法 设置标题行样式
					cellColumn.setCellStyle(getStyle(workBook,(short) 12));
					//3.2.3 设置标题
					cellColumn.setCellValue(title[i]);
				}			
				//4 操作单元格
				if(userList != null){
					for (int j=0;j<userList.size();j++) {			
						HSSFRow row = sheet.createRow(j+2);
						row.createCell(0).setCellValue(userList.get(j).getName());						
						row.createCell(1).setCellValue(userList.get(j).getAccount());						
						row.createCell(2).setCellValue(userList.get(j).getDept());						
						row.createCell(3).setCellValue(userList.get(j).isGender()?"男":"女");						
						row.createCell(4).setCellValue(userList.get(j).getEmail());						
					}			
				}
				
		        sheet.autoSizeColumn(( short ) 4); // 调整第五列宽度 邮箱列
				
				
				//5、输出
				workBook.write(outputStream);
				workBook.close();
			} catch (Exception e) {
				e.printStackTrace();
			}		
		}
		private static HSSFCellStyle getStyle(HSSFWorkbook workBook,short fontSize){
			HSSFCellStyle style = workBook.createCellStyle();
			//3.1.1设置头标题行居中
			style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
			style.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
				//3.1.2设置头标题行字体加粗居中
			HSSFFont font = workBook.createFont();
			font.setBold(true);
			font.setFontHeightInPoints(fontSize);
			style.setFont(font);
			return style;
		}
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值