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

回顾

mybatis的generator逆向生成工具

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

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

购销合同管理 : 删除

货物管理

1.七牛云存储

1.1 账号申请

https://portal.qiniu.com/signup

项目一 9 七牛云存储 poi入门_第1张图片

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属性
    项目一 9 七牛云存储 poi入门_第2张图片
  2. form表单的method=post
  3. 文件对应的input,type属性=file
  4. 图片解析器配置到springmvc配置文件中
    项目一 9 七牛云存储 poi入门_第3张图片
  5. 上传的对象对应方法中的一个参数MultipartFile
    项目一 9 七牛云存储 poi入门_第4张图片

项目一 9 七牛云存储 poi入门_第5张图片

#2.附件管理

2.1 列表查询

2.2 保存附件

项目一 9 七牛云存储 poi入门_第6张图片

2.3 修改附件

项目一 9 七牛云存储 poi入门_第7张图片

2.4 删除附件

项目一 9 七牛云存储 poi入门_第8张图片

3.细粒度权限控制

数据层面的权限控制

3.1 管理本部门所有人员

项目一 9 七牛云存储 poi入门_第9张图片

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

项目一 9 七牛云存储 poi入门_第10张图片

3.1.2 细粒度查询

项目一 9 七牛云存储 poi入门_第11张图片

3.2 管理本部门和下属部门

项目一 9 七牛云存储 poi入门_第12张图片

项目一 9 七牛云存储 poi入门_第13张图片

4.poi入门

4.1 Excel概述

Excel 2003 Excel2007及以上
.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生成报表

​ 预习

你可能感兴趣的:(项目一)