POI 方式-excle 表格導出實現-java-poi

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。?

效果:

?

jsp 頁面 ?用的Bootstrap :

?

<li class="dropdown">

?

	                    	<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 :

?

?

// 導出 $("#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;}location.href = url;})

?

?

?


后臺調用部分:

?

?

/*** 導出 * @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導出工具類實現:

?

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;}
}

?

?

?

?

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452172.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

02-css的選擇器

css的選擇器&#xff1a;1.基本選擇器 2.高級選擇器 基本選擇器包含&#xff1a; 1.標簽選擇器標簽選擇器可以選中所有的標簽元素&#xff0c;比如div&#xff0c;ul&#xff0c;li &#xff0c;p等等&#xff0c;不管標簽藏的多深&#xff0c;都能選中&#xff0c;選中的是所有…

iphoneX樣式兼容

// 1.viewport meta 標簽增加屬性viewport-fitcover // 2.body元素增加樣式 body { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } // 3.如有fixed底部的元素&#xff0c;也增加上面樣式 xxx { padding-bottom: constant…

學成在線--19.新增課程(數據字典)

文章目錄一.介紹二.數據模型三.數據模型類四.字典查詢API接口五.服務器端1.Dao2.Service3.Controller一.介紹 在新增課程界面需要選擇課程等級、課程狀態等&#xff0c;這些信息統一采用數據字典管理的方式。 本項目對一些業務的分類配置信息&#xff0c;比如&#xff1a;課程…

范式簡介

范式是符合某一種級別的關系模式的集合。關系數據庫中的關系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類&#xff1a; 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 一個低一級范式的關系模式&#xff0c;通過模…

程序員的進化

對于很多同學來說&#xff0c;他們對程序員的職業生涯非常關注。而這本質上是一個進化的過程。我們將如何進化&#xff1f;在每個進化階段我們應該如何提高自己&#xff1f;下面的文章根據我自己的切身經歷和閱讀過的書&#xff0c;為程序員每個階段的進化提供了不同的學習思路…

【樹形dp】vijos1144小胖守皇宮

細節很精妙 描述 huyichen世子事件后&#xff0c;xuzhenyi成了皇上特聘的御前一品侍衛。 皇宮以午門為起點&#xff0c;直到后宮嬪妃們的寢宮&#xff0c;呈一棵樹的形狀&#xff1b;某些宮殿間可以互相望見。大內保衛森嚴&#xff0c;三步一崗&#xff0c;五步一哨&#xff0c…

手機號碼歸屬地及運營商查詢

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class NewMobile {public stati…

redhat6.5手動配置網絡

2、手動設置ip地址如果虛擬機不能自動獲取IP&#xff0c;只能手動配置&#xff0c;配置方法如下&#xff1a;輸入命令#vi /etc/sysconfig/network-scripts/ifcfg-eth0 [編輯網卡的配置文件]輸入上述命令后回車&#xff0c;打開配置文件&#xff0c;使用方向鍵移動光標到最后一行…

學成在線--20.新增課程(最后完善)

文章目錄一.效果展示二.服務端1.Api接口2.Dao3.Service4.Controller三.前端1.頁面完善1&#xff09;創建course_add.vue頁面2&#xff09;course_add.vue頁面路由3&#xff09;course_list.vue中添加鏈接2.查詢數據字典1&#xff09;視圖中代碼2&#xff09;定義Api方法3&#…

http協議工作流程

用戶單機鼠標后所發生的事件過程如下&#xff1a; &#xff08;1&#xff09;瀏覽器分析鏈接所指向頁面的URL。 &#xff08;2&#xff09;瀏覽器向DNS服務器請求解析URL的IP地址。 &#xff08;3&#xff09;域名系統DNS解析出URL對應的IP地址。 &#xff08;4&#xff09…

html里面表格問題

表格問題匯總&#xff1a; 現代網站中表格的用武之地已經很少了&#xff0c;但是一些框架&#xff0c;如bootstorp還是會用到的&#xff0c;所以還是需要了解掌握。本隨筆只涉及開發過程中遇到的表格問題&#xff0c;不做其他拓展。 1、caption代表的是表格元素的標題。至于標題…

利用Underscore求數組的交集、并集和差集

1 數組交集函數——intersection 數組的交集是指包含多個數組中的共同元素的一個數組&#xff0c;求數組的交集就是找出給定數組中的共有元素。 下面實現一個求兩個數組交集的函數。 判斷數組是夠包含指定值&#xff0c;使用Array.indexOf就可以。所以我們可以遍歷第一個參數數…

RT-Thread簡介

RT-Thread簡介 RT-Thread是一款完全由國內團隊開發維護的嵌入式實時操作系統&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知識產權。 經過16個年頭的沉淀&#xff0c;伴隨著物聯網的興起&#xff0c;它正演變成一個功能強大、組件豐富的物聯網操作系統。 RT-Thre…

調用第三方API ,實現手機號碼歸屬地及運營商查詢

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 運行結果&#xff1a; 中國電信 西雙版納 西雙版納,中國電信 代碼&#xff1a; import java.io.BufferedReader; import java.io.I…

學成在線--21.課程信息修改

文章目錄一.需求分析二.課程管理導航頁面1.定義course_manage.vue為課程管理頁面2.創建各個信息管理頁面3.創建路由三.服務端1.Api接口1&#xff09;根據課程ID查詢課程信息2&#xff09;修改課程信息2.Dao3.Service4.Controller四.前端1. 完成course_baseinfo.vue頁面2.API方法…

HTTP協議特點

&#xff08;一&#xff09;HTTP協議是無狀態的。也就是說&#xff0c;同一個客戶第二次訪問同一個服務器上的頁面時&#xff0c;服務器的響應與第一次被訪問時相同。服務器不記得訪問過得這個用戶&#xff0c;也不記得為這個客戶服務過多少次。 &#xff08;二&#xff09;HT…

C#曲線分析平臺的制作(四,highcharts+ajax加載后臺數據)

在上一篇博客&#xff1a;C#曲線分析平臺的制作&#xff08;三&#xff0c;三層構架echarts顯示&#xff09;中已經完成了后臺的三層構架的簡單搭建&#xff0c;為實現后面的拓展應用開發和review 改寫提供了方便。而在曲線分析平臺中&#xff0c;往往有要求時間軸聯動功能&…

國際C語言混亂代碼大賽結果公布

國際C語言混亂代碼大賽&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一項國際編程賽事&#xff0c;從1984年開始&#xff0c;每年舉辦一次&#xff08;1997年、1999年、2002年、2003年和2006年例外&#xff09;。目的是寫出最有創意的最讓人難…

JDBC連接數據庫(一)

原文地址http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html JDBC連接數據庫 創建一個以JDBC連接數據庫的程序&#xff0c;包含7個步驟&#xff1a; 1、加載JDBC驅動程序&#xff1a; 在連接數據庫之前&#xff0c;首先要加載想要連接的數據庫的驅動到JVM…

eclipse加速之禁用 JS、jsp 等文件的語法驗證

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 去除eclipse的JS驗證&#xff1a; 將windows->preference->Java Script->Validator->Errors/Warnings-> Enable Javascr…