项目一 9 七牛云存储 poi入门

回顾

mybatis的generator逆向生成工具

根据id查询,根据id删除,可选保存,可选更新,条件查询

购销合同(购销合同,货物表,附件)

购销合同管理 : 删除

货物管理

1.七牛云存储

1.1 账号申请

https://portal.qiniu.com/signup

在这里插入图片描述

1.2 账号的秘钥

空间名: heima92
域名 :  ptldqogfy.bkt.clouddn.com/图片
AccessKey : COuoDRVa7JLsuurzIvQSI_pEDceHDw3yGfJEmvwv
SecretKey : 3RWpTjB5Jxg3QosUFr4mxbHXJ5JR2m6AHQqYsSlr

1.3 抽取工具类

public class FileUploadUtils {

   private static String accessKey ="COuoDRVa7JLsuurzIvQSI_pEDceHDw3yGfJEmvwv";
   private static String secretKey ="3RWpTjB5Jxg3QosUFr4mxbHXJ5JR2m6AHQqYsSlr";
   private static String bucket ="heima92";
   private static String url="http://ptldqogfy.bkt.clouddn.com/";

   /**
    *  参数:uploadBytes
    *      文件的byte数组
    *  返回值:
    *      图片的url请求路径
    *
    */
   public String upload(byte[] uploadBytes) {
      //构造一个带指定Zone对象的配置类
      Configuration cfg = new Configuration(Zone.zone0());
      //...其他参数参考类注释
      UploadManager uploadManager = new UploadManager(cfg);
      //...生成上传凭证,然后准备上传
      //默认不指定key的情况下,以文件内容的hash值作为文件名
      String key = null;
      try {
         Auth auth = Auth.create(accessKey, secretKey);
         String upToken = auth.uploadToken(bucket);
         try {
            Response response = uploadManager.put(uploadBytes, key, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            //System.out.println(putRet.key);
            key = putRet.key;
         } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
               System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
               //ignore
            }
         }
      } catch (Exception ex) {
         //ignore
      }
      return url+key;
   }
   }
/*         public static void main(String[] args) throws IOException {
             File file=new File("D:\\logo.jpg");
             FileInputStream fis = new FileInputStream(file);
             byte[] bytes = new byte[fis.available()];
             fis.read(bytes);
             String imgUrl = new FileUploadUtils().upload(bytes);
             System.out.println(imgUrl);

         }*/

1.4 完成货物图片的上传

注意事项 :

  1. form表单的enctype属性
    在这里插入图片描述
  2. form表单的method=post
  3. 文件对应的input,type属性=file
  4. 图片解析器配置到springmvc配置文件中
    5.
  5. 上传的对象对应方法中的一个参数MultipartFile
    在这里插入图片描述

在这里插入图片描述

#2.附件管理

2.1 列表查询

2.2 保存附件

在这里插入图片描述

2.3 修改附件

在这里插入图片描述

2.4 删除附件

在这里插入图片描述

3.细粒度权限控制

数据层面的权限控制

3.1 管理本部门所有人员

在这里插入图片描述

3.1.1 修改保存添加对应的属性

在这里插入图片描述

3.1.2 细粒度查询

在这里插入图片描述

3.2 管理本部门和下属部门

在这里插入图片描述

在这里插入图片描述

4.poi入门

4.1 Excel概述

Excel 2003Excel2007及以上
.xls.xlsx
二级制复合文本xml
最大行 65536最大行 1048576
存储量有限格式简单,存储量大

4.2 POI的应用场景

  • 生成Excel报表
  • 解析Excel报表

4.3 生成Excel报表的入门案例(重点)

  • 创建工作簿
  • 创建sheet
  • 创建row
  • 创建cell
  • 设置单元内容
  • 生成excel文件
/**
 * 测试使用poi生成excel报表
 */
public class PoiTest01 {

   public static void main(String[] args) throws Exception {
      //1.创建工作表(工作簿)   HssfWordBook :2003版本excel , XssfWorkBook : 2007版本 ,SxssfWorkBook : 百万数据
      Workbook wb = new XSSFWorkbook();
      //2.创建一个sheet(页)
      Sheet sheet = wb.createSheet("abc");
      //3.创建一个行
      Row row = sheet.createRow(2);//参数:行索引,从0开始
      //4.创建一个单元格
      Cell cell = row.createCell(2);//参数:单元格索引,从0开始
      //5.设置单元格内容
      cell.setCellValue("传智播客");
      //6.设置单元格样式(了解)
      CellStyle cs = wb.createCellStyle(); //创建工作簿样式
      cs.setBorderRight(BorderStyle.THIN);
      cs.setBorderLeft(BorderStyle.THIN);
      cs.setBorderTop(BorderStyle.THIN);
      cs.setBorderBottom(BorderStyle.THIN);

      Font font = wb.createFont(); //创建字体对象
      font.setFontName("华文行楷");
      font.setFontHeightInPoints((short) 18);//字号

      cs.setFont(font);

      cell.setCellStyle(cs);
      //7.生成excel报表文件
      FileOutputStream fos = new FileOutputStream("E:\\demo1.xlsx");
      wb.write(fos);
      fos.close();
   }
}

4.4 解析Excel报表的入门案例

在这里插入图片描述

/**
 * 解析excel报表
 */
public class PoiTest02 {

   public static void main(String[] args) throws Exception {
      //1.根据excel文件获取工作簿
      Workbook wb = new XSSFWorkbook("E:\\课程资料\\授课文档\\黑马92\\05-项目一\\day09\\03-资料\\poi资料\\demo.xlsx");
      //2.获取到工作簿的第一页
      Sheet sheet = wb.getSheetAt(0);//参数 : 页的索引,从0开始
      //3.循环获取每一行
      for(int i=0; i<= sheet.getLastRowNum();i++) {  //获取的最后一行的索引  3
         //获取每一行
         Row row = sheet.getRow(i);
         for(int j=2; j<row.getLastCellNum();j++) { //获取的最后一列的列号
            //获取每一个单元格
            Cell cell = row.getCell(j);
            Object obj = getCellValue(cell);
            System.out.print(obj + "     ");
         }
         System.out.println();
         System.out.println("--------");
      }
      //4.循环获取每行中的每个单元格
   }


   /**
    * 获取单元格中的内容 (了解)
    */
   public  static Object getCellValue(Cell cell) {
      /**
       * 1.获取单元格的类型
       * 2.根据类型判断
       * 3.根据不同的类型获取不同的数据
       */
      CellType cellType = cell.getCellType();

      Object obj  = null;
      switch (cellType) {
         case STRING:{
            //如果单元格类型是string
            obj = cell.getStringCellValue();
            break;
         }
         case NUMERIC: {
            //在poi中数字可以代表数子,日期
            if(DateUtil.isCellDateFormatted(cell)){ //如果是日期格式的数字
               obj = cell.getDateCellValue();
            }else{
               //如果单元格类型是数字
               obj = cell.getNumericCellValue();
            }
            break;
         }
         case BOOLEAN:{
            //如果单元格类型是boolean
            obj = cell.getBooleanCellValue();
            break;
         }
         default:{
            break;
         }
      }
      return obj;
   }
}

作业:

​ 代码

​ 练习poi生成报表

​ 预习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值