首页 > 其他分享 >idea -- mybaties -- 模板下载

idea -- mybaties -- 模板下载

时间:2022-10-08 17:46:31浏览次数:46  
标签:mybaties sheet String 序号 excelMap -- idea headerList workbook

1,ctroller-->如下

@GetMapping(value = "/createTlzExcel")
public String createTlzExcel(HttpServletResponse response) throws Exception {
Map<String, Object> excelMap = new HashMap<>();
//1.设置Excel表头
List<String> headerList = new ArrayList<>();
headerList.add("序号");
headerList.add("工号");
headerList.add("姓名");
headerList.add("体力值");
excelMap.put("header", headerList);
//2.是否需要生成序号,序号从1开始(true-生成序号 false-不生成序)
boolean isSerial = false;
excelMap.put("isSerial", isSerial);
//3.sheet名
String sheetName = "体力值模板下载";
excelMap.put("sheetName", sheetName);
//Excel文件内容设置
HSSFWorkbook workbook = VerifyUtil.createExcel(excelMap);
String fileName = "体力值模板下载.xls";
//生成excel文件
VerifyUtil.buildExcelFile(fileName, workbook);
//浏览器下载excel
VerifyUtil.buildExcelDocument(fileName, workbook, response);
return "down excel";
}

2.工具类(
VerifyUtil
)--->如下,-- 直接copy
/**
* Excel内容设置
*
* @param excelMap
*/
public static HSSFWorkbook createExcel(Map<String, Object> excelMap) {

HSSFWorkbook workbook = new HSSFWorkbook();
String sheetName = excelMap.get("sheetName").toString();
HSSFSheet sheet = workbook.createSheet(sheetName);

//只考虑一个sheet的情况
HSSFRow row = sheet.createRow(0);
//设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度
sheet.setColumnWidth(1, 12 * 256);
sheet.setColumnWidth(3, 17 * 256);

//表头设置为居中加粗
HSSFCellStyle style = workbook.createCellStyle();
HSSFFont font = workbook.createFont();
//font.setBoldweight((short) 14);
//style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setFont(font);
//是否生成序号,序号从1开始
boolean isSerial = (boolean) excelMap.get("isSerial");
//获取表头列表
java.util.List<String> headerList = (java.util.List<String>) excelMap.get("header");
HSSFCell cell;

//生成表头
int headRow=0;
if (isSerial){
//设置第一个列为序号列
cell = row.createCell(0);
cell.setCellValue("序号");
cell.setCellStyle(style);
headRow = 1;

}
for (String header : headerList) {
cell = row.createCell(headRow);
cell.setCellValue(header);
cell.setCellStyle(style);
headRow++;
}

//往Excel中插入数据
java.util.List<java.util.List<String>> data = (java.util.List<java.util.List<String>>) excelMap.get("data");

int rowNum = 1;
//需要生成序号
if (isSerial){
//表头字段包含序号一列
int headSize = headerList.size() + 1;
for (java.util.List<String> obj:data){
HSSFRow currRow = sheet.createRow(rowNum);
for (int i=1;i<headSize;i++){
currRow.createCell(0).setCellValue(rowNum);
currRow.createCell(i).setCellValue(obj.get(i-1));
}
rowNum++;
}
//无需生成序号
}else{
int headSize = headerList.size();
if(data!=null){
for (List<String> obj:data){
HSSFRow currRow = sheet.createRow(rowNum);
for (int i=0;i<headSize;i++){
currRow.createCell(i).setCellValue(obj.get(i));
}
rowNum++;
}
}
}
return workbook;
}

/**
* 生成excel文件
*
* @param filename
* @param workbook
* @throws Exception
*/
public static void buildExcelFile(String filename, HSSFWorkbook workbook) throws Exception {
FileOutputStream fos = new FileOutputStream(filename);
workbook.write(fos);
fos.flush();
fos.close();
}

/**
* 浏览器下载excel
*
* @param filename
* @param workbook
* @param response
* @throws Exception
*/
public static void buildExcelDocument(String filename, HSSFWorkbook workbook, HttpServletResponse response) throws Exception {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
}


标签:mybaties,sheet,String,序号,excelMap,--,idea,headerList,workbook
From: https://www.cnblogs.com/Darkqueen/p/16769673.html

相关文章

  • axios流上传文件
    //音频文件上传exportconstuploadAudio=(params,callback)=>{constformData=newFormData();//用formData转换formData.append('file',params.file)......
  • Java中的无符号类型
    背景计算机科班出身大多学过离散数学,或者理工类专业也大多学习过C或C++语言,从中我们了解到基本类型的整形有short、int、long等,还分别有无符号(unsigned)和带符号(sign......
  • vs快捷键
    修改后的快捷键注释:ctrl+/取消注释:ctrl+alt+/删除行:ctrl+D复制行:ctrl+alt+D删除左边单词:ctrl+退格删除右边单词:ctrl+delete往右一个单词:ctrl+右箭......
  • C# 最基础知识介绍(五)——方法、封装、继承、多态
    C#最基础知识介绍(五)——方法、封装、继承、多态前言......
  • video.js使用总结
    video.js使用总结video.js是通过HTML5将原生的video标签进行渲染的js开源工具。拥有更多的API,进行个性化定制。在vue项目中引入video.jspackage.json:"dependencies":......
  • css 文本两端对齐
    css文本两端对齐转载.label{ display:inline-block; width:130px; text-align:justify; text-justify:distribute-all-lines;//这行必加,兼容ie浏览器 text-al......
  • Eolink API Hub(API 共享平台)上线,支持对接全 Open API2
    Eolink10.6.0版本更新啦!!!本次大版本更新,Eolink上线了API共享平台(APIHub)的Beta版本。帮助数百万开发者,发现、对接全球openapi提供便捷的平台服务。您可以在项......
  • 推荐一款非常好用又免费的地图标绘工具!
    0序:标绘编辑,是把自己的思路和方案体现到地图上的一个过程,也是图新地球软件使用频率最高的一个功能模块,很多场景都需要用到标绘:举几个例子:河湖标绘:广州市之前下发过一个红......
  • 10月css 学习记录
    1.滚动条css样式:html{box-sizing:border-box;scrollbar-width:thin;}*,*:before,*:after{box-sizing:inherit;scrollbar-width:inherit;}//伪元素无法继承*::-w......
  • EEPROM随笔
       对比两款EEPROM芯片的写时序图发现,C32D的写地址需要16位,而C02的写地址只需8位,且C32D中程序写地址时要先写高8位注:写完数据都需要等待响应 ......