002-poi-excel-导出设置单元格数据校验规则

一、数据验证概述

推荐以下操作在2007之后操作

1.1、查看excel的数据验证

1、进入

  

2、设置规则

      

通过验证条件允许,可以看到是每个单元格默认只成立一种条件

1.2、POI代码开发-数据验证

1.2.1、两个数之间

    public void excelRuleNumberBetween(Sheet sheet, int min, int max, int firstRow, int lastRow, int firstCol, int lastCol){
        DataValidationHelper helper = sheet.getDataValidationHelper();
        CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);//设置行列范围
        //设置数据
        DataValidationConstraint constraint = helper.createIntegerConstraint(DataValidationConstraint.OperatorType.BETWEEN,
                String.valueOf(min),String.valueOf(max));
        DataValidation dataValidation = helper.createValidation(constraint, addressList);
        dataValidation.createErrorBox("输入值类型或大小有误", String.format("请输入%s~%s之间的数值",min,max));
        //处理Excel兼容性问题
        if(dataValidation instanceof XSSFDataValidation) {
            dataValidation.setSuppressDropDownArrow(true);
            dataValidation.setShowErrorBox(true);
        }else {
            dataValidation.setSuppressDropDownArrow(false);
        }
        sheet.addValidationData(dataValidation);
    }

1.2.2、选择【序列】

    public void excelRuleSelect(Sheet sheet, String[] rule, int firstRow, int lastRow, int firstCol, int lastCol) {
        DataValidationHelper helper = sheet.getDataValidationHelper();
        CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
        DataValidationConstraint constraint = helper.createExplicitListConstraint(rule);
        DataValidation dataValidation = helper.createValidation(constraint, addressList);
        dataValidation.createErrorBox("输入有误", "请选择下拉参数");
        if (dataValidation instanceof XSSFDataValidation) {
            dataValidation.setSuppressDropDownArrow(true);
            dataValidation.setShowErrorBox(true);
        } else {
            dataValidation.setSuppressDropDownArrow(false);
        }

        sheet.addValidationData(dataValidation);
    }

1.2.3、列唯一

  使用excel设置

    

  POI设置

    public void excelRuleUniqueue(Sheet sheet, int firstRow, int lastRow, int firstCol, int lastCol) {
        Row row = sheet.getRow(0);
        Cell cell = row.getCell(firstCol);
        String r = ((XSSFCell) cell).getCTCell().getR();
        r = r.substring(0, 1);
        DataValidationHelper helper = sheet.getDataValidationHelper();
        CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);
        //唯一
        DataValidationConstraint constraint = helper.createCustomConstraint(MessageFormat.format("COUNTIF({0}:{0},{0}2)=1",r));
        DataValidation dataValidation = helper.createValidation(constraint, addressList);
        dataValidation.createErrorBox("错误:", "赋值属性列不允许重复");
        dataValidation.setShowErrorBox(true);
        dataValidation.setEmptyCellAllowed(true);
        dataValidation.setSuppressDropDownArrow(true);
        dataValidation.setShowPromptBox(true);
        dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);

        sheet.addValidationData(dataValidation);
    }

二、其他

2.1、列筛选

查看excel实现

  

POI代码  

Sheet sheetCreat = wbCreat.createSheet(sheet.getSheetName());
CellRangeAddress c = CellRangeAddress.valueOf(CELL_RANGE_ADDRESS);
sheetCreat.setAutoFilter(c);

原文地址:https://www.cnblogs.com/bjlhx/p/11240696.html

时间: 2024-10-29 19:06:58

002-poi-excel-导出设置单元格数据校验规则的相关文章

使用openpyxl创建excel并设置单元格样式

wb = Workbook() ws = wb.create_sheet('月度排名汇总', 0) # 合并单元格 ws.merge_cells('b2:b3') ws.merge_cells('c2:c3') ws.merge_cells('d2:d3') ws.merge_cells('e2:g2') ws.merge_cells('h2:j2') # 设置单元格文本内容 ws['b2'].value = '负责人' ws['c2'].value = '部门/小组' ws['d2'].val

js导出数据到excel,设置单元格数据格式为文本;数字000101;变成了101

方法: 问题:数字000101:导出excel变成了101::::科学计数法也是这样 解决方法: 1:  xlSheet.Cells(num,8).NumberFormatLocal = "@";//设置导出为文本 2: xlSheet.Cells(num, 9).Value = "'"+agencyname;  //你可以在导出的时候给数据前加一个英文半角的'逗号 // 将数据导出到excel表格function leadingOut(stampGrid) {  

thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

1 到这里下载classes里面的文件 https://github.com/PHPOffice/PHPExcel 2 然后放到 thinkphp的vendor 新建一个文件夹 Phpexcel  然后把文件放进去 3 在封装一个函数 function exportExcel($data, $savefile = null, $title = null, $sheetname = 'sheet1') { vendor('Phpexcel.PHPExcel'); //从PHPMailer目录导cl

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

Excel导出时设置单元格的格式为文本

问题: 用excel导出数据时,如何设置单元格格式的数字分类为"文本",默认是"常规"? 比如:导出编码0235A089,在Excel查看默认显示的是没有前面的0. 解决方法: 用设置单元格的 NumberFormatLocal 属性即可: xlapp.Selection.NumberFormatLocal = "@" Excel导出时设置单元格的格式为文本,布布扣,bubuko.com

【web开发】☆★之利用POI操作Excel表格系列教程【8】设置单元格对其方式

[web开发]☆★之利用POI操作Excel表格系列教程[8]设置单元格对其方式 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HS

Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能让用户准备好数据,离开Excel,或生成数据,要重新打开某文件才能获取到数据结果. 在VSTO中,用户随时在Excel最强UI前端中生产数据,同时也在获得数据结果后,无缝地利用Excel强大的数据处理能力进行数据的再次加工如Vlookup一些其他信息进来,做个图表展示等等. VSTO程序在用户全程数

20191012——POI设置单元格自动行高(思路)

在经过Jxls或者POI导出数据至excel中后,发现有的单元格内容太多,既没有自动换行,也没有自动增大行高.那如何通过Java代码来实现呢?请看下面步骤: (一)首先,将excel设置为最合适的行高,通过CTRow对象的setCustomHeight(false)函数实现,具体的代码如下: XSSFWorkbook workbook = new XSSFWorkbook(文件路径或者文件流); XSSFSheet sheet = workbook.getSheet(sheetIndex); X

不按模板导出excel并合并单元格

java代码: /** * 下载清单 * @param response * @param purchaseListQueryVo * @param request */ @RequestMapping(value = "/downloadList", method = RequestMethod.POST) public ResponseEntity<byte[]> downloadList(HttpServletResponse response, PurchaseLi