關於poi導出excel三種方式HSSFWorkbook,SXSSFWorkbook,csv的總結


poi導出excel最常用的是第一種方式HSSFWorkbook,不過這種方式數據量大的話會產生內存溢出問題,SXSSFWorkbook是一種大數據量導出格式,csv是另一種excel導出的一種輕快的實現。

先介紹一下這三種格式的特點

1 HSSFWorkbook  excel文件底層是txt實現,我們經常見到的excel都是這種實現的。

2 SXSSFWorkbook  excel文件底層是xml實現,同樣的數據量,大約是第一種的1/6-1/4之間

3 csv 這個比較新潮,數據量應該更小,可以百度。

一 HSSFWorkbook 實現

Map<String, Object> dataMap = service.AssignMiddleExcel(page);
ObjectExcelView erv = new ObjectExcelView("逾期客戶表"); //執行excel操作
mv = new ModelAndView(erv,dataMap);
dataMap 是個map ,包含兩個鍵值對  一個是標題列 
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();

titles.add("借款人姓名"); //1
titles.add("身份證號"); //2
titles.add("借款人手機號");
   dataMap.put("titles", titles);
這是標題列
vpd是個map
vpd.put("var1", userList.get(i).getString("realName"));     //1
vpd.put("var2", userList.get(i).getString("contIdCard")); //2
vpd.put("var3", userList.get(i).getString("telephone")); //3
List<PageData> varList = new ArrayList<PageData>();
PageData就是個HashMap
varList.add(vpd);
dataMap.put("varList", varList);
這就是dataMap的由來

public class ObjectExcelView extends AbstractExcelView{

private String fileName;

public ObjectExcelView(){

}
public ObjectExcelView(String fileName){

this.fileName = fileName;
}

@Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
//String fileName = "逾期客戶表-待催收";
HSSFSheet sheet;
HSSFCell cell;
response.setContentType("application/x-download");//下面三行是關鍵代碼,處理亂碼問題
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("gbk"), "iso8859-1")+".xls");
sheet = workbook.createSheet("sheet1");

List<String> titles = (List<String>) model.get("titles");
int len = titles.size();
HSSFCellStyle headerStyle = workbook.createCellStyle(); //標題樣式
headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFFont headerFont = workbook.createFont(); //標題字體
headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headerFont.setFontHeightInPoints((short)11);
headerStyle.setFont(headerFont);
short width = 20,height=25*20;
sheet.setDefaultColumnWidth(width);
for(int i=0; i<len; i++){ //設置標題
String title = titles.get(i);
cell = getCell(sheet, 0, i);
cell.setCellStyle(headerStyle);
setText(cell,title);
}
sheet.getRow(0).setHeight(height);

HSSFCellStyle contentStyle = workbook.createCellStyle(); //內容樣式
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
List<PageData> varList = (List<PageData>) model.get("varList");
int varCount = varList.size();
for(int i=0; i<varCount; i++){
PageData vpd = varList.get(i);
for(int j=0;j<len;j++){
String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";
cell = getCell(sheet, i+1, j);
cell.setCellStyle(contentStyle);
setText(cell,varstr);
}

}

}

}

