精华内容
下载资源
问答
  • 怎么把模板复制使用
    千次阅读
    2018-12-18 10:46:21

    ---------------------------------------------------------------------------------------------
    [版权申明:本文系作者原创,转载请注明出处] 
    文章出处:https://blog.csdn.net/sdksdk0/article/details/85060879

    作者:朱培      ID:sdksdk0     
    --------------------------------------------------------------------------------------------

    我们最近需要对系统加一个报表导出的功能,可以通过POI直接导出,导出后的excel文件需要支持在office里面修改数据后图表也会自动变换。方法一可以使用jfreechart+poi,但是这种方法生成的图表是一张图片,不能在office中自动修改;第二种方法是poi调用 office的宏,它需要调用自定义的.dll 文件,也需要在windows环境中,所以不适用。

    我这边采用的是自定义 excel 模版,然后在模版定义图表 。 然后通过POI改变图表数据区域的数据值。从而达到改变图表的目的。

    1、先准备一个excel 模版,里面把需要的数据写好,然后先自定义图表,例如图表样式如下:

    2、把数据区域的内容情况,数据清空之后如下:

     

    3、在javaee工程中引入poi的相关jar包,并把excel模板放入相应工程的WEB-INF目录下,名称换为temple.xlsx

    <dependency>
    		    <groupId>org.apache.poi</groupId>
    		     <artifactId>poi-ooxml</artifactId>
    		    <version>3.12</version>
    		</dependency>
    		 
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi</artifactId>
    			<version>3.12</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml-schemas</artifactId>
    			<version>3.12</version>
    		</dependency> 

    4、读取模板文件,这里读取的是xlsx方式的,

                //excel模板路径
    			File f = new File(this.getClass().getResource("/").getPath());
    		    String filePath = f+File.separator+"WEB-INF"+File.separator+"temple.xlsx";
    			File file = new File(filePath);
    			FileInputStream in =new FileInputStream(file);
    			//读取excel模板
    			XSSFWorkbook wb = new XSSFWorkbook(in);
    			//读取了模板内所有sheet内容
    			XSSFSheet sheet = wb.getSheetAt(0);
    			//如果这行没有了,整个公式都不会有自动计算的效果的
    			sheet.setForceFormulaRecalculation(true);

    如果是xls格式的,就改为:

                POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
                //读取excel模板
                HSSFWorkbook wb = new HSSFWorkbook(fs);

               //读取了模板内所有sheet内容
                HSSFSheet sheet = wb.getSheetAt(0);

    5、找到相应的数据行,进行数据填充,要从0开始计数,excel中的第1行,读取的时候是从0开始的,例如我这边添加表头,填充历史客流、年龄等信息进去

    Calendar cal = Calendar.getInstance();
    			String publishTime = DateUtil.format(cal.getTime(), "yyyy-MM-dd HH:mm:ss");
    			if(null==name){
    				sheet.getRow(1).getCell(0).setCellValue("景区:全部");
    			}else{
    				sheet.getRow(1).getCell(0).setCellValue("景区:"+name);
    			}
    			if(null==beginTime){
    				sheet.getRow(1).getCell(2).setCellValue("时间:全部");
    			}else{
    				sheet.getRow(1).getCell(2).setCellValue("时间:"+beginTime+"~"+endTime);
    			}
    			sheet.getRow(1).getCell(6).setCellValue("导出时间:"+publishTime);
    			
    			//历史客流
    			int t1=3;
    			Map<String, String> param = initParam(null,beginTime, endTime);
    			List<Map<String, Object>> daycountlist = dayCountService.selectHistoryDayCountList(null,null,null,name,param.get("beginTime"), param.get("endTime"),12);
    			for (Map<String, Object> map2 : daycountlist) {
                    for (Map.Entry<String, Object> m : map2.entrySet()) {
                        sheet.getRow(t1).getCell(1).setCellValue(m.getKey());
    				    sheet.getRow(t1).getCell(2).setCellValue(Integer.parseInt(m.getValue().toString()));
    				    t1++;
                    }
                }
    //性别
    			Map<String, Object> sexInfo = sexCountService.selectContrastsInfo(name, beginTime, endTime);
    			int s1=30;
    			for (Object v : sexInfo.values()) {
    				   sheet.getRow(s1).getCell(2).setCellValue(Double.parseDouble(v.toString())/100.0);
    				   s1++;
    			}
    			//年龄
    			Map<String, Object> ageInfo = ageCountService.selectContrastsInfo(name, beginTime, endTime);
    			int s2=33;
    			for (Object v : ageInfo.values()) {
    				   sheet.getRow(s2).getCell(2).setCellValue(Double.parseDouble(v.toString())/100.0);
    				   s2++;
    			}

    6、保存文件

    // 保存文件的路径
    			String realPath = "/mnt/app/tomcat/webapps/uploadfile/";
    			if(null==name){
    				name="全部";
    			}
    			String newFileName = "report-" +name+"-"+ DateUtil.getAllTime()+ ".xlsx";
    			// 判断路径是否存在
    			File dir = new File(realPath);
    			if (!dir.exists()) {
    				dir.mkdirs();
    			}
    			//修改模板内容导出新模板
    			FileOutputStream out = new FileOutputStream(realPath+newFileName);
    			wb.write(out);
    			out.close();

    7、将文件路径返回给前端,直接给前端一个文件的url链接,让他自己location.href跳转就可以拿到文件了

    map.put("url", "/uploadfile/"+newFileName);

    或者也可以使用response返回

    //返回文件给前端
    FileUtil.downloadFiles(response, realPath+newFileName);

    
    
     public static void downloadFiles(HttpServletResponse response,
                String filePath) {
            response.setContentType("application/octet-stream");
            response.setCharacterEncoding("UTF-8");
            FileInputStream fs = null;
            BufferedInputStream buff = null;
            OutputStream myout = null;
    
            try {
                File file = new File(filePath.trim());
                if (file.exists()) {
                    String fileName = file.getName();
                    fs = new FileInputStream(file);
                    response.addHeader(
                            "Content-Disposition",
                            "attachment;filename="
                                    + URLEncoder.encode(fileName, "UTF-8"));
                    buff = new BufferedInputStream(fs);
                    byte[] b = new byte[1024];
                    long k = 0;
                    myout = response.getOutputStream();
                    while (k < file.length()) {
                        int j = buff.read(b, 0, 1024);
                        k += j;
                        myout.write(b, 0, j);
                    }
                    buff.close();
                } else {
                    PrintWriter os = response.getWriter();
                    os.write("文件不存在");
                    os.close();
                }
                if (myout != null) {
                    myout.flush();
                    myout.close();
                }
                if (fs != null) {
                    fs.close();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (myout != null) {
                    try {
                        myout.flush();
                        myout.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
        }

    8、导出后效果如下,而且手动在excel中修改数据,图表可以自动变换

     

     

     

    更多相关内容
  • 菜鸟网页模板复制工具,是一款复制网站模板的工具。菜鸟网页模板复制可以复制目前众多网站的模板,根据自定义的路径进行复制,可将JS脚本、图片、样式等内容完整的复制下来。当前工具模板为V2.0,后期将继续完善与...
  • 淘宝万能模板复制

    2011-09-07 21:55:49
    淘宝万能模板复制机(灵活随意复制任意淘宝网店页面代码,可自行编辑后自用。)
  • 秀米微信图文编辑器如何复制

    千次阅读 2021-06-28 08:18:04
    秀米编辑器是一款非常好用的图文编辑器,在这里用户能够享受到更好的文章排版功能,多个免费的模板供用户使用,超级方便,今天小编就来教大家如何将排好版的文章给复制出来。2.我们打开秀米编辑器的网页...

    原创秀米微信图文编辑器如何复制?

    编辑:小鑫 来源:PC下载网时间:2018-02-19 07:19:38

    秀米编辑器里面编辑好的文章排版怎么才能够复制到其他编辑器中?小编教大家如何复制秀米里面的内容。

    方法步骤

    1.秀米编辑器是一款非常好用的图文编辑器,在这里用户能够享受到更好的文章排版功能,多个免费的模板供用户使用,超级方便,今天小编就来教大家如何将排好版的文章给复制出来。

    9216d0ee6dd624bc249f2114b6751278.png

    2.我们打开秀米编辑器的网页,在里面我们点击图文消息排版助手,然后进入到编辑器里面。

    ac78f24ea8349c34ed1036011a68de2f.png

    3.进入到编辑器里面之后,在左侧就能够看到编辑器给我们提供的模板了,点击一下就会在右侧编辑区域生成一个一样的模板。

    baf8d98923fc662b36917b9e44b6233a.png

    4.我们在里面还能够找到多种不同的模板,建议大家都去注册一个秀米的账号,注册之后就能够获得更多的免费模板使用了。

    001b64fed9325be69e75ec5118d35631.png

    5.想要复制的话,也是十分简单,我们在编辑器的上面会看到有一个对号的标识,点击一下之后就会提示我们可以使用复制或者ctrl+c来进行复制,然后直接粘贴到想要的其他编辑器中即可。

    002c5797cc2a65a66325539e6373e4c9.png

    小编总结

    以上就是秀米编辑器复制编辑好的文章的教程了,小伙伴们赶紧去试试吧。应该比你直接在微信里面编辑要美观的多哦。

    END

    展开全文
  • 一、word文章保存首先,我们打开135编辑器,再将别人的公众号文章从浏览器打开,直接复制粘贴到...三、公众号模板排版当然,相比于套用别人的公众号模板,我们当然希望自己做出,属于自己的公众号模板,可是又不知道...

    97e1e857477324dc84b98e556e4d893f.png

    一、word文章保存

    首先,我们打开135编辑器,再将别人的公众号文章从浏览器打开,直接复制粘贴到word里保存。

    二、word文章导入

    接下来,我们在公众号编辑页面右侧图文工具箱中,找到导入文章工具,就可以选择从本地word导入,来将文章复制到公众号编辑页面,我们将文章内容替换成自己的就可以啦!

    27c7ad4834e749403ec2799e01c320ea.png

    三、公众号模板排版

    当然,相比于套用别人的公众号模板,我们当然希望自己做出,属于自己的公众号模板,可是又不知道该怎么自制公众号模板,这时就可以试试编辑器提供的公众号模板。

    05ca916b8c3e550ba6feb13dfd32b95e.png

    四、在哪找公众号模板

    这时,相信大家都会想到135编辑器,是的,作为一款微信编辑器,135编辑器当然也提供了大量,美观新颖的公众号模板!

    0bfd12026d541dd7dc18d3dffae89ddb.png

    打开135编辑器,就可以看到135编辑器的样式中心,在样式中心最左侧的导航栏,我们可以根据分类,来找到标题样式模板、正文样式模板、图文样式模板等等不同类型的样式模板。

    如果我们需要在文章中添加某一种风格的公众号模板,也可以根据上方的搜索栏直接检索关键词,根据关键词来快速找到需要的公众号模板样式。

    bd775158e12112fc56b864488dbde939.png

    在135编辑器的样式中心里,不论是简单的标题、正文、图文这样单独的公众号样式模板,还有成套的公众号套装模板,能满足大家的各类排版需求哦!

    这么一款好用的微信公众号模板编辑器,大家不来135编辑器官网体验一下吗?

    展开全文
  • EasyExcel 多模板填充数据并导出

    需求是根据两个模板导出excel的数据
    我的模板有两个sheet,第一个sheet0是纯list填充,第二个sheet1是map和list结合填充

     public void fillTemplate(String templateFileName,List list,HttpServletResponse response,ExcelWriter excelWriter) {
        //excel模板
        File file = new File(templateFileName);
        try (FileInputStream fileInputStream = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
    
          //通过poi复制出需要的sheet个数的模板
          XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
          workbook.setSheetName(0, "统计表");
    
          //通过循环复制模板生成sheet,从1开始是因为我要把 list.get(0)在后面填充到sheet1中
          for (int i = 1; i < list.size(); i++) {
            Map<String, Object> map = (Map<String, Object>) list.get(i);
            //复制sheet1模板,得到第i个sheet
            workbook.cloneSheet(1, map.get("name")+""+i);
          }
    
          Map<String, Object> map2 = (Map<String, Object>) list.get(0);
          String name = map2.get("name") + "" + 0;
          //给模板设置sheet1的名称为name
          workbook.setSheetName(1,name);
    
          //写到流里
          workbook.write(bos);
          byte[] bArray = bos.toByteArray();
          InputStream is = new ByteArrayInputStream(bArray);
          //输出文件路径
          excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(is).build();
    
          //sheet0的合并单元格策略map
          Map<String, List<RowRangeDto>> strategyMap = ExcelUtil.addMerStrategy(list);
          WriteSheet writeSheet = EasyExcel.writerSheet("统计表")
                  .registerWriteHandler(new BizMergeStrategy(strategyMap)).build();
          FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
          //sheet0填充数据
          excelWriter.fill(new FillWrapper("list", list), fillConfig, writeSheet);
    
          //sheet0后面的sheet循环填充数据
          for (int i = 0; i < list.size(); i++) {
            Map<String, Object> map = (Map<String, Object>) list.get(i);
    
            //MyHandler,填充时延续列表的单元格格式,否则只有第一列会延续模板的格式,具体方法,贴在后面链接
            WriteSheet writeSheet2 = EasyExcel.writerSheet(map.get("name")+""+i).registerWriteHandler(new MyHandler()).build();
            Map<String, Object> singleMap = new HashMap<>();
    
            singleMap.put("deptName",StringUtil.isNotEmpty(map.get("deptName"))?map.get("deptName"):"");
    
            excelWriter.fill(singleMap, writeSheet2);
            ArrayList<Map<String, Object>> mingpaiList = (ArrayList<Map<String, Object>>) map.get("mingpaiList");
            excelWriter.fill(new FillWrapper("mingpailist", mingpaiList), fillConfig, writeSheet2);
          }
          // 关闭流
          excelWriter.finish();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    

    sheet0模板
    sheet1模板
    实现效果
    在这里插入图片描述

    在这里插入图片描述
    终于写好了,撒花完结!在这里插入图片描述
    (___/)
    (⸝⸝•ᴗ•⸝⸝ )
    ど   づ
    しーJ

    new MyHandler()
    BizMergeStrategy

    展开全文
  • java poi实现病历数据的word导出(包括word模板使用复制表格、复制行、插入图片的使用) 1.实现的效果 实现病人基本信息、多条病历数据、多项检查项图片的动态插入(网络图片) [外链图片转存失败(img-xiVmRGdl...
  • word使用dot模板以spring word 模板为例

    千次阅读 2021-07-14 20:56:12
    word使用dot模板以spring word 模板为例 觉得有用的话,欢迎一起讨论相互学习~ 首先从spring官网中下载word模板, 这个dot文件不能直接打开,本质是word2000以前的遗留产物,在新版word特别是word2020中,新建一个...
  • 使用EasyExcel导出数据到模板

    千次阅读 2021-04-09 17:34:16
    二、使用步骤1.导入依赖2.模板介绍3.应用结果总结 前言 ​ 最近在做项目的时候用到了阿里的EasyExcel,用它来将数据导出到一个固定excel模板之中,主要是为了写一个送货单,其中有list的数据导出。 ​ 本人目前在...
  • C++模板简介与使用

    万次阅读 多人点赞 2018-06-27 10:55:13
    模板简介与使用扯一扯模板以及简单的运用1.模板概述利用 C++ 模板,您可以定义可对不同类型的信息运行的一系列函数或类。 Microsoft C++ 模板的实现基于 ISO/ANSI C++ 标准。在导致重复多个类型的同一代码的情况下应...
  • python复制excel模板并保留表格样式

    千次阅读 2021-09-10 09:31:38
    需求:按照模板生成excel报表。 本地有一个模板Excel表,是xlsx格式。...结果:使用openpyxl读取模板表,再保存,可以完全保留样式复制模板excel,而且支持xlsx. import openpyxl df=openpyxl.load_workbook
  • 如题,我已经做出了,复制指定table,然后粘贴,但是我想复制一页的内容,模板中除了table外,还有标题,我想一起复制,然后粘贴到下一页?
  • 完整复制模板制作-发放桌面一、完整复制模板制作 一、完整复制模板制作 左侧虚拟机模板-windows10-点击按模板部署虚拟机 配置模式为精简,网卡选择VLAN61的端口组 去掉勾选 “生成系统初始密码”,点击下一步 勾选 ...
  • 【latex】2 使用Aurora与在word中编写伪代码 【latex】3 告别 word,使用 latex 编写论文常用操作 内容描述 从这里开始,彻底放弃了 word。我们认为,word能完成的大多数操作,latex都能完成。 这里将根据论文的...
  • java POI复制模板excel

    千次阅读 2018-04-29 17:39:39
    直接使用java poi生成excel报表是件麻烦的事情,因为java poi直接生成需要对excel报表的格式进行很多设计,这样会增加不少代码工作量。实际开发中一般采用excel模板,通过poi将数据填入模板中生成新的报表。  在...
  • ACM期刊LaTex模板使用

    千次阅读 2021-01-28 10:33:06
    1、下载LaTex模板 下载网址:https://www.acm.org/publications/taps/latex-best-practices 下载的文件夹里含有多个sample,一般就是acmsmall: All journals use acmsmall with the following exceptions: o ...
  • zabbix 5.0 使用默认模板配置MySQL监控

    千次阅读 2020-12-31 15:10:55
    三、复制模板 四、修改模板中的默认路径 五、重启zabbix客户端 六、验证数据 根据zabbix5.0自带的mysql模版配置说明 一、首先创建帐号 创建数据库帐号 CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456';...
  • bootstrap的使用方法及其基本模板

    千次阅读 2019-04-13 11:34:53
    什么是Bootstrap Bootstrap来自 Twitter,是目前很受欢迎的前端框架。...把模板复制到想要放置的位置 例如:标签页的模板 代码复制到想要放置的地方(我这里是放在了body里)。 效果图: 3.修改样式,改成自己想要的
  • 安装动态图形模板时,将其复制到 Premiere Pro 的本地模板文件夹,即可在任何 Premiere Pro 项目中进行使用。也可通过“基本图形”面板使用。在本篇文章中,我们介绍的是如何在 Premiere Pro 中使用动态图...
  • ![]... Java使用POI模板导出Excel,模板中现在的明细行是5行,现在数据超过5行,怎么复制明细行的格式进行增行
  • Eclipse 模板使用

    千次阅读 2018-10-02 15:43:33
    java editor template Eclipse中的快速Java代码模板使用 &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相信大家都用过Eclipse的缩写代码提示功能,如...
  • C++——模板(超详细的模板解析)

    千次阅读 2022-03-28 17:29:35
    超详细的C++模板知识列表,持续维护。
  • idea如何创建模板文件。希望能对你的开发有所帮助,希望大家多多支持哦。
  • 如何复制PPT的模板?

    千次阅读 2016-05-24 14:10:52
     很多同学在制作ppt的时候,会找一些模板,前几天在做ppt的时候,看到一个很不错的ppt模板,随即Ctrl+C了一下,但是Ctrl=V后复制过来的内容,仍然是原本的ppt底色,于是觉的很困惑,百思不得其解,后来认真思考了...
  • EasyExcel使用模板填充数据导出遇到的坑 1.最近需求涉及excel的导出,所以选择用阿里的EasyExcel框架来使用是比较方便的,这个框架封装了许多方法来供我们使用,比传统POI简单许多 2.因为就是需求涉及所导出的excel表的...
  • IEEE模板的latex使用

    万次阅读 多人点赞 2018-07-02 22:06:24
    IEEE模板下载 下载IEEE的conference和transaction的latex模板文件: conference:https://www.ieee.org/conferences/publishing/templates.html transaction模板:...
  • 其次,即便复制的是一个基础模板代码,也会面临手动 copy 的低效问题; 还有,一般如果同事之间用一个代码模板库,需要将之 git clone 至本地磁盘,一般手动 copy 很少会 git pull 代码,这样就会造成代码模块版本...
  • Django公共模板使用

    千次阅读 2020-10-09 22:12:06
    引用:是整个html文件代码复制。 继承:只是继承其中一段代码的样式。 引用 这个是 base.html中引用 footer.html文件中的代码 <div class="panel-footer"> {% include 'footer.html' %} </div> 这...
  • OUTLOOK的[邮件模板]的使用方法

    万次阅读 2017-01-04 13:14:20
    OUTLOOK的[邮件模板]的使用方法 如果有一封邮件,日常的工作需要经常的将这封邮件发给不同的客户,你会想到什么方法来快速的建立这封邮件,然后发给客户呢? P 方法一、将邮件标题、内容复制为文本文件,需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 288,975
精华内容 115,590
关键字:

怎么把模板复制使用