基于poi生成excel模板并生成下拉选择框

这篇具有很好参考价值的文章主要介绍了基于poi生成excel模板并生成下拉选择框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接上代码(有注释)

public void downloadImportTemplate(HttpServletResponse response) {
        try {
            ServletOutputStream outputStream = response.getOutputStream();
            //创建工作表
            XSSFWorkbook workbook = new XSSFWorkbook();
            //标题行的标题
            List<String> requireRowNameList = Collections.singletonList("订单编号");
            List<String> optionalRowNameList = Arrays.asList("用户编号");
            String fileName = "导入模板" + DateUtils.formatDateTime();
            XSSFSheet sheet = workbook.createSheet("导入模板");
            XSSFRow row = null;
            XSSFCell cell = null;

            //----------------标题样式---------------------
            XSSFCellStyle titleStyle = workbook.createCellStyle();//标题样式
            titleStyle.setAlignment(HorizontalAlignment.CENTER);
            titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);
            Font titleFont = workbook.createFont();
            titleFont.setFontHeightInPoints((short) 22);
            titleFont.setFontName("微软雅黑");
            titleFont.setBold(true);
            titleStyle.setFont(titleFont);

            //----------------列样式2 必填字段显红色---------------------
            XSSFCellStyle cellStyle2 = workbook.createCellStyle();
            cellStyle2.setAlignment(HorizontalAlignment.CENTER);
            cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);
            Font cellFont2 = workbook.createFont();
            cellFont2.setFontName("微软雅黑");
            cellFont2.setBold(true);
            cellFont2.setColor((short) 0xa); // 红色
            cellStyle2.setFont(cellFont2);

            //----------------列样式3 非必填字段显黑色---------------------
            XSSFCellStyle cellStyle3 = workbook.createCellStyle();
            cellStyle3.setAlignment(HorizontalAlignment.CENTER);
            cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);
            Font cellFont3 = workbook.createFont();
            cellFont3.setFontName("微软雅黑");
            cellFont3.setBold(true);
            cellStyle3.setFont(cellFont3 );

            //------------------- 创建第一行(字段名) --------------------
            row = sheet.createRow(0);
            sheet.setDefaultColumnWidth(20);
            sheet.autoSizeColumn(1);
            sheet.autoSizeColumn(1, true);
            int i = 0;
            for (; i < requireRowNameList.size(); i++) {
                cell = row.createCell(i);
                //必填列红色显示
                cell.setCellStyle(cellStyle2);
                cell.setCellValue(requireRowNameList.get(i));
            }
            int j = 0;
            for (; j < optionalRowNameList.size(); i++, j++) {
                cell = row.createCell(i);
                //非必填列黑色显示
                cell.setCellStyle(cellStyle3);
                cell.setCellValue(optionalRowNameList.get(j));
            }
            cell = row.createCell(i);
            //非必填列黑色显示
            cell.setCellStyle(cellStyle3);
            cell.setCellValue("是否通知客户");

            //--------------------设置下拉选择框的代码-----------------------------
            //选择框可选值
            String[] datas = new String[]{"是", "否"};
            //设置需要生成下拉列表的表格范围,1代表从第二行开始,30000代表一直到第三万零一行,第i+1列开始,到第i+1列;
            CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 30000, i, i);
            //生成下拉框内容
            DataValidationHelper dvHelper = sheet.getDataValidationHelper();
            DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(datas);
            DataValidation validation = dvHelper.createValidation(dvConstraint, cellRangeAddressList);
            //设置错误信息提示
            validation.setShowErrorBox(true);
            //对sheet页生效
            sheet.addValidationData(validation);
			//------------------------------------------------
			
            response.setContentType("application/binary;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
            FileUtils.setAttachmentResponseHeader(response, fileName);
            workbook.write(outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            log.error("获取导入模板失败e={}", e.getMessage(), e);
        }
    }
给生成的excel某系列设置时间格式
			Workbook workbook = new XSSFWorkbook();
			 Sheet sheet = workbook.createSheet("测试sheet");
            // 设置excel表第三第四列的时间格式
            CellStyle dateTimeStyle = workbook.createCellStyle();
            CreationHelper createHelper = workbook.getCreationHelper();
            dateTimeStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy/mm/dd hh:mm:ss"));
            sheet.setDefaultColumnStyle(2, dateTimeStyle);//给excel第三列设置时间格式
            sheet.setDefaultColumnStyle(3, dateTimeStyle);