二 SXSSFWorkbook  
@RequestMapping("/excel111")
public Object exportExcel(Page page,HttpServletRequest request,HttpServletResponse response){
PageData pd = new PageData();
pd = this.getPageData();
try{
//檢索條件===========
PageData pageData = service.setPdWithTrim(this.getPageData());
page.setPd(pageData);
//檢索條件===========
Map<String, Object> dataMap = service.AssignMiddleExcel(page);
OutputStream outputStream = response.getOutputStream();
String sheetName = "逾期客戶表";
List<String> list = (List<String>)dataMap.get("titles");
String[] headers = new String[list.size()];
for(int i = 0;i<list.size();i++){
headers[i]=list.get(i);
}
List<Object[]> dataList = new ArrayList<>();
List<PageData> varList = new ArrayList<PageData>();
varList = (List<PageData>)dataMap.get("varList");

varList.forEach(e ->{
List<Object> ObjectList = new ArrayList<>();
for(int i=0;i<headers.length;i++){
ObjectList.add(e.get("var"+(i+1))==null?null:e.getString("var"+(i+1)));
}
/* for (Object v : e.values()) {
ObjectList.add(v);
}*/
Object[] objarr = new Object[ObjectList.size()];
for(int i = 0;i<ObjectList.size();i++){
objarr[i] = ObjectList.get(i);
}
dataList.add(objarr);
});
ExportUtil exportUtil = new ExportUtil(sheetName,headers,dataList);
//SXSSFWorkbook 大批量數據導出
SXSSFWorkbook workBook = exportUtil.export();
// 如果文件名有中文,必須URL編碼
String fileName1 = URLEncoder.encode(sheetName, "UTF-8");
// response.reset();
// response.setContentType("application/force-download");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName1+".xls");
workBook.write(outputStream);
workBook.close();
outputStream.flush();
outputStream.close();

//ObjectExcelView erv = new ObjectExcelView("逾期客戶表"); //執行excel操作
//mv = new ModelAndView(erv,dataMap);
} catch(Exception e){
logger.error(e.toString(), e);
}
return new Object();
}


package com.fh.controller.assign_out;
import java.util.ArrayList;
import java.util.List;
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.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.springframework.util.StringUtils;
/**
* Created by dell、 on 2017/10/12.
*/
public class ExportUtil {
private SXSSFWorkbook wb = null;//大數據導出格式

private Sheet sheet = null;

private String sheetName;

private String[] headers;//表頭字段

private List<Object[]> dataList = new ArrayList<Object[]>();//表內容數據
//構造
public ExportUtil(SXSSFWorkbook wb, Sheet sheet) {
this.wb = wb;
this.sheet = sheet;
}
//構造
public ExportUtil(String sheetName, String[] headers, List<Object[]> dataList) {
this.dataList = dataList;
this.headers = headers;
this.sheetName = sheetName;
}
//不知道做什么
public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs) {
int toprowNum = region.getFirstRow();
for (int i = toprowNum; i <= region.getLastRow(); i++) {
SXSSFRow row = (SXSSFRow) sheet.getRow(i);

for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
SXSSFCell cell = (SXSSFCell) row.getCell(j);
cell.setCellStyle(cs);
}
}
}

// 設置表頭的單元格樣式
public CellStyle getHeadStyle() {
// 創建單元格樣式
CellStyle cellStyle = wb.createCellStyle();
// 設置單元格的背景顏色為淡藍色
cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
// 設置填充字體的樣式
cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);

// 設置單元格居中對齊
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);

// 設置單元格垂直居中對齊
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);

// 創建單元格內容顯示不下時自動換行
cellStyle.setWrapText(false);

// 設置單元格字體樣式
XSSFFont font = (XSSFFont) wb.createFont();
// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 這是字體加粗
font.setFontName("宋體");// 設置字體的樣式
font.setFontHeight(14);// 設置字體的大小
cellStyle.setFont(font);// 將字體填充到表格中去

// 設置單元格邊框為細線條(上下左右)
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);

return cellStyle;

}

// 設置表體的單元格樣式
public CellStyle getBodyStyle() {
// 創建單元格樣式
CellStyle cellStyle = wb.createCellStyle();
// 設置單元格居中對齊
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 設置單元格居中對齊
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 創建單元格內容不顯示自動換行
cellStyle.setWrapText(false);
// 設置單元格字體樣式
XSSFFont font = (XSSFFont) wb.createFont();
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 這是字體加粗
font.setFontName("宋體");// 設置字體
font.setFontHeight(12);// 設置字體的大小
cellStyle.setFont(font);// 將字體添加到表格中去

// 設置單元格邊框為細線條
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);

return cellStyle;

}
//似乎沒用到
public Cell setHeadStyle(String[] titles) {
Cell cell = null;

CellStyle headStyle = getHeadStyle();

Row headRow = sheet.createRow(0);
// 構建表頭
for (int i = 0; i < titles.length; i++) {
cell = headRow.createCell(i);
cell.setCellStyle(headStyle);
cell.setCellValue(titles[i]);
}
return cell;
}

