前景:最近工作中遇到一个需要按照客户要求的格式去输出excel表格的需求,但是发现项目自带的excel工具类无法满足需求,于去查阅了相关资料并写下这篇文章备用。
需求:需要生成一个这样的类似于账单的excel表格
怎么实现呢? 一人我饮酒醉,你说的这个我不会,哈哈哈
打开百度,这是作为一个cv工程师最基本的技能
首先要知道excel的组成
excel文件——>打开——>表格页(也就是说工作表,这个是编写excel的基础)——>进行编写数据
这就是基本的流程,那么我们怎么使用java代码实现?
上代码
private void exportToExcel(HttpServletRequest request, HttpServletResponse response) throws IOException{
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Map map = new HashMap<>();
map.put("startTime", startTime);
map.put("endTime", endTime);
Map returnmap = service.getPageData(map);
List<RepairLabourServicesList> specialList = (List<RepairLabourServicesList>) returnmap.get("specialList");
JSONArray array = (JSONArray) returnmap.get("List");
String date = (String) returnmap.get("date");
HSSFWorkbook workbook = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
HSSFSheet sheet=workbook.createSheet("维修劳务清单");
sheet.setDefaultRowHeightInPoints(20);//设置缺省列高
sheet.setDefaultColumnWidth(20);//设置缺省列宽
//设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一
// sheet.setColumnWidth(cell.getColumnIndex(), 256 * 50);
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
HSSFRow row1=sheet.createRow(0);
HSSFCellStyle cellStyle = workbook.createCellStyle();
HSSFFont fontStyle = workbook.createFont();
HSSFCellStyle cellcontextStyle = workbook.createCellStyle();
HSSFFont fontcontextStyle = workbook.createFont();
HSSFCellStyle celltitleStyle = workbook.createCellStyle();
HSSFFont fonttitleStyle = workbook.createFont();
HSSFCellStyle cellSpecialStyle = workbook.createCellStyle();
HSSFFont fontSpecialStyle = workbook.createFont();
HSSFCellStyle cellFooterStyle = workbook.createCellStyle();
HSSFFont fontFooterStyle = workbook.createFont();
HSSFCellStyle cellTimeStyle = workbook.createCellStyle();
HSSFFont fontTimeStyle = workbook.createFont();
HSSFCellStyle cellManagerStyle = workbook.createCellStyle();
//设置粗体
fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 将字体对象赋值给单元格样式对象
cellStyle.setFont(fontStyle);
cellStyle.setBorderBottom(HSSFCellStyle.SOLID_FOREGROUND);//下边框
cellStyle.setBorderLeft(HSSFCellStyle.SOLID_FOREGROUND);//左边框
cellStyle.setBorderRight(HSSFCellStyle.SOLID_FOREGROUND);//右边框
cellStyle.setBorderTop(HSSFCellStyle.SOLID_FOREGROUND);//上边框
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
cellcontextStyle.setBorderBottom(HSSFCellStyle.SOLID_FOREGROUND);//下边框
cellcontextStyle.setBorderLeft(HSSFCellStyle.SOLID_FOREGROUND);//左边框
cellcontextStyle.setBorderRight(HSSFCellStyle.SOLID_FOREGROUND);//右边框
cellcontextStyle.setBorderTop(HSSFCellStyle.SOLID_FOREGROUND);//上边框
cellcontextStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
cellcontextStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
cellSpecialStyle.setBorderBottom(HSSFCellStyle.SOLID_FOREGROUND);//下边框
cellSpecialStyle.setBorderLeft(HSSFCellStyle.SOLID_FOREGROUND);//左边框
cellSpecialStyle.setBorderRight(HSSFCellStyle.SOLID_FOREGROUND);//右边框
cellSpecialStyle.setBorderTop(HSSFCellStyle.SOLID_FOREGROUND);//上边框
cellSpecialStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
celltitleStyle.setFont