Springboot Excel 操作总结

上传表格

 public String upload(HttpServletResponse response, @RequestParam("file") MultipartFile file) throws IOException, InvalidFormatException {
 		//判断文件传输是否成功
        if (file.isEmpty() == true){
            return "index";
        }
        String fileName = file.getOriginalFilename();
        byte [] byteArr=file.getBytes();
        InputStream inputStream = new ByteArrayInputStream(byteArr);
        String str[] = fileName.split("\\.");
        if ("xls".equals(str[1])){
            workbook = new HSSFWorkbook(inputStream);
       }else {
            workbook = new XSSFWorkbook(inputStream);
        }
        return "index";
    }

生成表单

public String createExcel(HttpServletResponse response){
	  XSSFWorkbook wb = new XSSFWorkbook();
	  //sheet名字
	  XSSFSheet sheet = wb.createSheet("xxx测量单");
	  //设置宽度
	  //第一个参数:第几列 第二个参数: 多少字节的宽度
	  sheet.setColumnWidth(0, 25 * 256);
	  //生成第几行
	  XSSFRow row = sheet.createRow(0);
	  // 设置行高
	  row.setHeight((short) 800);
	  // 生成第几列
	  XSSFCell cell = row.createCell(0);
	  //生成样式
	  XSSFCellStyle style = createCellStyle(wb);
	  //设置这一单元格的样式
	  cell.setCellStyle(style);
	  //这一单元格的值
	  cell.setCellValue("表格内容");
	  // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
	  sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));
	  //插入图片
	  url = new URL("https://m.360buyimg.com/babel/jfs/t1/109882/8/31450/102963/62e38aaaE994d3952/2c77c57cc66292df.jpg");
	  setPhoto(wb, sheet, 0, 0, 1, 2, url);
	  //浏览器下载excel
	  setBrowser(response,wb,"测量表.xlsx");
	  return "成功";
}

表单样式

private static XSSFCellStyle createCellStyle(XSSFWorkbook wb) {
	XSSFCellStyle cellStyle = wb.createCellStyle();
	//表格背景色
	cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(252, 228, 214, 1)));
	cellStyle.setFillBackgroundColor(new XSSFColor(new java.awt.Color(252, 228, 214, 1)));
	cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
	//字体水平居中
	cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
	//字体垂直居中
	cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
	XSSFFont headerFont = wb.createFont(); // 创建字体样式
	headerFont.setColor(IndexedColors.BLACK.index);//字体颜色
	headerFont.setBold(true); //字体加粗
	headerFont.setFontName("黑体"); // 设置字体类型
	headerFont.setFontHeightInPoints((short) 20); // 设置字体大小
	cellStyle.setFont(headerFont); // 为标题样式设置字体样式
	//设置边框
	setBorder(cellStyle, BorderStyle.THICK, new XSSFColor(new java.awt.Color(47, 117, 181,1)));
	return cellStyle;
}

设置表格边框

private static void setBorder(XSSFCellStyle style, BorderStyle border, XSSFColor color) {
        style.setBorderTop(border);
        style.setBorderLeft(border);
        style.setBorderRight(border);
        style.setBorderBottom(border);
        style.setBorderColor(XSSFCellBorder.BorderSide.TOP, color);
        style.setBorderColor(XSSFCellBorder.BorderSide.LEFT, color);
        style.setBorderColor(XSSFCellBorder.BorderSide.RIGHT, color);
        style.setBorderColor(XSSFCellBorder.BorderSide.BOTTOM, color);
    }

浏览器下载表格

private static void setBrowser(HttpServletResponse response, XSSFWorkbook workbook, String fileName) {
        try {
        	//application/vnd.ms-excel
            response.setContentType("application/ms-excel;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename="
                    .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
            response.flushBuffer();
            OutputStream out = response.getOutputStream();
            workbook.write(out);// 将数据写出去
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

插入图片

 /**
     * @Title: @Description: excel生成图片工具 @param @return @throws
     * @param ast:图左上角第几行
     * @param bst:图左上角第几列
     * @param aend:图右下角第几行
     * @param bend:图右下角第几列
     */
 public void setPhoto(XSSFWorkbook workbook, XSSFSheet sheet, int ast, int bst, int aend, int bend, URL url) {
    XSSFDrawing patriarch = sheet.createDrawingPatriarch();
    BufferedImage bufferImg = null;
    ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

    try {
        bufferImg = ImageIO.read(url);
        ImageIO.write(bufferImg, "jpg", byteArrayOut);
        // anchor主要用于设置图片的属性
        XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) bst, ast, (short) bend, aend);
        anchor.setAnchorType(3);
        // 插入图片
        patriarch.createPicture(anchor,
                workbook.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

前端excel导出

https://blog.csdn.net/L_ss01/article/details/126243106

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值