/*
* 導出數據
*/
public SXSSFWorkbook export() throws Exception {
// String nsheetName = new String(sheetName.getBytes("UTF-8"));
/*
* response.setCharacterEncoding("utf-8");
* response.setContentType("application/x-msdownload");
* response.setHeader("Content-disposition", "attachment; filename=" +
* sheetName + ".xlsx");// 組裝附件名稱和格式
*/
Integer rowaccess = 1000;// 內存中緩存記錄行數,以免內存溢出

SXSSFWorkbook workbook = new SXSSFWorkbook(rowaccess);
try {

Sheet sheet = workbook.createSheet(sheetName);

// 產生表格標題行
Row titleRow = sheet.createRow(0);
Cell cellTiltle = titleRow.createCell(0);
CellStyle columnTopStyle = this.getColumnTopStyle(workbook);// 獲取列頭樣式對象
sheet.setDefaultColumnWidth(100);
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (headers.length - 1)));
cellTiltle.setCellStyle(columnTopStyle);
cellTiltle.setCellValue(sheetName);

Cell cell = null;

CellStyle headStyle = this.getHeadStyle(workbook);

// 定義所需列數
int columnNum = headers.length;
Row headRow = sheet.createRow(2); // 在索引2的位置創建行(最頂端的行開始的第二行)

//表頭
for (int n = 0; n < columnNum; n++) {
Cell cellRowName = headRow.createCell(n); // 創建列頭對應個數的單元格
cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); // 設置列頭單元格的數據類型
HSSFRichTextString text = new HSSFRichTextString(headers[n]);
cellRowName.setCellValue(headers[n]); // 設置列頭單元格的值
cellRowName.setCellStyle(headStyle); // 設置列頭單元格樣式
sheet.setColumnWidth(n,256*20);
}

CellStyle bodyStyle = this.getBodyStyle(workbook);

// 表體數據
for (int i = 0; i < dataList.size(); i++) {

Object[] obj = dataList.get(i);
Row row = sheet.createRow(i + 3);// 創建所需的行數

for (int j = 0; j < obj.length; j++) {

cell = row.createCell(j);
String str = String.valueOf(StringUtils.isEmpty(obj[j]) ? "" : obj[j]);
cell.setCellValue(str); // 單元格的值
cell.setCellStyle(bodyStyle); // 單元格的樣式
}
}


} catch (Exception e) {
e.printStackTrace();
}

return workbook;
}

// 設置表頭的單元格樣式
public CellStyle getHeadStyle(SXSSFWorkbook workbook) {
// 創建單元格樣式
CellStyle cellStyle = workbook.createCellStyle();

// 設置單元格的背景顏色為淡藍色
cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
// 設置填充字體的樣式
cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);

// 設置單元格居中對齊
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);

// 設置單元格垂直居中對齊
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// cellStyle.setShrinkToFit(true);
// 創建單元格內容顯示不下時自動換行
//cellStyle.setWrapText(true);

// 設置單元格字體樣式
XSSFFont font = (XSSFFont) workbook.createFont();
// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 這是字體加粗
font.setFontName("宋體");// 設置字體的樣式
font.setFontHeight(12);// 設置字體的大小
cellStyle.setFont(font);// 將字體填充到表格中去

// 設置單元格邊框為細線條(上下左右)
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);

return cellStyle;

}

// 設置表體的單元格樣式
public CellStyle getBodyStyle(SXSSFWorkbook workbook) {
// 創建單元格樣式
CellStyle cellStyle = workbook.createCellStyle();
// 設置單元格居中對齊
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 設置單元格居中對齊
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 創建單元格內容不顯示自動換行
//cellStyle.setWrapText(true);
// 設置單元格字體樣式
XSSFFont font = (XSSFFont) workbook.createFont();
// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 這是字體加粗
font.setFontName("宋體");// 設置字體
font.setFontHeight(10);// 設置字體的大小
cellStyle.setFont(font);// 將字體添加到表格中去

// 設置單元格邊框為細線條
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);

return cellStyle;

}

public Cell setHeadStyle(String[] titles, SXSSFWorkbook workbook) {
Cell cell = null;

CellStyle headStyle = getHeadStyle(workbook);

Row headRow = sheet.createRow(0);
// 構建表頭
for (int i = 0; i < titles.length; i++) {
cell = headRow.createCell(i);
cell.setCellStyle(headStyle);
cell.setCellValue(titles[i]);
}
return cell;
}

