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

Poi处理Excel时公式不能更新的问题

 
阅读更多
使用Poi处理Excel时,发现如果使用Poi编辑了某个单元格A,另一个单元格B是公式并且依赖于这个单元格A,则必须打开Excel,使单元格A获得焦点,然后再移开焦点才能使公式有效。

     解决方法是,Poi中提供了org.apache.poi.ss.usermodel.FormulaEvaluator这个接口,实现对公式的更新。其中HSSFFormulaEvaluator, XSSFFormulaEvaluator 实现了这个接口。通过构造方法可以得到一个HSSFFormulaEvaluator的实例。

[java] view plaincopyprint?

    HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb); 

      FormulaEvaluator提供了evaluateFormulaCell(Cell cell)方法,计算公式保存结果,但不改变公式。而evaluateInCell(Cell cell) 方法是计算公式,并将原公式替换为计算结果,也就是说该单元格的类型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERIC。HSSFFormulaEvaluator提供了静态方法evaluateAllFormulaCells(HSSFWorkbook wb) ,计算一个Excel文件的所有公式,用起来很方便。下面例子是提供公式更新的一个方法,传入Workbook,Sheet和行下标row,然后更新相应行的所有公式。

[java] view plaincopyprint?

    private static void updateFormula(Workbook wb,Sheet s,int row){ 
            Row r=s.getRow(row); 
            Cell c=null; 
            FormulaEcaluator eval=null; 
            if(wb instanceof HSSFWorkbook) 
                eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb); 
            else if(wb instanceof XSSFWorkbook) 
                eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb); 
            for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){ 
                c=r.getCell(i); 
                if(c.getCellType()==Cell.CELL_TYPE_FORMULA) 
                    eval.evaluateFormulaCell(c); 
            } 
        } 
分享到:
评论

相关推荐

    poi excel 模板读取并导出带公式的excel文档

    利用Apache POI库能够实现这一功能,即可以通过Java程序操作Excel文件,包括读取、写入、以及处理Excel中的公式。 #### 二、关键技术点 1. **POI库简介**: - Apache POI是Apache软件基金会的Jakarta项目中的一个...

    excel poi工具类 导入 导出 合并单元格 计算公式

    这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...

    java poi处理excel数据

    7. **异常处理**:在处理Excel文件时,可能出现文件不存在、格式不正确、内存溢出等问题,需要适当地捕获并处理异常。 通过以上知识点的学习和实践,你将能够熟练地利用Java POI进行Excel数据的处理,无论是数据...

    POI处理Excel文件.zip

    在使用Apache POI处理Excel 2007的XML文件时,有以下关键概念: 1. **XSSFWorkbook**:这是POI中用于表示.xlsx文件的工作簿对象。通过这个对象,我们可以创建、读取和修改工作簿中的内容。 2. **SXSSF (Streaming ...

    POI处理excel

    Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,包括Excel(XLS和XLSX)。在Java开发环境中,POI为开发者提供了一种高效且灵活的方式来读取、写入以及修改Excel电子表格。在本文中,我们将...

    java_poi导入excel通用工具类V0915

    4. **处理带有公式的Excel字段**:20170915的更新解决了不能导入含有公式字段的Excel问题。这意味着工具类现在可以正确解析包含计算结果的单元格,无论这些结果是公式计算得出还是手动输入的。 使用Java POI库,...

    poi读写excel+poi总结

    Apache POI 提供了强大的功能,能够处理复杂的Excel操作,如公式计算、图表创建、数据验证等。然而,由于Excel文件的复杂性,处理大型文件可能会消耗大量内存,因此在实际使用中需要注意性能优化,如分批读写、合理...

    利用POI读取excel写入到word

    在IT行业中,Apache POI是一个广泛使用的开源库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,...

    Poi_Excel.zip_JAVA poi对excel文档处理_milllcb_sortkqh

    4. **公式处理**:POI支持读取和写入Excel公式,但需要理解Excel的公式语法。 5. **数据流处理**:使用SXSSF API可以处理大量数据,它基于滑动窗口模型,只保存最近的数据在内存中。 总的来说,这个压缩包提供的...

    POI 生成EXCEL2007【含例子】

    POI提供了HSSF(Horizontally Stored Sheet Format)组件来处理老版本的Excel(.xls)文件,而XSSF(XML Spreadsheet Format)组件则用于处理2007版及以后的Excel文件。 描述中提到的“含例子”,意味着这个压缩包...

    poi读取excel文件

    Apache POI提供了丰富的API,可以实现对Excel文件的复杂操作,如合并单元格、设置样式、处理公式等。在Android开发中,这些功能同样适用,但需要注意资源管理,因为Android设备的内存有限。 总的来说,Apache POI是...

    poi操作excel的Demo

    - 公式:POI支持Excel的公式计算,但需要注意内存管理和性能问题,特别是对于大型公式。 - 数据验证:可以设置单元格的数据验证规则,如输入限制、日期范围等。 8. **优化性能**: - SXSSF:对于大文件操作,...

    POI使用Excel模板文件循环输出行并导出Excel

    6. **优化性能**: 大量数据处理时,考虑使用SXSSFWorkbook,它是POI的一个内存效率更高的版本,可以减少内存占用。 7. **异常处理**: 在实际应用中,必须添加适当的异常处理代码,确保在出现错误时能够正常回滚,...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

    Apache poi 操作 excel 文件压缩包

    在实际应用中,Apache POI 往往用于数据分析、报表生成、数据导入导出等场景,尤其在需要在服务器端生成或处理Excel文件时,它是Java开发者的重要工具。通过熟练掌握Apache POI,你可以提高Java应用程序与Excel交互...

    POI导入excel大数据处理,支持excel2003,2007

    在Java开发中,当需要处理大量的Excel数据时,POI库提供了高效且灵活的解决方案。标题提到的“POI导入excel大数据处理”是指利用Apache POI进行大量Excel数据的导入操作,同时它兼容Excel 2003(.xls格式)和2007...

    POI读写excel文件+poi简单文档

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。这个库使得在Java应用程序中创建、修改和读取Excel文件变得非常容易。在这个“POI读写excel文件+poi简单文档”中,我们将深入...

    POI导出Excel表格

    在Java编程领域,Apache POI是一个非常流行的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,特别是Excel工作簿(.xls或.xlsx...通过深入了解和实践,你可以用Apache POI构建功能丰富的Excel处理程序。

    excel2007Poi处理教程

    在这个“Excel2007Poi处理教程”中,我们将深入探讨如何利用Apache POI处理Excel 2007(XLSX)文件。Excel 2007引入了新的XML格式,使得文件结构更为复杂,但同时也提供了更多的功能和更高的数据存储容量。 首先,...

    使用poi生成Excel所需要的jar包

    首先,Apache POI提供了HSSF(Horrible Spreadsheet Format)API来处理旧版的Excel文件(.xls),以及XSSF(Extensible Spreadsheet Format)API来处理Excel 2007及以后版本的文件(.xlsx)。HSSF API基于老式BIFF...

Global site tag (gtag.js) - Google Analytics