• 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需要指定密码】====

  • 相关阅读:
    Flink 实时数仓(一)【实时数仓&离线数仓对比】
    SpringBoot项目创建及其核心设计思想
    【算法学习】搜索算法之深度优先搜索
    如何查找遥感卫星相关参数
    獲取Kinect的三維空間座標
    删除的通话记录也能找回!如何iPhone很早以前的通话记录
    使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单
    VMware ubuntu空间越用越大
    程序员的数学课开篇词 数学,编程能力的营养根基
    nacos2-配置中心
  • 原文地址:https://blog.csdn.net/qq_43143025/article/details/126097430