/*
* 列頭單元格樣式
*/
public CellStyle getColumnTopStyle(SXSSFWorkbook workbook) {

// 設置字體
Font font = workbook.createFont();
// 設置字體大小
font.setFontHeightInPoints((short) 18);
// 字體加粗
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 設置字體名字
font.setFontName("Courier New");
// 設置樣式;
CellStyle style = workbook.createCellStyle();
// 設置底邊框;
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
// 設置底邊框顏色;
style.setBottomBorderColor(HSSFColor.BLACK.index);
// 設置左邊框;
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
// 設置左邊框顏色;
style.setLeftBorderColor(HSSFColor.BLACK.index);
// 設置右邊框;
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
// 設置右邊框顏色;
style.setRightBorderColor(HSSFColor.BLACK.index);
// 設置頂邊框;
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
// 設置頂邊框顏色;
style.setTopBorderColor(HSSFColor.BLACK.index);
// 在樣式用應用設置的字體;
style.setFont(font);
// 設置自動換行;
style.setWrapText(false);
// 設置水平對齊的樣式為居中對齊;
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 設置垂直對齊的樣式為居中對齊;
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}
}

三 csv
/*
* 導出委外催收中EXCEL 大數據量csv導出
* @return
*/
@RequestMapping("/excel")
public Object exportExcel111(Page page, HttpServletResponse response ) {
PageData pd = new PageData();
pd = this.getPageData();
try {
//檢索條件===========
PageData pageData = service.setPdWithTrim(this.getPageData());
page.setPd(pageData);
//檢索條件===========
Map<String, Object> dataMap = service.AssignMiddleExcel(page);
String sheetName = "逾期客戶表";
List<Object> headlist = (List<Object>)dataMap.get("titles");
List<List<Object>> dataList = new ArrayList<>();
List<PageData> varList = new ArrayList<PageData>();
varList = (List<PageData>)dataMap.get("varList");

varList.forEach(e ->{
List<Object> ObjectList = new ArrayList<>();
for(int i=0;i<headlist.size();i++){
ObjectList.add(e.get("var"+(i+1))==null?null:e.getString("var"+(i+1)));
}
dataList.add(ObjectList);
});
File csvFile =CSVUtils.createCSVFile(headlist,dataList,sheetName);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;

response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(csvFile.getName(), "UTF-8"));

response.setHeader("Content-Length", String.valueOf(csvFile.length()));

bis = new BufferedInputStream(new FileInputStream(csvFile));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
while (true) {
int bytesRead;
if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) break;
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
csvFile.delete();
}catch (Exception e){
e.printStackTrace();
}
return new Object();
}
package com.fh.controller.assign_out;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.*;

/**
* Created by dell、 on 2017/10/12.
*/
public class CSVUtils {
/**
* CSV文件生成方法
* @param head
* @param dataList
* @param filename
* @return
*/
public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
String filename) {

File csvFile = null;
BufferedWriter csvWtriter = null;
try {
csvFile = new File( "temp123/"+ File.separator + filename + ".csv");
File parent = csvFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
csvFile.createNewFile();

// GB2312使正確讀取分隔符","
csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
csvFile), "GB2312"), 1024);
// 寫入文件頭部
writeRow(head, csvWtriter);

// 寫入文件內容
for (List<Object> row : dataList) {
writeRow(row, csvWtriter);
}
csvWtriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvWtriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return csvFile;
}

