• Java使用POI操作Excel设置单元格的格式为数值类型


    其中contextstyle.setDataFormat(df.getFormat("0_ "));要特别注意"0_ ",下划线后面有一个空格!!!,缺少空格则不会导出为数值类型。

    注意空格!!!注意空格!!!注意空格!!!

    1. /**
    2. * 设置Excel单元格为数值类型便于公式运算
    3. *
    4. * @param workbook
    5. * @param contextstyle
    6. * @param cell
    7. * @param data
    8. */
    9. public static void setNumberFormat(SXSSFWorkbook workbook, CellStyle contextstyle, SXSSFCell cell,Object data){
    10. boolean isNum = false;//data是否为数值型
    11. boolean isInteger=false;//data是否为整数
    12. boolean isPercent=false;//data是否为百分数
    13. if (data != null || "".equals(data)) {
    14. //判断data是否为数值型
    15. isNum = data.toString().matches("^(-?\\d+)(\\.\\d+)?$");
    16. //判断data是否为整数(小数部分是否为0)
    17. isInteger=data.toString().matches("^[-\\+]?[\\d]*$");
    18. //判断data是否为百分数(是否包含“%”)
    19. isPercent=data.toString().contains("%");
    20. }
    21. //如果单元格内容是数值类型,设置data的类型为数值类型
    22. if (isNum && !isPercent) {
    23. // 此处设置数据格式
    24. DataFormat df = workbook.createDataFormat();
    25. if (isInteger) {
    26. contextstyle.setDataFormat(df.getFormat("0_ "));//数据格式只显示整数
    27. }else{
    28. contextstyle.setDataFormat(df.getFormat("0.00_ "));//保留两位小数点
    29. }
    30. // 设置单元格格式
    31. cell.setCellStyle(contextstyle);
    32. // 设置单元格内容为double类型
    33. cell.setCellValue(Double.parseDouble(data.toString()));
    34. } else {
    35. if (data != null && !"".equals(data)) {
    36. cell.setCellStyle(contextstyle);
    37. // 设置单元格内容为字符型
    38. cell.setCellValue(data.toString());
    39. }
    40. }
    41. }

    ============================设置合并单元格================================

    1. //合并单元格
    2. CellRangeAddress cellRange = new CellRangeAddress(deptRowIndex, deptRowEndIndex-1, (short) 1, (short) 1);
    3. sheet.addMergedRegion(cellRange);

    ================设置合并单元格的边框======================================

    1. RegionUtil.setBorderTop(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
    2. RegionUtil.setBorderLeft(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
    3. RegionUtil.setBorderRight(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
    4. RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);

    =====对Excel进行加密==【打开Excel需要指定密码】====

  • 相关阅读:
    敏捷实践之单元测试及最佳实践
    基于HMM的拼音输入法
    李沐67_自注意力——自学笔记
    71 内网安全-域横向网络&传输&应用层隧道技术
    集合collection listmapset
    iview form组件,当formItem嵌套使用时,formData会是多层结构的json数据,导致async-validator验证插件失效
    分布式文件系统和对象存储魔力象限,右上角都有谁?
    java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码
    SpringMVC之定义注解强势来袭!!!
    手把手入门Node框架Egg.js
  • 原文地址:https://blog.csdn.net/qq_43143025/article/details/126097430