当前位置: 首页 > news >正文

有什么做logo网站连云港网站建设 连云港网站制作

有什么做logo网站,连云港网站建设 连云港网站制作,快速做网站服务好,wordpress站点打不开二十二、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出…

二十二、Apache POI

Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java
序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。

使用场景:银行网银系统导出交易明细、各种业务系统导出Excel报表、批量导,入业务数据。

1、入门案例

  1. 导入对应的Maven坐标

    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
    </dependency><dependency>
    <groupId>org.apache .poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.16</version>
    </dependency>
  2. 创建Excel工作簿,并对其写入和读取

    public class POITest {/**通过POI.创建Excel.文件并且写入文件内容*/public static void wirteExcel() throws Exception{// 在内存中创建一个EXcel工作簿XSSFWorkbook workbook = new XSSFWorkbook();// 在工作簿中创建一个工作表,并命名为infoXSSFSheet sheet = workbook.createSheet("info");// 在info工作表中创建一行,行号是从0开始的XSSFRow row = sheet.createRow(1);// 在row行中创建一个单元格,列号从0开始,并设置单元格的值为,姓名(2行3列)性别(2行4列)row.createCell(2).setCellValue("姓名");row.createCell(3).setCellValue("性别");//再次创创建一个新行,第3行row=sheet.createRow(2);// 在row行中创建单元格,并设置单元格的值row.createCell(2).setCellValue("张三");row.createCell(3).setCellValue("男");// 再次创建一个新行,第4行row=sheet.createRow(3);row.createCell(2).setCellValue("小明");row.createCell(3).setCellValue("女");// 将内存中的数据写入到磁盘中OutputStream outputStream=new FileOutputStream("D:\\info.xlsx");workbook.write(outputStream);  // 写入到输出流中//关闭资源outputStream.close();workbook.close();}/*** 读取Excel文件* @throws Exception*/public static void readExcel() throws Exception{// 创建输入流对象InputStream inputStream=new FileInputStream("D:\\info.xlsx");//从输入流中读取一个工作簿XSSFWorkbook workbook=new XSSFWorkbook(inputStream);// 根据名字来获取工作表//  XSSFSheet sheet = workbook.getSheet("info");//根据下标来获取工作表XSSFSheet sheet = workbook.getSheetAt(0);// 获取最后一行的行号(下标从0开始的)Integer lastRowNum = sheet.getLastRowNum();//  循环读取每一行,以及每一行对应的单元格数据,(第一行为空白,我们从第二行开始读取,下标为1)for(int i=1;i<=lastRowNum;i++){XSSFRow row = sheet.getRow(i); // 获取第i行String name =  row.getCell(2).getStringCellValue(); // 获取第i行,第3列的数据String sex = row.getCell(3).getStringCellValue(); // 获取第i行,第4列的数据System.out.println(name+"---"+sex);}// 关闭资源inputStream.close();workbook.close();}public static void main(String[] args) throws Exception {wirteExcel();readExcel();}
    }
    

    在这里插入图片描述

2、实操案例

报表导出,营业数据导出到工作表中,下载下来。

接口:没有参数,也没有返回值。

一般情况下,想这个比较复杂的工作表,都是不需要提供POI来创建的,一般是手动创建这样一个模板文件,通过输入流将其读取进去,只需要将数据写入对应的单元格,通过输出流由客户端、浏览器进行下载即可。

在这里插入图片描述

2.1 Controller层
  /*** 导出运营数据报表*/@Operation(summary = "导出运营数据报表")@GetMapping("/export")public void getBusinessReportData(HttpServletResponse response){// 调用service导出报表,传入响应对象reportService.exportBusinessReport(response);}
2.2 Service层
    /*** 导出运营数据报表* @param response*/@Overridepublic void exportBusinessReport(HttpServletResponse response) {//1、获取运营数据LocalDate beginDate=LocalDate.now().minusDays(30);LocalDate endDate=LocalDate.now().minusDays(1);LocalDateTime beginTime=LocalDateTime.of(beginDate,LocalTime.MIN);LocalDateTime endTime=LocalDateTime.of(endDate,LocalTime.MAX);BusinessDataVO businessDataVO= workspaceService.getBusinessData(beginTime,endTime); //获取运营数据//2、将数据写入到模板文件中//2.1、获取模板文件log.info("name:{}",this.getClass().getClassLoader());//通过类加载器,获取到路径:src/main/resources,再拼接路径:template/运营数据报表模板.xlsxInputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("template/运营数据报表模板.xlsx");try {//2.2、通过模块创建工作簿XSSFWorkbook workbook=new XSSFWorkbook(inputStream);//2.3、读取第一个工作表XSSFSheet sheet=workbook.getSheetAt(0);//2.4、设置时间数据sheet.getRow(1).getCell(0).setCellValue("日期范围:"+beginDate+" 至 "+endDate);//2.5、设置概况数据XSSFRow row= sheet.getRow(3);row.getCell(1).setCellValue(businessDataVO.getTurnover().doubleValue());//营业额row.getCell(3).setCellValue(businessDataVO.getOrderCompletionRate()); //订单完成率row.getCell(5).setCellValue(businessDataVO.getNewUsers()); //新增用户数row= sheet.getRow(4);row.getCell(1).setCellValue(businessDataVO.getValidOrderCount());//有效订单数row.getCell(3).setCellValue(businessDataVO.getUnitPrice().doubleValue());//平均客单价//2.6、设置订单明细数据for(int i=0;i<30;i++){LocalDate date=beginDate.plusDays(i);LocalDateTime begin=LocalDateTime.of(date,LocalTime.MIN);LocalDateTime end=LocalDateTime.of(date,LocalTime.MAX);businessDataVO=workspaceService.getBusinessData(begin,end);row= sheet.getRow(7+i);row.getCell(0).setCellValue(date.toString()); //日期row.getCell(1).setCellValue(businessDataVO.getTurnover().doubleValue()); //营业额row.getCell(2).setCellValue(businessDataVO.getValidOrderCount()); //有效订单数row.getCell(3).setCellValue(businessDataVO.getOrderCompletionRate());//订单完成率row.getCell(4).setCellValue(businessDataVO.getUnitPrice().doubleValue());row.getCell(5).setCellValue(businessDataVO.getNewUsers()); //新增用户数}//3、将文件输出到浏览器 浏览器下载ServletOutputStream servletOutputStream = response.getOutputStream();workbook.write(servletOutputStream);//4、关闭资源workbook.close();servletOutputStream.close();inputStream.close();}catch (Exception e){e.printStackTrace();}}
http://www.yayakq.cn/news/883591/

相关文章:

  • 网站建设中图片联系方式河南网站定制
  • dephi 网站开发网页友情链接
  • 设计网站还有哪些问题站长数据
  • 东莞建站多少钱如何说课网站建设
  • 河南企业网站排名优化价格网站开发维护前景
  • 大学网站建设定制网站建设详情页模板下载
  • 好的网站设计培训学校注册商标设计
  • 可以放钓鱼网站的免费空间有哪些可以做推广的网站
  • 制作网页与网站qian p.wordpress
  • 大型 视频网站开发优秀网站建设出售
  • 铜陵市网站建设找图网
  • 哪个网站做房子团购北京手机版建站系统开发
  • %2enet网站开发软件产品设计流程
  • 网站怎么显示备案号宜阳建站
  • 游戏微网站模板网络营销广告词有哪些
  • 专业深圳网站定制开发郑州做网站狼牙
  • 模板王网站官网wordpress有点尴尬
  • 网站备案医疗保健审批号是什么长沙搜索排名优化公司
  • 网站改版301是什么意思巴中建设厅网站电话
  • 你会怎么做外国的网站成都青白江网站建设
  • 网站建设的公司业务网站做好了怎么上线
  • 深圳建网站哪家公司好根域名服务器
  • 如何用网页制作网站如何做游戏试玩网站
  • 建设网站员工招聘策划vps 网站上传
  • 做章的网站html代码快捷键
  • 8848网站盈利模式wordpress做小说网站
  • 西安网站制作排名郑州经济技术开发区招教
  • wordpress整站搬家教程投资公司注册需要多少钱
  • 整站排名优化公司wordpress邮件服务器
  • 截获网站流量怎么做开发公司出纳收款制度