java excel函数,excel怎么复制公式,Java程序如何调用Excel中的各种公式

Java程序如何调用Excel中的各种公式

针对此问,写了一个测试,代码如下:package cn.fory.formula;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class TestFormula {/*** 测试POI处理公式** 问题描述:通过POI导入的数据后,引用导入数据的原有公式单元格不能显示出来,需要重新定位到公式单元* 格然后重新转入公式才行成得结果** 解决办法:重新对公式单元格设置公式** 相关文件:test.xls文件中手工设置单元格B2=C2 D2**/public static void main(String[] args) throws FileNotFoundException {POIFSFileSystem fs;try {fs = new POIFSFileSystem(new FileInputStream("test.xls"));HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wb.getSheet("Sheet1");HSSFRow row = sheet.getRow((short) 1);HSSFCell cell = row.getCell((short) 2);cell.setCellValue((short) 5);cell = row.getCell((short) 3);cell.setCellValue((short) 40);HSSFCell cell1 = row.getCell((short)1);if (HSSFCell.CELL_TYPE_FORMULA == cell1.getCellType()) {//取得公式单元格的公式,重新设置cell1.setCellFormula(cell1.getCellFormula());}FileOutputStream fileOut = new FileOutputStream("test.xls");wb.write(fileOut);fileOut.close();

用java解析EXCEL公式的问题

建议你使则

用法见http://blog.csdn.net/allwefantasy/article/details/3136570

java语言怎么读取excel文件公式计算后的值

1 package hrds.zpf.poi;

2

3 import org.apache.poi.hssf.usermodel.HSSFWorkbook;

4 import org.apache.poi.hssf.usermodel.HSSFSheet;

5 import org.apache.poi.hssf.usermodel.HSSFRow;

6 import org.apache.poi.hssf.usermodel.HSSFCell;

7

8 import java.io.*;

9

10 public class FormulaToString {

11

12 /**

13 * @param args

14 */

15 public void fileInput() throws IOException {

16

17 HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(

18 "d:/My Documents/Desktop/poi.xls"));

19 HSSFSheet hsheet = hw.getSheet("poi test");

20 HSSFRow hrow = hsheet.getRow(0);

21 HSSFCell hcell = hrow.getCell(0);

22 String cellValue = this.getCellValue(hcell);

23 System.out.println(cellValue);

24

25 }

26

27 public String getCellValue(HSSFCell cell) {

28 String value = null;

29 if (cell != null) {

30 switch (cell.getCellType()) {

31 case HSSFCell.CELL_TYPE_FORMULA:

32 // cell.getCellFormula();

33 try {

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

35 } catch (IllegalStateException e) {

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

37 }

38 break;

39 case HSSFCell.CELL_TYPE_NUMERIC:

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

41 break;

42 case HSSFCell.CELL_TYPE_STRING:

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

44 break;

45 }

46 }

47

48 return value;

49 }

50

51 public static void main(String[] args) {

52 try {

53 // TODO Auto-generated method stub

54 FormulaToString fts = new FormulaToString();

55 fts.fileInput();

56 } catch (IOException e) {

57 e.printStackTrace();

58 }

59 }

60

61 }

java怎么获取Excel表格中宏函数的值。函数的结果是文字。

介个不会

java语言怎么读取excel文件公式计算后的值

以我的实验告诉你,要看书读理论,不一定都懂,因为有一个懂的过程;然后就析代码,看看书上的代码的意思,逐行逐行地看,去体会;最重要的一点就是敲写代码,刚开始不会没关系,照着书一行一行的敲,然后运行,观察结果,把程序运行结果联系程序代码,学得多一点了就尝试修改代码,改一点点看运行结果有什么变化,便于理解程序内部执行的机制。代码敲熟了,不懂的理论部分自然就懂了。上面所说的最关键的就是一个字“敲”,送你一句学程序的话:看一遍不如背一遍,背一遍不如敲一遍。

1 package hrds.zpf.poi;

2

3 import org.apache.poi.hssf.usermodel.HSSFWorkbook;

4 import org.apache.poi.hssf.usermodel.HSSFSheet;

5 import org.apache.poi.hssf.usermodel.HSSFRow;

6 import org.apache.poi.hssf.usermodel.HSSFCell;

7

8 import java.io.*;

9

10 public class FormulaToString {

11

12 /**

13 * @param args

14 */

15 public void fileInput() throws IOException {

16

17 HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(

18 "d:/My Documents/Desktop/poi.xls"));

19 HSSFSheet hsheet = hw.getSheet("poi test");

20 HSSFRow hrow = hsheet.getRow(0);

21 HSSFCell hcell = hrow.getCell(0);

22 String cellValue = this.getCellValue(hcell);

23 System.out.println(cellValue);

24

25 }

26

27 public String getCellValue(HSSFCell cell) {

28 String value = null;

29 if (cell != null) {

30 switch (cell.getCellType()) {

31 case HSSFCell.CELL_TYPE_FORMULA:

32 // cell.getCellFormula();

33 try {

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

35 } catch (IllegalStateException e) {

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

37 }

38 break;

39 case HSSFCell.CELL_TYPE_NUMERIC:

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

41 break;

42 case HSSFCell.CELL_TYPE_STRING:

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

44 break;

45 }

46 }

47

48 return value;

49 }

50

51 public static void main(String[] args) {

52 try {

53 // TODO Auto-generated method stub

54 FormulaToString fts = new FormulaToString();

55 fts.fileInput();

56 } catch (IOException e) {

57 e.printStackTrace();

58 }

59 }

60

61 }

可否在LINUX平台用JAVA调用EXCEL的公式计算结果?

路过

java如何获取excel公式计算结果,不用XSSFFormulaEvaluator,POI的公式取值GC频率过高

if(cell.getCachedFormulaResultType() == 0){res = String.valueOf(cell.getNumericCellValue());};

if(cell.getCachedFormulaResultType() == 1){res = cell.getStringCellValue();}

不用evaluator

用Excel公式实现文本转Java输出文本的问题

如果你要的不是Excel导入,那么你说的单元格是什么?文本又是什么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个简单示例 初始化当前Java线程STA ComThread InitSTA ; ActiveXComponent xl new ActiveXComponent "Excel Application" ; try{ 打开现有的Excel xl setProperty "Visible" new Variant false ; Dispatch workbooks xl getProperty "Workbooks" toDispatch ; Dispatch workbook Dispatch invoke workbooks "Open" Dispatch Method new Object[]{excelPath new Variant false 是否只读 new Variant false } 是否显示打开 new int[1] toDispatch ; 得到所有sheet Dispatch sheets Dispatch get workbook "sheets" toDispatch ; System out println "sheet数量:"+Dispatch get sheets "count" toString ; 根据索引得到sheet Dispatch sheet Dispatch invoke sheets "Item" Dispatch Get new Object[]{i} new int[1] toDispatch ; 绘图 Dispatch chartobjects Dispatch call sheet "ChartObjects" toDispatch ; Dispatch achart Dispatch invoke chartobjects "Add" Dispatch Method new Object[] { new Double 12 yHeight 横坐标 纵坐标 new Double 943 new Double 293 宽度 高度 } new int[1] toDispatch ; Dispatch chart Dispatch get achart "chart" toDispatch ; Dispatch range Dispatch invoke sheet "Range" Dispatch Get new Object[] {rangeX rangeY} 列名位置 数据位置 new int[2] toDispatch ; Dispatch series Dispatch call chart "seriescollection" toDispatch ; Dispatch call series "add" range new Variant true ; 生成图形 Dispatch put chart "PlotBy" "2" ; 纵向读取数据绘制chart 设置线条气泡颜色 黄色 Dispatch seriesChartFillFormat Dispatch get series "Fill" toDispatch ; Dispatch seriesForeColor Dispatch get seriesChartFillFormat "ForeColor" toDispatch ; Dispatch put s
Java操作Excel表格时,我们可以使用Apache POI这个开源的Java API来实现。具体地,我们可以使用它提供的公式计算器类FormulaEvaluator来应用公式函数。 下面是一个简单的示例代码,演示如何在Java使用Apache POI应用公式函数: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelFormulaDemo { public static void main(String[] args) throws Exception { // 读取Excel文件 FileInputStream fis = new FileInputStream("test.xlsx"); Workbook workbook = new XSSFWorkbook(fis); Sheet sheet = workbook.getSheetAt(0); FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); // 设置公式函数 Row row = sheet.getRow(0); Cell cell = row.createCell(2); cell.setCellType(Cell.CELL_TYPE_FORMULA); cell.setCellFormula("SUM(A2:B2)"); // 计算公式函数的值 evaluator.evaluateFormulaCell(cell); // 输出结果 System.out.println(cell.getNumericCellValue()); // 保存Excel文件 FileOutputStream fos = new FileOutputStream("test.xlsx"); workbook.write(fos); fos.close(); } } ``` 以上代码,我们首先通过FileInputStream读取Excel文件,然后获取第一个Sheet,并创建一个FormulaEvaluator对象,用于计算公式函数的值。 接着,我们在第一行第三列(C1单元格)设置一个求和公式SUM(A2:B2),并将其类型设置为CELL_TYPE_FORMULA。 然后,我们调用FormulaEvaluator的evaluateFormulaCell方法来计算公式的值,并通过getCell方法获取单元格的值,这里输出的是一个double类型的数值。 最后,我们通过FileOutputStream将修改后的Excel文件保存到磁盘。 需要注意的是,在实际使用,我们可能需要先检查单元格的类型,以判断是否需要应用公式函数。此外,POI还提供了很多其他的API,可以满足我们更加复杂的Excel操作需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值