java excel 函数的使用方法_Java开发之Excel函数VLOOKUP的使用技巧

前言

Excel是我们日常办公或者开发中比较常见一款办公软件,因为其方便性,大大被人们所青睐。最近在做中图分类法时遇到了一个难题,那就是已知Excel中存储着中图分类法的名称和中图分类号以及每个中图分类号的父级分类号,如何根据这些信息得到当前分类号的层级深度。如果是一个单元格一个单元格的填写,当然是很简单了,但总的中图分类项一共有4万9千多条记录,一项一项的填肯定是很耗时的。那么如何来解决这个难题呢?

c466cc20318b0f1605aa60c0017e88a8.png

解决思路

1、第一次尝试:SQL语句

首先我想到了利用sql语句来实现,通过update set来更新,经过尝试,此处需要用到游标来实现,但如果用游标会显得很麻烦,况且对这一块并不是特别熟悉。而且这条语句“update table A set 深度=(select 深度+1 from table B where A.item_code=B.out_id )从语法上来说就是错的。

2、第二次尝试:right join

复制两张一模一样的表,利用两表做连接,然后对得出的数据进行条件剔除,总的来说,这种方法也不是特别理想。

3.利用VLOOKUP函数

深度=VLOOKUP(D10,C1:I9,7,FALSE)+1

其中D10代表查找D列第10行的数据,C1:I9是指从第C列第1行到第I列第9行进行表范围查找,7代表是取第7列的值作为结构,FALSE代表的是精确匹配,最后加1是指在匹配行的深度基础上+1

c39b7ab86030cb7ba84af83c6f50ff3e.png

结语

VLOOKUP函数是很有用的函数,尤其是对于一些具有父节点关系的数据,如果通过嵌套查询或者游标更新等方式都很困难的时候,不妨试试导出数据到Excel中,再利用VLOOKUP函数实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值