基于poi生成excel模板并生成下拉选择框,java,excel文章来源地址https://www.toymoban.com/news/detail-666096.html

到了这里,关于基于poi生成excel模板并生成下拉选择框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java调用poi根据模板生成ppt

    吐槽:像这种需求半年碰不到一个 O.o 可以多去poi官网翻一下官方文档虽然很难理解但有用  所有代码基于个人习惯编写,懒得贴图了相信兄弟们的理解能力,有问题可以留言我尽量解决。 本文所有代码生成都基于pptx文件编写,可根据具体业务修改代码 1.打开模板文件 2.创建

    2024年02月21日
    浏览(49)
  • java中使用POI生成Excel并导出

    注:本文章中代码均为本地Demo版本,若后续代码更新将不会更新文章 根据从数据库查询出的数据,将其写入excel表并导出 我的想法是通过在实体属性上写自定义注解的方式去完成。因为我们在代码中可以通过反射的方式去获取实体类中全部的注解及属性名称等等。我们可以

    2024年02月16日
    浏览(45)
  • java poi生成excel折线图、柱状图、饼图、动态列表

    实现效果   测试类 实体类  工具类 完整代码地址:https://gitee.com/Szw99/create-excel.git

    2024年02月13日
    浏览(39)
  • Java的POI-word模板生成目录自动更新--完美解决

    目录问题: 解决word模板目录在第一次打开不更新就不显示目录问题的原因:之前是通过动态替换域代码toc的形式,生成了一段域代码放置在Word的目录行,打开的时候无法直接触发渲染和更新。 方案:通过插入-文档组件-域组件-目录和索引,将当前的模板的目录直接生成到文

    2024年02月11日
    浏览(36)
  • Java使用poi-tl生成word模板-动态数据列表

    Java使用poi-tl生成word模板-动态数据列表 第一步,添加poi-tl的依赖 第二步,准备word模板文件             模板中文本信息可以用    {{  }}   标签指定             例如在word文档中写入:{{var}} //会将word文档中的对位置的标签替换为map中的数据             模板

    2024年02月14日
    浏览(48)
  • Java 导出Excel表格生成下拉框-EasyExcel

     

    2024年02月11日
    浏览(50)
  • Apache Poi 实现Excel多级联动下拉框

    由于最近做的功能,需要将接口返回的数据列表,输出到excel中,以供后续导入,且网上现有的封装,使用起来都较为麻烦,故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格,存储下拉数据 创建名称管理器 使用indirect表达式进行联动 添加

    2024年02月11日
    浏览(35)
  • 【193】Java8调用POI 5.2.5生成带图片的Excel文件

    本文假定 Excel 文件中保存的是员工数据,并且数据中带有员工的头像。代码支持的图片格式有png、bmp、jpg、gif。但是这里需要注意,有些网站上下载的图片虽然后缀名是 jpg,但是文件二进制内容的格式是 WebP 的。Java8 目前官方api不支持 WebP ,本文不涉及webp相关话题,本文代

    2024年02月04日
    浏览(35)
  • Java 基于Apache POI实现Excel读写操作

    Win10 Java JDK1.8 pom.xml配置 代码实现 exmple.xml 补充说明 创建工作簿 POI创建工作簿的API有3种: HSSFWorkbook : 此API用于操作Excel 2003及之前的版本(文件扩展名 .xls ),优点是导出速度快,缺点是导出的行数有局限性,最多为65535行,超出65536条后系统就会报错。对内存消耗比较大,容

    2024年02月15日
    浏览(38)
  • 解决POI的SXSSFSheet 创建excel下拉框,下拉框内容过多时不显示的问题

    1. 复现 :使用POI导出带下拉框的excel文件,如果下拉框内容过多,下拉框变为了空  解决思路 : 导出时创建隐藏的sheet,下拉框的取值从隐藏的sheet中获取,下拉框显示正常 记录:因为网上的一些代码用的都不是SXSSFSheet创建 所以拿过来都需要改,所以我把改好的代码贴上来

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包