1.引入maven 依赖
<code><dependency></code>
<code> </code><code><groupId>org.apache.poi</groupId></code>
<code> </code><code><artifactId>poi</artifactId></code>
<code> </code><code><version>${poi.version}</version></code>
<code> </code><code></dependency></code>
<code> </code><code><dependency></code>
<code> </code><code><artifactId>poi-ooxml</artifactId></code>
<code> </code><code><artifactId>poi-ooxml-schemas</artifactId></code>
2.工具类
<code>public</code> <code>class</code> <code>ExcelUtils {</code>
<code> </code><code>/**</code>
<code> </code><code>* @param response</code>
<code> </code><code>* @param fileName excel文件名</code>
<code> </code><code>* @param headMap 表头map</code>
<code> </code><code>* @param dataList 表格数据</code>
<code> </code><code>*/</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>exportXlsx(HttpServletResponse response, String fileName,</code>
<code> </code><code>Map<String, String> headMap, List<Map<String, Object>> dataList) {</code>
<code> </code><code>Workbook workbook = exportXlsx(fileName, headMap, dataList);</code>
<code> </code><code>response.setContentType(</code><code>"application/binary;charset=ISO8859_1"</code><code>);</code>
<code> </code><code>OutputStream outputStream = </code><code>null</code><code>;</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>outputStream = response.getOutputStream();</code>
<code> </code><code>String fn = </code><code>new</code> <code>String(fileName.getBytes(), </code><code>"ISO8859_1"</code><code>);</code>
<code> </code><code>response.setHeader(</code><code>"Content-disposition"</code><code>, </code><code>"attachment; filename="</code> <code>+ fn + </code><code>".xlsx"</code><code>);</code>
<code> </code><code>workbook.write(outputStream);</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>} </code><code>finally</code> <code>{</code>
<code> </code><code>if</code> <code>(outputStream != </code><code>null</code><code>) {</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>outputStream.close();</code>
<code> </code><code>} </code><code>catch</code> <code>(IOException e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>* 导出数据</code>
<code> </code><code>*</code>
<code> </code><code>* @param headMap</code>
<code> </code><code>* @param dataList</code>
<code> </code><code>public</code> <code>static</code> <code>Workbook exportXlsx(String sheetName, Map<String, String> headMap, List<Map<String, Object>> dataList) {</code>
<code> </code><code>Workbook workbook = </code><code>new</code> <code>XSSFWorkbook();</code>
<code> </code><code>Sheet sheet = workbook.createSheet(sheetName);</code>
<code> </code><code>int</code> <code>rowIndex = </code><code>0</code><code>, columnIndex = </code><code>0</code><code>;</code>
<code> </code><code>Set<String> keys = headMap.keySet();</code>
<code> </code><code>//表头</code>
<code> </code><code>Row row = sheet.createRow(rowIndex++);</code>
<code> </code><code>for</code> <code>(String key : keys) {</code>
<code> </code><code>Cell cell = row.createCell(columnIndex++);</code>
<code> </code><code>cell.setCellValue(headMap.get(key));</code>
<code> </code><code>//内容</code>
<code> </code><code>if</code> <code>(dataList != </code><code>null</code> <code>&& !dataList.isEmpty()) {</code>
<code> </code><code>for</code> <code>(Map<String, Object> map : dataList) {</code>
<code> </code><code>row = sheet.createRow(rowIndex++);</code>
<code> </code><code>columnIndex = </code><code>0</code><code>;</code>
<code> </code><code>for</code> <code>(String key : keys) {</code>
<code> </code><code>Cell cell = row.createCell(columnIndex++);</code>
<code> </code><code>setCellValue(cell, map.get(key));</code>
<code> </code><code>return</code> <code>workbook;</code>
<code> </code><code>private</code> <code>static</code> <code>void</code> <code>setCellValue(Cell cell, Object obj) {</code>
<code> </code><code>if</code> <code>(obj == </code><code>null</code><code>) {</code>
<code> </code><code>return</code><code>;</code>
<code> </code><code>if</code> <code>(obj </code><code>instanceof</code> <code>String) {</code>
<code> </code><code>cell.setCellValue((String) obj);</code>
<code> </code><code>} </code><code>else</code> <code>if</code> <code>(obj </code><code>instanceof</code> <code>Date) {</code>
<code> </code><code>Date date = (Date) obj;</code>
<code> </code><code>if</code> <code>(date != </code><code>null</code><code>) {</code>
<code> </code><code>cell.setCellValue(DateUtils.dfDateTime.format(date));</code>
<code> </code><code>} </code><code>else</code> <code>if</code> <code>(obj </code><code>instanceof</code> <code>Calendar) {</code>
<code> </code><code>Calendar calendar = (Calendar) obj;</code>
<code> </code><code>if</code> <code>(calendar != </code><code>null</code><code>) {</code>
<code> </code><code>cell.setCellValue(DateUtils.dfDateTime.format(calendar.getTime()));</code>
<code> </code><code>} </code><code>else</code> <code>if</code> <code>(obj </code><code>instanceof</code> <code>Timestamp) {</code>
<code> </code><code>Timestamp timestamp = (Timestamp) obj;</code>
<code> </code><code>if</code> <code>(timestamp != </code><code>null</code><code>) {</code>
<code> </code><code>cell.setCellValue(DateUtils.dfDateTime.format(</code><code>new</code> <code>Date(timestamp.getTime())));</code>
<code> </code><code>} </code><code>else</code> <code>if</code> <code>(obj </code><code>instanceof</code> <code>Double) {</code>
<code> </code><code>cell.setCellValue((Double) obj);</code>
<code> </code><code>} </code><code>else</code> <code>{</code>
<code> </code><code>cell.setCellValue(obj.toString());</code>
<code>}</code>
3.controller导出用户数据
<code>@RequestMapping</code><code>(</code><code>"/export"</code><code>)</code>
<code> </code><code>public</code> <code>String export(String username, HttpServletRequest request, HttpServletResponse repsonse) {</code>
<code> </code><code>//查询用户数据</code>
<code> </code><code>UserQueryDTO queryDTO = </code><code>new</code> <code>UserQueryDTO() {{</code>
<code> </code><code>setUsername(username);</code>
<code> </code><code>}};</code>
<code> </code><code>List<CmsUser> userList = userService.findUser(queryDTO);</code>
<code> </code><code>Map<String, String> headNameMap = </code><code>new</code> <code>LinkedHashMap<String, String>();</code>
<code> </code><code>headNameMap.put(</code><code>"userId"</code><code>, </code><code>"ID"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"roleName"</code><code>, </code><code>"角色"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"userName"</code><code>, </code><code>"账号"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"realName"</code><code>, </code><code>"姓名"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"mobile"</code><code>, </code><code>"电话号码"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"createDate"</code><code>, </code><code>"创建时间"</code><code>);</code>
<code> </code><code>headNameMap.put(</code><code>"status"</code><code>, </code><code>"状态"</code><code>);</code>
<code> </code><code>//表格数据</code>
<code> </code><code>List<Map<String, Object>> list = </code><code>new</code> <code>ArrayList<Map<String, Object>>();</code>
<code> </code><code>if</code> <code>(userList != </code><code>null</code> <code>&& userList.size() > </code><code>0</code><code>) {</code>
<code> </code><code>for</code> <code>(CmsUser user : userList) {</code>
<code> </code><code>String statusName = </code><code>"正常"</code><code>;</code>
<code> </code><code>if</code> <code>(StringUtils.isNotBlank(user.getDeleteFlag()) && user.getDeleteFlag().equals(ConstantHelper.DELETE_FLAG_DELETED)) {</code>
<code> </code><code>statusName = </code><code>"删除"</code><code>;</code>
<code> </code><code>String createDate = </code><code>""</code><code>;</code>
<code> </code><code>if</code> <code>(user.getCreateDate() != </code><code>null</code><code>) {</code>
<code> </code><code>createDate = </code><code>new</code> <code>SimpleDateFormat(</code><code>"yyyy-MM-dd HH:mm:ss"</code><code>).format(user.getCreateDate());</code>
<code> </code><code>String roleName = </code><code>""</code><code>;</code>
<code> </code><code>Set<CmsRole> roleSet = roleService.findByUserId(user.getUserId());</code>
<code> </code><code>if</code> <code>(roleSet != </code><code>null</code> <code>&& roleSet.size() > </code><code>0</code><code>) {</code>
<code> </code><code>for</code> <code>(CmsRole r : roleSet) {</code>
<code> </code><code>roleName += r.getName() + </code><code>" "</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>Map<String, Object> map = </code><code>new</code> <code>HashMap<String, Object>();</code>
<code> </code><code>map.put(</code><code>"userId"</code><code>, user.getUserId());</code>
<code> </code><code>map.put(</code><code>"roleName"</code><code>, roleName);</code>
<code> </code><code>map.put(</code><code>"userName"</code><code>, user.getUsername());</code>
<code> </code><code>map.put(</code><code>"realName"</code><code>, user.getRealName());</code>
<code> </code><code>map.put(</code><code>"mobile"</code><code>, user.getMobile());</code>
<code> </code><code>map.put(</code><code>"createDate"</code><code>, createDate);</code>
<code> </code><code>map.put(</code><code>"status"</code><code>, statusName);</code>
<code> </code><code>list.add(map);</code>
<code> </code><code>ExcelUtils.exportXlsx(repsonse, </code><code>"用户"</code><code>, headNameMap, list);</code>
<code> </code><code>return</code> <code>null</code><code>;</code>
本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/p/7596637.html,如需转载请自行联系原作者