Java中excel文件导入和导出POI框架

导入代码: 

/**
	 * 导入
	 * @param msg
	 * @return
	 * @throws IOException
	 */
	@AuthExclude(internetForbidden = false)
	public String importData(Message msg) throws IOException {
		QueryRole queryRole = getParamBean(msg, QueryRole.class);
		FileUpload file = ThreadContextHolder.get().getUploadedFile("file");
 		return roleDetailService.importData(file, queryRole.getRoleId());
	}

/**
	 * 导入
	 * @param file
	 * @param roleId
	 * @return
	 * @throws IOException
	 */
	@Transaction(propagation = JtxPropagationBehavior.PROPAGATION_SUPPORTS)
	public String importData(FileUpload file,Integer roleId) throws IOException{

		List<Map<Integer,String>> dataList =  ExcelRead.readExcel(file);
		CmpRoleDetail bean = new CmpRoleDetail();
		for(int i = 1;i< dataList.size();i++){
			bean.setCreateOaCode(CommonUtil.oaCode());
			bean.setCreateOaName(CommonUtil.currentUser().getName());
			bean.setCreateTime(CommonUtil.getNowDate());
			bean.setDeleteMark(false);
			bean.setSourceCode(dataList.get(i).get(1));
			bean.setSourceName(dataList.get(i).get(2));
			bean.setConfigCode(dataList.get(i).get(3));
			bean.setConfigName(dataList.get(i).get(4));
			bean.setDescription(dataList.get(i).get(5));
			bean.setRoleId(roleId);
			roleDetailDao.saveRoleDetail(bean);
		}

		return CommonUtil.success("导入成功");
	}

/**
	 * 
	 * @param file
	 * @return
	 * @throws IOException
	 */
	public static List<Map<Integer, String>> readExcel(FileUpload file)
			throws IOException {
		 List<Map<Integer, String>> list = new ArrayList<Map<Integer,String>>();
	        
	        HSSFWorkbook wb = null;
	        HSSFSheet sheet = null; 
	        HSSFRow row = null;
			try {
	            wb = new HSSFWorkbook(file.getFileInputStream());
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        sheet = wb.getSheetAt(0);
	        // 得到总行数
	        int rowNum = sheet.getLastRowNum();
	        row = sheet.getRow(0);
	        //列数
	        int colNum = row.getPhysicalNumberOfCells();
	        //int cellnum = sheet.getDefaultColumnWidth();
	        // 正文内容应该从第二行开始,第一行为表头的标题
	        for (int i = 1; i <= rowNum; i++) {
	            row = sheet.getRow(i);
	            Map<Integer,String> map = new HashMap<Integer, String>();
	       
	            for (int k = 1; k < colNum ; k++) {
					map.put(k, row.getCell(k)+"");
					System.out.println(row.getCell(k));
				}
	            list.add(map);
	        }
	        return list;
	}

导出代码:

	/**
	 * 导出列表
	 * 
	 * @param msg
	 * @return
	 * @throws Exception
	 */
	@AuthExclude(internetForbidden = false)
	public Message exportData(Message msg) throws Exception {
		Message m = new Message();
		QueryRole queryRole = getParamBean(msg, QueryRole.class);
		List<CmpRoleDetail> list = roleDetailService.exportList(queryRole);
		String filedName = "角色配置人员列表";
		@SuppressWarnings("static-access")
		byte[] file = roleDetailService.exportExcel(list, filedName);
		String downName = (filedName.trim() + ".xls");
		downName = new String(downName.getBytes(), "ISO-8859-1");
		if (null != file) {
			m.setStatus(HttpStatus.HTTP_OK);
			m.setHead("Content-Type", "application/vnd.ms-excel");
			m.setHead(Message.CONTENT_LENGTH, file.length);
			m.setHead("Content-Disposition", "attachment;filename=\"" + downName + "\"");
			m.setBody(file);
		} else {
			throw new CommonException("can't find file");
		}
		return m;
	}

/**
	 * 导出列表
	 * 
	 * @param list
	 * @param filedName
	 * @return
	 * @throws FileNotFoundException
	 */
	public static byte[] exportExcel(List<CmpRoleDetail> list, String filedName) throws FileNotFoundException {
		byte[] bytes = null;
		// 创建HSSFWorkbook对象(excel的文档对象)
		HSSFWorkbook wb = new HSSFWorkbook();
		// 建立新的sheet对象(excel的表单)
		HSSFSheet sheet = wb.createSheet(filedName);
		sheet.setDefaultColumnWidth(20);
		sheet.setDefaultRowHeight((short) (256 * 4));

		HSSFRow row2 = sheet.createRow(0);
		// 创建单元格并设置单元格内容
		row2.createCell(0).setCellValue("所属单位");
		row2.createCell(1).setCellValue("OA账号");
		row2.createCell(2).setCellValue("姓名");
		row2.createCell(3).setCellValue("备注");

		HSSFRow rown = null;
		// 在sheet里创建第N行
		for (int i = 0; i < list.size(); i++) {
			rown = sheet.createRow(i + 1);
			rown.createCell(0).setCellValue(list.get(i).getSourceName());
			rown.createCell(1).setCellValue(list.get(i).getConfigCode());
			rown.createCell(2).setCellValue(list.get(i).getConfigName());
			rown.createCell(3).setCellValue(list.get(i).getDescription());
		}
		ByteArrayOutputStream os = new ByteArrayOutputStream();
		try {
			wb.write(os);
			bytes = os.toByteArray();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return bytes;
	}

猜你喜欢

转载自blog.csdn.net/weixin_42228950/article/details/86593208
今日推荐