`
这些年
  • 浏览: 403174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

poi处理公式

    博客分类:
  • poi
阅读更多

 

POI读取带有公式的Excel单元格

 

分类:JAVA2012-01-11 13:31818人阅读评论(0)收藏举报

 

项目中需要使用Excel导入数据,读取Excel单元格的方法如下:

 

[java]view plaincopyprint?

 

1.  private static String getStringCellValue(Cell cell) {// 获取单元格数据内容为字符串类型的数据

 

2.  String strCell = "";

 

3.  if (cell == null) {

 

4.  return "";

 

5.  }

 

6.  switch (cell.getCellType()) {

 

7.  case Cell.CELL_TYPE_FORMULA:

 

8.  // cell.getCellFormula();

 

9.  try {

 

10./*

 

11.* 此处判断使用公式生成的字符串有问题,因为HSSFDateUtil.isCellDateFormatted(cell)判断过程中cell

 

12.* .getNumericCellValue();方法会抛出java.lang.NumberFormatException异常

 

13.*/

 

14.if (HSSFDateUtil.isCellDateFormatted(cell)) {

 

15.Date date = cell.getDateCellValue();

 

16.strCell = (date.getYear() + 1900) + "-" + (date.getMonth() + 1) +"-" + date.getDate();

 

17.break;

 

18.} else {

 

19.strCell = String.valueOf(cell.getNumericCellValue());

 

20.}

 

21.} catch (IllegalStateException e) {

 

22.strCell = String.valueOf(cell.getRichStringCellValue());

 

23.}

 

24.break;

 

25.case Cell.CELL_TYPE_STRING:

 

26.strCell = cell.getStringCellValue();

 

27.break;

 

28.case Cell.CELL_TYPE_NUMERIC:

 

29.if (HSSFDateUtil.isCellDateFormatted(cell)) {

 

30.strCell = getDateCellValue(cell);

 

31.break;

 

32.} else {

 

33.strCell = String.valueOf(cell.getNumericCellValue());

 

34.break;

 

35.}

 

36.case Cell.CELL_TYPE_BOOLEAN:

 

37.strCell = String.valueOf(cell.getBooleanCellValue());

 

38.break;

 

39.case Cell.CELL_TYPE_BLANK:

 

40.strCell = "";

 

41.break;

 

42.default:

 

43.strCell = "";

 

44.break;

 

45.}

 

46.return strCell;

 

47.}

 

private static String getStringCellValue(Cell cell) {// 获取单元格数据内容为字符串类型的数据

 

        String strCell = "";

 

        if (cell == null) {

 

            return "";

 

        }

 

        switch (cell.getCellType()) {

 

        case Cell.CELL_TYPE_FORMULA:

 

            // cell.getCellFormula();

 

            try {

 

            /*

 

             * 此处判断使用公式生成的字符串有问题,因为HSSFDateUtil.isCellDateFormatted(cell)判断过程中cell

 

             * .getNumericCellValue();方法会抛出java.lang.NumberFormatException异常

 

             */

 

             if (HSSFDateUtil.isCellDateFormatted(cell)) {

 

               Date date = cell.getDateCellValue();

 

               strCell = (date.getYear() + 1900) + "-" + (date.getMonth() + 1) +"-" + date.getDate();

 

               break;

 

             } else {

 

               strCell = String.valueOf(cell.getNumericCellValue());

 

             }

 

             } catch (IllegalStateException e) {

 

               strCell = String.valueOf(cell.getRichStringCellValue());

 

             }

 

            break;

 

        case Cell.CELL_TYPE_STRING:

 

            strCell = cell.getStringCellValue();

 

            break;

 

        case Cell.CELL_TYPE_NUMERIC:

 

            if (HSSFDateUtil.isCellDateFormatted(cell)) {

 

                strCell = getDateCellValue(cell);

 

                break;

 

            } else {

 

                strCell = String.valueOf(cell.getNumericCellValue());

 

                break;

 

            }

 

        case Cell.CELL_TYPE_BOOLEAN:

 

            strCell = String.valueOf(cell.getBooleanCellValue());

 

            break;

 

        case Cell.CELL_TYPE_BLANK:

 

            strCell = "";

 

            break;

 

        default:

 

            strCell = "";

 

            break;

 

        }

 

        return strCell;

 

    }

 

这个方法在导入没有公式的Excel时没有问题,今天遇到含有公式的Excel,如图:

 


报错信息如下:

 

 

 

经调试发现HSSFDateUtil.isCellDateFormatted(cell)判断过程中会执行cell.getNumericCellValue();方法,字符串“201201FSSH300466”在转换成数字的时候出错了,在网上搜了一下,大多数的解决方法是:

 

[java]view plaincopyprint?

 

1.  case HSSFCell.CELL_TYPE_FORMULA:

 

2.  try {

 

3.  value = String.valueOf(cell.getNumericCellValue());

 

4.  } catch (IllegalStateException e) {

 

5.  value = String.valueOf(cell.getRichStringCellValue());

 

6.  }

 

7.  break;

 

case HSSFCell.CELL_TYPE_FORMULA:

 

 try {

 

     value = String.valueOf(cell.getNumericCellValue());

 

} catch (IllegalStateException e) {

 

     value = String.valueOf(cell.getRichStringCellValue());

 

}

 

break;

 

经测试发现,在执行cell.getNumericCellValue()方法时还是抛出NumberFormatException异常,于是将try/catch中的方法互换:

 

[java]view plaincopyprint?

 

1.  case HSSFCell.CELL_TYPE_FORMULA:

 

2.  try {

 

3.  strCell = String.valueOf(cell.getStringCellValue());

 

4.  } catch (IllegalStateException e) {

 

5.  strCell = String.valueOf(cell.getNumericCellValue());

 

6.  }

 

7.  break;

 

case HSSFCell.CELL_TYPE_FORMULA:

 

try {

 

       strCell = String.valueOf(cell.getStringCellValue());

 

} catch (IllegalStateException e) {

 

       strCell = String.valueOf(cell.getNumericCellValue());

 

}

 

break;

 

这样对于字符串cell.getStringCellValue()方法即可取得其值,如果公式生成的是数值,使用cell.getStringCellValue()方法会抛出IllegalStateException异常,在异常处理中使用cell.getNumericCellValue();即可。

 

 

 

分享到:
评论

相关推荐

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    平原型生活垃圾填埋场扩容措施研究及应用_刘志刚.pdf

    跨模型迁移指南:将OpenAI项目快速适配DeepSeekAPI.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    智能推荐系统实战:DeepSeekAPI在电商场景的个性化排序应用.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    成本控制秘籍:DeepSeekAPI计费机制与优化方案全解.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    Wallpaper Engine 壁纸一键提取

    Wallpaper Engine 是一款广受欢迎的动态壁纸软件,允许用户将各种动态、交互式壁纸应用到桌面上。其丰富的创意工坊内容让用户可以轻松下载和分享个性化的壁纸。而“一键提取”功能则是 Wallpaper Engine 中一个非常实用的工具,能够帮助用户快速提取和保存壁纸资源,方便后续使用或分享。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    本地部署DeepSeek模型:API调用与自有算力结合的混合架构设计.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    这是一份非常有意义的实习报告

    这是一份非常有意义的实习报告

    用Python玩转DeepSeek:代码生成接口的10个实战案例.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    爱华AIWA HS-J9磁带随身听维修服务手册 说明书电路原理图PCB图

    从ChatGPT到DeepSeek:API迁移指南与参数映射对照表.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    房屋租赁合同[示范文本].doc

    房屋租赁合同[示范文本].doc

    智能体开发:将DeepSeekAPI集成到知识库系统的全流程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    单片机 入门学习视频教程 自学资料

    单片机 入门学习视频教程 自学资料

    模型定制化实战:基于DeepSeek的行业术语微调教程.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    5个提升DeepSeekAPI生成质量的调参技巧,开发者必看!.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    参数调优手册:temperature和top_p对输出结果的影响实验.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    auto_gptq-0.5.1.tar.gz

    auto_gptq-0.5.1.tar.gz

    贪心算法7日速成:LeetCode经典题型+华为机考真题.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    结构体 struct关键字用来定义结构体

    结构体 struct关键字用来定义结构体

Global site tag (gtag.js) - Google Analytics