天天看點

JAVA POI導出excel

1.引入maven 依賴

<code>&lt;dependency&gt;</code>

<code>            </code><code>&lt;groupId&gt;org.apache.poi&lt;/groupId&gt;</code>

<code>            </code><code>&lt;artifactId&gt;poi&lt;/artifactId&gt;</code>

<code>            </code><code>&lt;version&gt;${poi.version}&lt;/version&gt;</code>

<code>        </code><code>&lt;/dependency&gt;</code>

<code>        </code><code>&lt;dependency&gt;</code>

<code>            </code><code>&lt;artifactId&gt;poi-ooxml&lt;/artifactId&gt;</code>

<code>            </code><code>&lt;artifactId&gt;poi-ooxml-schemas&lt;/artifactId&gt;</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&lt;String, String&gt; headMap, List&lt;Map&lt;String, Object&gt;&gt; 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&lt;String, String&gt; headMap, List&lt;Map&lt;String, Object&gt;&gt; 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&lt;String&gt; 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>&amp;&amp; !dataList.isEmpty()) {</code>

<code>            </code><code>for</code> <code>(Map&lt;String, Object&gt; 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&lt;CmsUser&gt; userList = userService.findUser(queryDTO);</code>

<code>        </code><code>Map&lt;String, String&gt; headNameMap = </code><code>new</code> <code>LinkedHashMap&lt;String, String&gt;();</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&lt;Map&lt;String, Object&gt;&gt; list = </code><code>new</code> <code>ArrayList&lt;Map&lt;String, Object&gt;&gt;();</code>

<code>        </code><code>if</code> <code>(userList != </code><code>null</code> <code>&amp;&amp; userList.size() &gt; </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()) &amp;&amp; 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&lt;CmsRole&gt; roleSet = roleService.findByUserId(user.getUserId());</code>

<code>                </code><code>if</code> <code>(roleSet != </code><code>null</code> <code>&amp;&amp; roleSet.size() &gt; </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&lt;String, Object&gt; map = </code><code>new</code> <code>HashMap&lt;String, Object&gt;();</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,如需轉載請自行聯系原作者