java-SpringMVC框架匯出Excel格式資料
1.控制層Controller,使用getLCCnsFeeCalMainExcel.do去接收
@SuppressWarnings("rawtypes") //去除警告 @RequestMapping("getLCCnsFeeCalMainExcel.do") public ModelAndView queryExcel(@RequestParam("req") String hreq) throws ParseException, IOException, SQLException { // 根據保單號查詢其他資訊 hreq = URLDecoder.decode(hreq,"UTF-8"); LCCnsFeeCalMainDto tLCCnsFeeCalMainDto = JsonUtils.toJsonObject(hreq, LCCnsFeeCalMainDto.class); List<Map> ptpList = tLCCnsFeeCalMainBlo.queryExcel(tLCCnsFeeCalMainDto);// 資料匯出資料查詢 String excelName = "LCCnsFeeCalMain.xls";// 建立生成檔案的名字 LCCnsFeeCalMainViewExcel tLCCnsFeeCalMainViewExcel = new LCCnsFeeCalMainViewExcel( excelName, ptpList);// 保單跟進檔案生成方法 return new ModelAndView(tLCCnsFeeCalMainViewExcel); }
2.LCCnsFeeCalMainViewExcel
LCCnsFeeCalMainViewExcel類繼承AbstractExcelView,呼叫構造方法及重寫的buildExcelDocument方法
構造方法:建立變數templetFilePath,內容為模板地址,並賦值,賦值過程在步驟3中展示
重寫的buildExcelDocument:將引數使用ExcelUtil類,插入Excel表中,程式碼如下:package com.yunhui.oversea.policy.view; import java.io.BufferedOutputStream; import java.io.OutputStream; import java.util.List; import java.util.Map; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.web.servlet.view.document.AbstractExcelView; import com.yunhui.oversea.policy.util.ExcelUtil; public class LCCnsFeeCalMainViewExcel extends AbstractExcelView { String templetFilePath; String generateFilePath; Properties datas; @SuppressWarnings("rawtypes") List<Map> list; /*** * 構造方法 * @param generateFilePath * @param list */ @SuppressWarnings("rawtypes") public LCCnsFeeCalMainViewExcel(String generateFilePath,List<Map> list) { //獲取檔案模板 this.templetFilePath = System.getProperty("webServerRoot")+"/excel/LCCnsFeeCalMainView.xls"; this.generateFilePath = generateFilePath; this.list = list; } /*** * 向Excel表中寫資料,生成對應的Excel文件 */ @Override protected void buildExcelDocument(Map<String, Object> arg0, HSSFWorkbook arg1, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=" + this.generateFilePath); ExcelUtil excel = new ExcelUtil(this.templetFilePath); excel.insertRow(1,this.list); OutputStream ouputStream = response.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(ouputStream); excel.wb.write(bos); bos.flush(); bos.close(); } }
3.web.xml配置 在tomcat下部署兩個或多個專案時,web.xml檔案中最好定義webAppRootKey引數,如果不定義,將會預設為“webapp.root”,最好保證每個專案的引數值不同,以免引起專案衝突。public void insertRow(int starRow,List<Map> list) throws IOException { HSSFSheet sheet = this.wb.getSheetAt(0); // 選擇一個區域,從startRow+1直到最後一行 sheet.shiftRows(starRow + 1, sheet.getLastRowNum(), list.size(), true, false); //System.out.println("starRow1:" + starRow); starRow = starRow - 1; for (int i = 0; i < list.size(); i++) { HSSFRow sourceRow = null; HSSFRow targetRow = null; HSSFCell sourceCell = null; HSSFCell targetCell = null; short m; starRow = starRow + 1; sourceRow = sheet.getRow(starRow); //System.out.println("starRow2:" + starRow); if (sourceRow == null) { sourceRow = sheet.createRow(starRow); } // 從start建立新的一行 targetRow = sheet.createRow(starRow + 1); targetRow.setHeight(sourceRow.getHeight()); // sourceRow.setRowNum(sourceRow.getRowNum()); // 處理剛剛建立的一行 Map cellmap = (HashMap)list.get(i); Object s[] = cellmap.keySet().toArray(); for(m = 0; m < cellmap.size(); m++) { //for (m = sourceRow.getFirstCellNum(); m < cellList.size(); m++) { sourceCell = sourceRow.getCell(m); targetCell = targetRow.createCell(m); // 風格一樣 HSSFCellStyle style = wb.createCellStyle(); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); HSSFFont fontNormal = wb.createFont(); fontNormal.setFontHeightInPoints((short) 10); fontNormal.setFontName("宋體"); fontNormal.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中 style.setFont(fontNormal); targetCell.setCellStyle(style); //targetCell.setCellStyle(sourceCell.getCellStyle()); //targetCell.setCellType(sourceCell.getCellType()); String value = ""; if (cellmap.get(s[m]) != null) { if (cellmap.get(s[m]).getClass().equals(Timestamp.class)) { Timestamp timestamp = (Timestamp) cellmap.get(s[m]); Date date = new Date(timestamp.getTime()); value = DateUtils.format(date, DateUtils.FORMAT_LONG); } else if (cellmap.get(s[m]).getClass().equals(BigDecimal.class)) { value = StringUtils.twoDecimal(((BigDecimal) cellmap.get(s[m])).doubleValue()); } else { value = cellmap.get(s[m]) + ""; } } targetCell.setCellType(HSSFCell.CELL_TYPE_STRING); targetCell.setEncoding(HSSFCell.ENCODING_UTF_16); targetCell.setCellValue(value);// 設定值 } } }
<!-- <context-param>
<param-name>webAppRootKey</param-name>
<param-value>webServerRoot</param-value>
</context-param> -->
<listener>
<listener-class>com.yunhui.oversea.policy.servlet.GeneralListener
</listener-class>
</listener>
4.配置監聽器GeneralListener類
使用event.getServletContext().getRealPath("/")方法取得物理路徑,並把其作為key和value放到system.properties系統屬性中public class GeneralListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
String webServerRoot = event.getServletContext().getRealPath("/");
System.setProperty("webServerRoot", webServerRoot);
Properties properties = new Properties();
try
{
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("system.properties");
properties.load(inputStream);
inputStream.close(); //關閉流
}
catch (IOException e)
{
e.printStackTrace();
}
LogUtils.info(Log.BIZ_LOGGER, "webServerRoot:"+event.getServletContext().getRealPath("/"));
}
5.ModelAndView
最後使用ModelAndView接收excel格式資料引數,並返回給前端展示
6.Excel檔案匯出成功
相關推薦
java-SpringMVC框架匯出Excel格式資料
1.控制層Controller,使用getLCCnsFeeCalMainExcel.do去接收 @SuppressWarnings("rawtypes") //去除警告 @RequestMapping("getLCCnsFeeCalMainExcel.do") pub
Java SpringMVC專案匯出excel多種類對應工具類整理(util)
上一章介紹如何匯入excel進系統處理成MAP集合(詳情請看上提供的連結),這次我又整理了一下如何快速匯出excel的工具。 1.匯出無表頭excel 檔案單個工作表(sheet),【fileName是標題名,titleList是列名,list就是
基於C#語言MVC框架NPOI控制元件匯出Excel表資料
控制元件bin檔案下載地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "dcxx"; } <script type="text/javascript"
java 匯出excel格式
jxl.write.N
解決Java中POI匯入Excel表格資料時 日期格式資料解析錯誤的問題
用POI匯入excel資料時,日期格式(如2018/7/7)資料預設會被解析成double格式,解決方法如下: package com.test.util; import java.text.DateFormat; import java.text.SimpleDate
java匯入和匯出excel文件(支援xls,xlsx格式)
好久沒寫部落格了,寫個簡單的估計也是常用的,歡迎評判指導交流 相關jar包,可以先百度,因為時間問題後續再補上 package main.java; import java.io.File; import java.io.FileInputStream; import
Java SpringMVC框架學習(二)httpServeltRequest和Model傳值的區別
urn ont ppi mode array style att 區別 () 為什麽大多程序在controller中給jsp傳值時使用model.addAttribute()而不使用httpServeletRequest.setAttribute()? 事實上model數
java使用poi匯出excel例子
java匯出某個頁籤: 第一步:先在jsp新建一個匯出介面按鈕: <a id="export" class="mini-button" iconCls="icon-download" onclick="exportexcel();" plain="true">匯出</a>
php 匯出excel大量資料方法
由於資料較大,常用的PHPexcel包需要把所有資料拿到後才能生成excel, 在面對生成超大資料量的excel檔案時這顯然是會造成記憶體溢位的,所以考慮使用讓PHP邊寫入輸出流邊讓瀏覽器下載的形式來完成需求。 通過PHP輸出流方式匯出 php://output是一個可寫的輸出流,允許程
Java中檔案匯出excel
首先是在HTML頁面中加上匯出按鈕: <div class="ibox-body"> <div id="exampleToolbar" role="group"> <button type="button" class="btn b
java根據模板匯出excel(二)
最近在做一個專案,關於excel的匯出問題,上網查了很多,最後自己整理並編寫了關於模板匯出的方法,可能會有一些侷限性,但是對於簡單的模板匯出功能是可以實現的,先留下筆記,以供日後參考!思路其實很簡單,主要分為:(1)讀取模板excel(2)迴圈模
Beego框架:多種格式資料輸出
beego 當初設計的時候就考慮了 API 功能的設計,而我們在設計 API 的時候經常是輸出 JSON 或者 XML 資料,那麼 beego 提供了這樣的方式直接輸出: JSON 資料直接輸出: func (this *AddController) Get() {
java、jsp匯出excel功能備份
問題踩坑: ajax請求不能下載檔案 必須這樣: <a href="/media">點選下載Excel</a> 或者 location.href = '/media'; js取表單資料: p.p1 { margin: 0.0px 0.0px
poi匯出Excel Java POI匯入匯出Excel
Java POI匯入匯出Excel 1、異常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解決方法:
java後端匯出Excel
1.jxl匯出Excel的幾種方法 import jxl.CellView; import jxl.SheetSettings; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Border; import
MongoDB匯出csv格式資料
第一步: 在cmd中進入mongodb的安裝目錄下的bin資料夾 C:\Users\zzz>cd C:\Program Files\MongoDB\Server\4.0\bin 第二步: 從MongoDB匯出csv格式資料 mongoexport
Java Web專案匯出Excel的實現
背景:本次實現基於原生JDBC連線資料庫、Struts2框架。 1.JDBC連線資料庫部分比較簡單,就不詳細介紹,簡述:建立一個JavaBean類,連線資料庫獲取該JavaBean物件的集合; 2.建立通用工具類,用於生成Excel模板: import org.apache.poi.hssf.
Java根據模板匯出Excel並生成多個Sheet
因為最近用報表匯出比較多,所有就提成了一個工具類,本工具類使用的場景為 根據提供的模板來匯出Excel報表 並且可根據提供的模板Sheet頁進行復制 從而實現多個Sheet頁的需求, 使用本工具類時,如果需求是每個Sheet頁中的資料都不一致,但是表格樣式和模板都一樣 那
SpringMvc實現匯出Excel檢視
SpringMvc提供了AbstractXlsView提供Excel檢視,它是一個抽象類,提供了一個抽象方法-buildExcelDocument要去實現,其它方法,AbstractXlsView其它方法已經實現了 buildExcelDocuent主要任務是
JAVA之SAX解析XML格式資料--Jdom.jar
package com.yldyyn.test; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.Namespace; import org.