向下拉一行后,公式跟随改变

VBA公式自动向下填充方法:

Selection.AutoFill Destination:=Range(Cells(0, 0), Cells(1, 0))

java poi excel公式自动向下填充方法:

package test;import java.io.FileInputStream;
import java.io.FileOutputStream;import org.apache.poi.ss.formula.EvaluationWorkbook;
import org.apache.poi.ss.formula.FormulaParser;
import org.apache.poi.ss.formula.FormulaRenderer;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
import org.apache.poi.ss.formula.FormulaType;
import org.apache.poi.ss.formula.ptg.AreaPtg;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.formula.ptg.RefPtgBase;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class Poi {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream("c:/test/poi.xlsx");FileOutputStream fos = new FileOutputStream("c:/test/poi-out.xlsx");XSSFWorkbook book = new XSSFWorkbook(fis);XSSFSheet sheet = book.getSheetAt(0);XSSFCell cell = sheet.getRow(0).getCell(0);XSSFCell cellTarget = sheet.createRow(1).createCell(0);if (cell.getCellType() == CellType.FORMULA) {copyFormula(cell, cellTarget, book);}book.setForceFormulaRecalculation(true);book.write(fos);book.close();fos.close();fis.close();}/*** * @param srcCell 复制源* @param destCell 复制目标* @param book* @date 2021年8月14日 上午11:31:50*/public static void copyFormula(Cell srcCell, Cell destCell, XSSFWorkbook book) {// 复制相对引用的公式// srcCell复制源,destCell 复制目标String formula = srcCell.getCellFormula();EvaluationWorkbook ew;FormulaRenderingWorkbook rw;Ptg[] ptgs;ew = XSSFEvaluationWorkbook.create((XSSFWorkbook) book);// 最后一个参数是从0开始指定工作表编号ptgs = FormulaParser.parse(formula, (XSSFEvaluationWorkbook) ew, FormulaType.CELL, 0);rw = (XSSFEvaluationWorkbook) ew;for (Ptg ptg : ptgs) {// 计算坐标int shiftRows = destCell.getRowIndex() - srcCell.getRowIndex();int shiftCols = destCell.getColumnIndex() - srcCell.getColumnIndex();if (ptg instanceof RefPtgBase) {RefPtgBase ref = (RefPtgBase) ptg;if (ref.isColRelative()) {ref.setColumn(ref.getColumn() + shiftCols);}if (ref.isRowRelative()) {ref.setRow(ref.getRow() + shiftRows);}} else if (ptg instanceof AreaPtg) {AreaPtg ref = (AreaPtg) ptg;if (ref.isFirstColRelative()) {ref.setFirstColumn(ref.getFirstColumn() + shiftCols);}if (ref.isLastColRelative()) {ref.setLastColumn(ref.getLastColumn() + shiftCols);}if (ref.isFirstRowRelative()) {ref.setFirstRow(ref.getFirstRow() + shiftRows);}if (ref.isLastRowRelative()) {ref.setLastRow(ref.getLastRow() + shiftRows);}}}destCell.setCellFormula(FormulaRenderer.toFormulaString(rw, ptgs));}}

使用aspose.cells实现下拉填充公式

package test;import java.io.FileInputStream;
import java.io.FileOutputStream;import com.aspose.cells.Cells;
import com.aspose.cells.Range;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;public class Test {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream("c:/test/test.xlsx");FileOutputStream fos = new FileOutputStream("c:/test/test-out.xlsx");Workbook workbook = new Workbook(fis);Cells cells = workbook.getWorksheets().get(0).getCells();cells.get("B2").setSharedFormula("=A2*0.09", 5, 1);//下拉4行//setSharedFormula不支持其他工作表单元格//如果公式引用了其他工作表单元格,需要使用这种方式cells.get("C2").setFormula("=LAN1!A1");Range sourceRange = cells.createRange("C2:C2");Range destRange = cells.createRange("C3:C9");//设置所需的单元格范围。下拉7行destRange.copy(sourceRange);workbook.save(fos, SaveFormat.XLSX);workbook.dispose();fis.close();fos.close();}
}

Java Poi向下填充公式相关推荐

  1. Java poi word模板填充数据、复制行删除行

    Java poi word模板填充数据 1.明细表格式 ${list_xxxxx} 普通格式 ${xxxxxx} 2.replaceInTable方法中 table.removeRow(2); 第三行 ...

  2. excel中vlookup填充公式下拉怎么不好使了(如何在excel中vlookup为什么无法填充公式)...

    在EXCEL表格里用VLOOKUP搜索数据时,为什么往下拉多了就不灵了呢? 注意查找的值与搜索区域的值格式统一. 搜索区域Table_array,地址引用要用绝对地址,比如区域A1:E100要写成$A ...

  3. poi导出excel写入公式_【java poi 写入Excel后读取公式值问题】poi导入excel

    java poi 写入Excel后读取公式值问题 不用改公式,只需要用cell.getNumericCellValue()获取,读出来就是正确的值了,如果你读出来的还有问题,说明你其他的地方写的还有问 ...

  4. EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用

    EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用 在不想变的单元格前加$符号(列标和列数,两个都要加$),变成绝对引用,默认情况是相对引用 L4固定不变的方式:$L$4 M4固定不 ...

  5. WPS表格Excel:公式实现向下填充

    WPS表格Excel:公式实现向下填充 目标:用公式实现从A列到B列的转变 观察数据得到结论 如果B列中的第N行对应的A列中的数据不为空,则取A列中的数据,如果为空则取B列中N-1行的数据即可 使用I ...

  6. JAVA POI 导出EXCEL时,EXCEL模板中的公式无效问题

    JAVA POI 出力EXCEL时,EXCEL模板中的公式无效问题 工作中遇到一个问题. EXCEL模板有两个sheet,画面内容要导出到第二个sheet中,第一个sheet设置公式,读取第二个she ...

  7. java poi 常用功能代码

    java poi 常用功能代码(适用于XSSFWorkbook:Excel2007后的版本,扩展名是.xlsx) Excel验证公式 =AND(H8>0,OR(H8=INT(H8),LEN(H8 ...

  8. Java POI导出word文件及生成表格

    HWPF是处理 Microsoft Word 97(-2007) .doc文件格式,它还为较旧的Word 6和Word 95文件格式提供了有限的只读支持.包含在poi-scratchpad-XXX.j ...

  9. java poi 设置时间空间_java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式?...

    java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式? 我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件. 现在我有了一个新的要求,即 ...

  10. java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除

    工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...

最新文章

  1. iptables 基本命令使用举例
  2. ajax异步查询demo,ASP.NET中AJAX的异步加载(Demo演示)
  3. java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...
  4. Android 第一课 Activity
  5. 工作239:内容过长省略号失败 直接改的样式表
  6. 使用Numpy和Opencv完成图像的基本数据分析(Part II)
  7. ECCV 2020 | 视觉引导的声源分离辅助立体声重构方法 Sep-Stereo
  8. 使用Postman做API自动化测试
  9. 2021年吉林高考成绩怎么查询,2021年吉林高考成绩排名查询系统,吉林高考位次排名查询...
  10. linux修改文件系统属性,实用技巧:修改Linux操作系统的文件属性
  11. logging日志输出模块
  12. Java多线程总结之线程安全队列Queue
  13. 运筹系列10:线性规划开源软件GLPK和PyMathProg
  14. 变压器综合试验台的功能到底有多强大?
  15. c语言有坐标判断正方形,正方形
  16. Antd DatePicker之旬查询(本月上旬、本月中旬、本月下旬)
  17. Pytorch实现EfficientNet
  18. 吃什么食物对眼睛最好
  19. css——background、border、margin、float、content、blur(图片模糊)、user-select:none(禁用用户选择复制),border-image
  20. 了解阿克曼转向原理的作用

热门文章

  1. react-native 加载图片的几种方式
  2. 服务器显示器指示灯不亮,电脑显示器指示灯不亮怎么办
  3. 普通人也可以制作App
  4. 经典面试题 TCP和UDP有什么区别?
  5. 苏州新导监狱戒毒行业工具资产智能管理
  6. 最新BT面板静态文件镜像库v7.1.1
  7. GNS3使用二:通过ASDM管理ASA防火墙
  8. 机器学习基石(一):什么是机器学习
  9. Python处理excel表格中的数据
  10. nmake、makefile、cmake学习笔记