java map导出excel_java导出excel 入参:List<Map<String, Object>>

一、pom依赖

3.10-FINAL

org.apache.poi

poi

${org.apache.poi.version}

org.apache.poi

poi-ooxml

${org.apache.poi.version}

org.apache.poi

poi-ooxml-schemas

${org.apache.poi.version}

f94b5aaad90c42146bf051cccb22ef47.png

二、封装的服务

import cn.hutool.core.collection.CollectionUtil;

import cn.hutool.core.util.ObjectUtil;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import lombok.extern.slf4j.Slf4j;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.springframework.stereotype.Service;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletResponse;

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.UUID;

@Slf4j

@Service

public class ExcelExportService {

/**

* @param rowDataList:需导出的数据 eg:[{"gmt_create":"2019-02-22 00:00:00","contract_id":7,"remark":"test","sign_man":"lu"}]

* @param response

* @throws Exception

*/

public void exportExcel2007(List> rowDataList, HttpServletResponse response) throws Exception {

XSSFWorkbook workbook = new XSSFWorkbook();

ServletOutputStream outputStream = null;

try {

String sheetName = "sheet1";

XSSFSheet sheet = workbook.createSheet(sheetName);

if(CollectionUtil.isEmpty(rowDataList)) {

return;

}

// 设置表头

XSSFRow headRow = sheet.createRow(0);

MapobjectMap = rowDataList.get(0);

int i = 0;

for (String title : objectMap.keySet()) {

headRow.createCell(i++).setCellValue(title);

}

for (MapcurrRowDataMap : rowDataList) {

XSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1); // 获取当前行

i = 0;

for (String title : currRowDataMap.keySet()) {

Object obj = currRowDataMap.get(title);

dataRow.createCell(i++).setCellValue(ObjectUtil.isNull(obj) ? null : obj.toString());

}

}

// 下载导出设置

// 设置头信息

String fileName = UUID.randomUUID().toString().replace("-", "") + ".xlsx";

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

outputStream = response.getOutputStream();

workbook.write(outputStream);

outputStream.flush();

} finally {

// 关闭

if(outputStream != null){

outputStream.close();

}

}

}

/**

* @param rowDataList:需导出的数据 eg:[{"gmt_create":"2019-02-22 00:00:00","contract_id":7,"remark":"test","sign_man":"lu"}]

* @param response

* @throws Exception

*/

public void exportExcel2003(List> rowDataList, HttpServletResponse response) throws Exception {

HSSFWorkbook workbook = new HSSFWorkbook();

ServletOutputStream outputStream = null;

try {

String sheetName = "sheet1";

HSSFSheet sheet = workbook.createSheet(sheetName);

if(CollectionUtil.isEmpty(rowDataList)) {

return;

}

// 设置表头

HSSFRow headRow = sheet.createRow(0);

MapobjectMap = rowDataList.get(0);

int i = 0;

for (String title : objectMap.keySet()) {

headRow.createCell(i++).setCellValue(title);

}

for (MapcurrRowDataMap : rowDataList) {

HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1); // 获取当前行

i = 0;

for (String title : currRowDataMap.keySet()) {

Object obj = currRowDataMap.get(title);

dataRow.createCell(i++).setCellValue(ObjectUtil.isNull(obj) ? null : obj.toString());

}

}

// 下载导出设置

// 设置头信息

String fileName = UUID.randomUUID().toString().replace("-", "") + ".xls";

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

outputStream = response.getOutputStream();

workbook.write(outputStream);

outputStream.flush();

} finally {

// 关闭

if(outputStream != null){

outputStream.close();

}

}

}

}

c23ed8b532efdb222b5c86487d905f86.png

三、代码示例

public void exportExcel(HttpServletRequest request, HttpServletResponse response) {

List> dataList = getDataList();

// 导出excel2003

// excelExportService.exportExcel2003(dataList, response);

// 导出excel2007

excelExportService.exportExcel2007(dataList, response);

}

import cn.hutool.core.util.ObjectUtil;

import org.springframework.beans.factory.annotation.Value;

import java.sql.Connection;

import java.sql.Date;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@Value("${jdbc.url}")

private String url;

@Value("${jdbc.driver}")

private String driver;

@Value("${jdbc.username}")

private String username;

@Value("${jdbc.password}")

private String password;

@Value("${jdbc.sql}")

private String sql;

public List>  getDataList() throws SQLException {

Connection connection = null;

Statement statement = null;

List> dataList = new ArrayList<>();

try {

// 1.获取数据库连接

Class.forName(driver); // 驱动

connection = DriverManager.getConnection(url, username, password);

// 2.

statement = connection.createStatement();

// String sql = "select * from contract where contract_id in (7, 27, 31, 33, 35, 37)";

ResultSet resultSet = statement.executeQuery(sql);

ResultSetMetaData resultSetMD = resultSet.getMetaData();

while(resultSet.next()){//集合遍历的形式

MapcolumnData = new HashMap<>();

for (int i = 1; i <= resultSetMD.getColumnCount(); i++) {

String columnName = resultSetMD.getColumnName(i);

String columnTypeName = resultSetMD.getColumnTypeName(i);

if(ObjectUtil.equal(columnTypeName, "DATE") ||

ObjectUtil.equal(columnTypeName, "TIME") ||

ObjectUtil.equal(columnTypeName, "YEAR") ||

ObjectUtil.equal(columnTypeName, "DATETIME") ||

ObjectUtil.equal(columnTypeName, "TIMESTAMP")) {

Date date = resultSet.getDate(i);

if(ObjectUtil.isNotNull(date)) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

columnData.put(columnName, sdf.format(date));

}else{

columnData.put(columnName, date);

}

}else{

columnData.put(columnName, resultSet.getObject(i));

}

}

dataList.add(columnData);

}

return dataList;

} catch (Exception e) {

return dataList;

} finally {

// 6、关闭资源

if(statement != null) {

statement.close();

}

if(connection != null) {

connection.close();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值