乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel2007兼容包-程序员:java导出Excel,附带依赖、后端代码和前端JS

excel2007兼容包-程序员:java导出Excel,附带依赖、后端代码和前端JS

作者:乔山办公网日期:

返回目录:excel表格制作

第一步:加入需要的依赖




org.apache.poi


poi


${poi.version}





org.apache.poi


poi-ooxml


${poi.version}





第二步:工具类


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


import org.springframework.core.io.ClassPathResource;


import org.springframework.web.multipart.MultipartFile;


import javax.servlet.http.HttpServletResponse;


import java.io.*;


import java.util.Date;


import java.util.HashMap;


import java.util.List;


import java.util.Map;


/**


* 功能说明:文件工具类


* @author xuwen


* @date 2019/04/22


*/


public class FileUtils {


/**


* 导出文件


* @param response 请求响应


* @param sheetName Sheet名称


* @param headers 表头


* @param stringList 表数据


*/


public static void downloadExcelFile(HttpServletResponse response, String sheetName, String[] headers,


List stringList) {


FileUtils.exportExcelFile(response, FileUtils.createExcelFile(sheetName, headers, stringList));


}


/**


* 创建excel文件


* @param sheetName Sheet名称


* @param headers 表头


* @param stringList 表数据


* @author xuwen


*/


private static XSSFWorkbook createExcelFile(String sheetName, String[] headers, List stringList) {


// 创建excel文件


XSSFWorkbook workbook = new XSSFWorkbook();


// 设置excel文件格式


XSSFCellStyle cellStyle = workbook.createCellStyle();


// 设置sheet名称


XSSFSheet sheet = workbook.createSheet(sheetName);


// 初始化行号


int rowNum = 0;


// 创建表头行


XSSFRow row = sheet.createRow(rowNum);


// 填充表头


for (int m = 0; m < headers.length; m++) {


XSSFCell cell = row.createCell(m);


cell.setCellValue(headers[m]);


}


// 填充表格数据


for (int n = 0; n < stringList.size(); n++) {


XSSFRow dataRow = sheet.createRow(++rowNum);


String[] data = stringList.get(n);


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


dataRow.createCell(j).setCellValue(data[j]);


}


}


return workbook;


}


/**


* 下载模板


* @param response 请求响应


* @param file 文件


* @author xuwen


*/


public static void downloadTemplate(HttpServletResponse response, String file) {


try {


ClassPathResource classPathResource = new ClassPathResource(file);


InputStream inputStream = classPathResource.getInputStream();


XSSFWorkbook workbook = new XSSFWorkbook(inputStream);


FileUtils.exportExcelFile(response, workbook);


} catch (IOException e) {


e.printStackTrace();


}


}


/**


* 在响应中返回文件流


* @param response 请求响应


* @param workbook excel文件


* @author xuwen


*/


public static void exportExcelFile(HttpServletResponse response, XSSFWorkbook workbook) {


response.setContentType("application/octet-stream;charset=UTF-8");


String excelFileName = "export.xlsx";


try {


response.addHeader("Content-Disposition", "attachment;filename="


+ new String(excelFileName.getBytes("GB2312"), "iso8859-1"));


} catch (UnsupportedEncodingException e) {


e.printStackTrace();


}


try {


OutputStream outputStream = response.getOutputStream();


workbook.write(outputStream);


outputStream.flush();


outputStream.close();


} catch (IOException e) {


e.printStackTrace();


}


}


}




第三步:前端部分


自定义一个点击事件 在 Ajax/Axios/Fetch 的 成功回调函数 里触发此方法即可。(这一步使用vue和jquery都一样,因为使用的是原生js)


/**


* 下载文件


* @author xuwen


*/


export function download(data, fileName) {


let blob = new Blob([data]); //创建一个blob对象


let a = document.createElement('a'); //创建一个标签


a.href = URL.createObjectURL(blob); // response is a blob


a.download = fileName; //文件名称


a.style.display = 'none';


document.body.appendChild(a);


a.click();


a.remove();


}




第四步:自定义业务逻辑


这里为了做简单示例,dao查询直接用Map接收数据。


public void exportExcel(HttpServletResponse response, String id) {


// sheet名称


String sheetName = "库存信息";


// 表头


String[] headers = {"序号", "编号", "名称", "下单时间"};


//查询需要导出报表的信息


List> list = mapper.findById(id);


List strList = new ArrayList<>();


int index = 0;


for (Map map : list) {


index ++;


//String.valueOf() 和 .toString() 懒得判空,直接使用 +“” 变字符串


String[] strings = {String.valueOf(index), map.get("code") + "", map.get("name") + "", map.get("createDate") + ""};


strList.add(strings);


}


// 导出文件, 这里调用上面第二步给的工具类即可


FileUtils.downloadExcelFile(response, sheetName, headers, strList);









原文链接:https://blog.csdn.net/qq_41520146/article/details/103277233


相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网