摘要:積分消費(fèi)明細(xì)對(duì)賬單其中,有四個(gè)參數(shù),分別是,,,。導(dǎo)出讀取數(shù)據(jù)庫的信息,轉(zhuǎn)成。
public void detailExport() { String sourceSystem = getPara("source_system"); String dataDate = getPara("data_date"); Integer pointsType = getParaToInt("points_type"); ListzjPointsConsumeDetails = zjPointsConsumeDetailService.findByDate(sourceSystem, dataDate, pointsType); File modelFile = new File(PathKit.getWebRootPath() + File.separator + "excel" + File.separator +"pointsConsumeDetails.xlsx"); File outputFile = new File(PathKit.getWebRootPath() + File.separator + "temp" + File.separator + "積分消費(fèi)明細(xì)對(duì)賬單.xlsx"); ExcelHelper excelHelper = SpringContextHolder.getBean(ExcelHelper.class); excelHelper.exportExcelFile("zjPointsConsumeDetailExcel", modelFile, outputFile, zjPointsConsumeDetails); renderFile(outputFile); }
其中,exportExcelFile有四個(gè)參數(shù),分別是String mapping,F(xiàn)ile modelFile,F(xiàn)ile outputFile,List<> dataList。mapping對(duì)應(yīng)ZjPointsConsumeDetailExcel 類,ZjPointsConsumeDetailExcel 的作用是將數(shù)據(jù)庫中的字段與excel中展示的字段一一對(duì)應(yīng),并可進(jìn)行特殊字段的轉(zhuǎn)換,代碼如下:
package com.cwl.excel; import com.cwl.plugin.poi.ExcelField; import com.cwl.plugin.poi.ExcelModel; @ExcelModel(name="zjPointsConsumeDetailExcel", rowCount="4") public class ZjPointsConsumeDetailExcel { @ExcelField(fieldName = "id", index = "0", title = "序號(hào)", type = ExcelField.CELL_TYPE_NUMERIC) private Long id; @ExcelField(fieldName = "consume_kind", index = "1", title = "消費(fèi)分類", type = ExcelField.CELL_TYPE_STRING) private String consumeKind; @ExcelField(fieldName = "consume_abstract", index = "2", title = "消費(fèi)摘要", type = ExcelField.CELL_TYPE_STRING) private String consumeAbstract; @ExcelField(fieldName = "points_type", index = "3", title = "積分類型", type = ExcelField.CELL_TYPE_NUMERIC, convert = {"0:普通積分", "1:白金積分"}) private String pointsTypeName; @ExcelField(fieldName = "consume_points", index = "4", title = "消費(fèi)分值", type = ExcelField.CELL_TYPE_NUMERIC) private Long consumePoints; @ExcelField(fieldName = "consume_time", index = "5", title = "消費(fèi)時(shí)間", type = ExcelField.CELL_TYPE_STRING) private String consumeTime; @ExcelField(fieldName = "related_order", index = "6", title = "關(guān)聯(lián)訂單號(hào)", type = ExcelField.CELL_TYPE_STRING) private String relatedOrder; }
以上僅是如何使用,有空補(bǔ)上源碼。
總結(jié)
導(dǎo)入:讀取Sheet信息,并且保存至數(shù)據(jù)庫。
導(dǎo)出:讀取數(shù)據(jù)庫的信息,轉(zhuǎn)成Sheet。
使用poi導(dǎo)出excel
參考博客:使用poi實(shí)現(xiàn)導(dǎo)入導(dǎo)出
/** * 導(dǎo)出數(shù)據(jù)至Excel文件 * @param excelColumns 報(bào)表頭信息 * @param excelHeadConvertMap 需要對(duì)數(shù)據(jù)進(jìn)行特殊轉(zhuǎn)換的列 * @param modelFile 模板Excel文件 * @param outputFile 導(dǎo)出文件 * @param dataList 導(dǎo)入excel報(bào)表的數(shù)據(jù)來源 * @return void * 2012-4-19 上午10:04:30 */ public void exportExcelFile(ExcelHead head, File modelFile, File outputFile, List> dataList) { // 讀取導(dǎo)出excel模板 InputStream inp = null; Workbook wb = null; try { inp = new FileInputStream(modelFile); wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt(0); // 生成導(dǎo)出數(shù)據(jù) buildExcelData(sheet, head, dataList); // 導(dǎo)出到文件中 FileOutputStream fileOut = new FileOutputStream(outputFile); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } /** * 生成導(dǎo)出至Excel文件的數(shù)據(jù) * @param sheet 工作區(qū)間 * @param excelColumns excel表頭 * @param excelHeadMap excel表頭對(duì)應(yīng)實(shí)體屬性 * @param excelHeadConvertMap 需要對(duì)數(shù)據(jù)進(jìn)行特殊轉(zhuǎn)換的列 * @param dataList 導(dǎo)入excel報(bào)表的數(shù)據(jù)來源 * @auther hubo * @return void * 2012-4-19 上午09:36:37 */ private void buildExcelData(Sheet sheet, ExcelHead head, List> dataList) { ListexcelColumns = head.getColumns(); Map excelHeadConvertMap = head.getColumnsConvertMap(); // 將表結(jié)構(gòu)轉(zhuǎn)換成Map Map excelHeadMap = convertExcelHeadToMap(excelColumns); // 從第幾行開始插入數(shù)據(jù) int startRow = head.getRowCount(); int order = 1; //數(shù)據(jù)循環(huán) for (Object obj : dataList) { Row row = sheet.createRow(startRow++); ////字段循環(huán)(通過字段名,拿到對(duì)象該字段的值) for (int j = 0; j < excelColumns.size(); j++) { Cell cell = row.createCell(j); cell.setCellType(excelColumns.get(j).getType()); String fieldName = excelHeadMap.get(j); if(fieldName != null) { Object valueObject = BeanUtil.getProperty(obj, fieldName); // 如果存在需要轉(zhuǎn)換的字段信息,則進(jìn)行轉(zhuǎn)換 if(excelHeadConvertMap != null && excelHeadConvertMap.get(fieldName) != null) { valueObject = excelHeadConvertMap.get(fieldName).get(valueObject); } if(valueObject == null) { cell.setCellValue(""); } else if (valueObject instanceof Integer) { cell.setCellValue((Integer)valueObject); } else if (valueObject instanceof String) { cell.setCellValue((String)valueObject); } else if (valueObject instanceof Date) { cell.setCellValue(new JDateTime((Date)valueObject).toString("YYYY-MM-DD")); } else { cell.setCellValue(valueObject.toString()); } } else { cell.setCellValue(order++); } } } }
poi的使用及簡單介紹
1.創(chuàng)建工作簿 (WORKBOOK) HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); 2.創(chuàng)建工作表(SHEET) HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("new sheet"); HSSFSheet sheet2 = wb.createSheet("second sheet"); FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); 3.創(chuàng)建單元格(CELL) HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); // Create a row and put some cells in it. Rows are 0 based. HSSFRow row = sheet.createRow((short)0); // Create a cell and put a value in it. HSSFCell cell = row.createCell((short)0); cell.setCellValue(1); // Or do it on one line. row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("This is a string"); row.createCell((short)3).setCellValue(true); // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close();
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66527.html
摘要:閱讀原文如何高效導(dǎo)出百萬級(jí)數(shù)據(jù)在一個(gè)具有統(tǒng)計(jì)功能的系統(tǒng)中,導(dǎo)出功能幾乎是一定的,如何導(dǎo)出導(dǎo)出的數(shù)據(jù)有多少如何高效的導(dǎo)出簡介什么是就不用介紹了,這里主要說明不同版本下每個(gè)下的行列限制。 閱讀原文:POI如何高效導(dǎo)出百萬級(jí)Excel數(shù)據(jù)? 在一個(gè)具有統(tǒng)計(jì)功能的系統(tǒng)中,導(dǎo)出excel功能幾乎是一定的,如何導(dǎo)出excel?導(dǎo)出的數(shù)據(jù)有多少?如何高效的導(dǎo)出? Excel簡介什么是excel就不用...
摘要:的使用及導(dǎo)出報(bào)表首先,了解是什么一基本概念是軟件基金會(huì)的開放源碼函式庫,提供給程序?qū)Ω袷綑n案讀和寫的功能。 POI的使用及導(dǎo)出excel報(bào)表 首先,了解poi是什么? 一、基本概念 ? Apache POI是Apache軟件基金會(huì)的開放源碼函式庫,POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫的功能。 二、基本結(jié)構(gòu) ? HSSF - 提供讀寫...
摘要:最近在做使用進(jìn)行大數(shù)據(jù)量導(dǎo)出,現(xiàn)在把其整理成工具類供大家參考。版本增加了前綴為相關(guān)的類,主要用于大數(shù)據(jù)量的寫入與讀取。 最近在做使用POI進(jìn)行大數(shù)據(jù)量導(dǎo)出,現(xiàn)在把其整理成工具類供大家參考。Apache POI 3.8版本增加了前綴為SXSSF相關(guān)的類,主要用于大數(shù)據(jù)量的寫入與讀取。關(guān)于ApachePOI導(dǎo)出Excel基本的使用我這里就不詳解了,具體參考: Apache POI官方網(wǎng)站...
摘要:效果預(yù)覽導(dǎo)出文件效果點(diǎn)擊下載彈出框效果代碼總覽為公司業(yè)務(wù)代碼,大多為從緩存或者數(shù)據(jù)庫中獲取導(dǎo)出數(shù)據(jù),不影響導(dǎo)出功能。導(dǎo)出導(dǎo)出導(dǎo)出所有在線離線用戶成功導(dǎo)出所有在線離線用戶失敗引用導(dǎo)出表格 需求 將每個(gè)xmpp機(jī)房的在線/離線用戶信息導(dǎo)出到Excel表格中(定時(shí)任務(wù)+網(wǎng)頁按鈕),并在網(wǎng)頁上提供下載按鈕進(jìn)行下載。 效果預(yù)覽 showImg(https://segmentfault.com/i...
時(shí)間:2017年07月06日星期四說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預(yù)備知識(shí) 基礎(chǔ)知識(shí) struts2框架(上傳下載功能) xml解析技術(shù)(導(dǎo)入模板) JQuery EasyUI(前臺(tái)美觀) 課程目錄 實(shí)現(xiàn)方式 定制導(dǎo)入模版 導(dǎo)入文件 導(dǎo)...
閱讀 3108·2021-09-22 15:54
閱讀 3997·2021-09-09 11:34
閱讀 1780·2019-08-30 12:48
閱讀 1171·2019-08-30 11:18
閱讀 3441·2019-08-26 11:48
閱讀 927·2019-08-23 17:50
閱讀 2126·2019-08-23 17:17
閱讀 1252·2019-08-23 17:12