/**
* 寫一行數據方法
* @param row
* @param csvWriter
* @throws IOException
*/
private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
// 寫入文件頭部
for (Object data : row) {
StringBuffer sb = new StringBuffer();
String rowStr = sb.append("\"").append(data).append("\",").toString();
csvWriter.write(rowStr);
}
csvWriter.newLine();
}
public static File createCSVFile(HttpServletRequest request){
List< Map<String,Object>> list = new ArrayList<>();
for(int i =0;i<10;i++){
Map<String,Object> mao = new HashMap<>();
mao.put("cutomerName","zhangsan"+i);
mao.put("cutomerNam1","zhangsan"+i);
mao.put("cutomerNam2","zhangsan"+i);
mao.put("cutomerNam3","zhangsan"+i);
mao.put("cutomerNam4","zhangsan"+i);
mao.put("cutomerNam5","zhangsan"+i);
mao.put("cutomerNam6","zhangsan"+i);
mao.put("cutomerNam7","zhangsan"+i);
mao.put("cutomerNam8","zhangsan"+i);
mao.put("cutomerNam9", "2017-10-17 22:33:33 12.00");
mao.put("cutomerNam10",555555556);
/* mao.put("cutomerNam11","zhangsan"+i);
mao.put("cutomerNam12","zhangsan"+i);
mao.put("cutomerNam13","zhangsan"+i);
mao.put("cutomerNam14","zhangsan"+i);
mao.put("cutomerNam15","zhangsan"+i);
mao.put("cutomerNam16","zhangsan"+i);
mao.put("cutomerNam17","zhangsan"+i);
mao.put("cutomerNam18","zhangsan"+i);
mao.put("cutomerNam19","zhangsan"+i);
mao.put("cutomerNam20","zhangsan"+i);
mao.put("cutomerNam21","zhangsan"+i);
mao.put("cutomerNam22","zhangsan"+i);
mao.put("cutomerNam23","zhangsan"+i);
mao.put("cutomerNam24","zhangsan"+i);
mao.put("cutomerNam25","zhangsan"+i);
mao.put("cutomerNam26","zhangsan"+i);
mao.put("cutomerNam27","zhangsan"+i);
mao.put("cutomerNam28","zhangsan"+i);
mao.put("cutomerNam29","zhangsan"+i);
mao.put("cutomerNam30","zhangsan"+i);
mao.put("cutomerNam31","zhangsan"+i);
mao.put("cutomerNam32","zhangsan"+i);
mao.put("cutomerNam33","zhangsan"+i);
mao.put("cutomerNam34","zhangsan"+i);
mao.put("cutomerNam35","zhangsan"+i);
mao.put("cutomerNam36","zhangsan"+i);
mao.put("cutomerNam37","zhangsan"+i);
mao.put("cutomerNam38","zhangsan"+i);
mao.put("cutomerNam39","zhangsan"+i);
mao.put("cutomerNam40","zhangsan"+i);
mao.put("cutomerNam41","zhangsan"+i);
mao.put("cutomerNam42","zhangsan"+i);
mao.put("cutomerNam43","zhangsan"+i);
mao.put("cutomerNam44","zhangsan"+i);
mao.put("cutomerNam45","zhangsan"+i);*/
list.add(mao);
}


// 設置表格頭
Object[] head = {"客戶姓名", "證件類型", "證件號碼", "銀行賬號", "理財賬號", "客戶類型", "風險等級", "歸屬狀況", "歸屬機構", "客戶經理", "營銷比例(%)" };
List<Object> headList = Arrays.asList(head);
// 設置數據
List<List<Object>> dataList = new ArrayList<List<Object>>();
List<Object> rowList = null;
for (int i = 0; i < list.size(); i++) {
rowList = new ArrayList<Object>();
Map<String,Object> maovo = list.get(i);
rowList.add(maovo.get("cutomerName"));
rowList.add(maovo.get("cutomerNam1"));
rowList.add(maovo.get("cutomerNam2"));
rowList.add(maovo.get("cutomerNam3"));
rowList.add(maovo.get("cutomerNam4"));
rowList.add(maovo.get("cutomerNam5"));
rowList.add(maovo.get("cutomerNam6"));
rowList.add(maovo.get("cutomerNam7"));
rowList.add(maovo.get("cutomerNam8"));
rowList.add(maovo.get("cutomerNam9"));
rowList.add(maovo.get("cutomerNam10"));
dataList.add(rowList);
}
// 導出文件路徑
// String downloadFilePath = request.getContextPath();
// 導出文件名稱
String fileName = "客戶列表_";
// 導出CSV文件
File csvFile = CSVUtils.createCSVFile(headList, dataList, fileName);
return csvFile;
}
}







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM