JAVA实现Excel——Excel单元格设计

Excel底层实现是使用C/C++实现的,而我若使用JAVA语言,首先需要对单元格进行对象化,即用一个Cell类来表示每一个单元格(实际上就是一个数据结构)

在我编程过程中,在设计一个简单的类时,往往需要从其父类、接口、Field、Method等几个方面进行分析,以满足功能、性能、可拓展性的要求。

1)接口分析

Serializable接口,EXCEL单元格需要实现复制功能,或者拖拽功能,就必须进行复制(必须为深复制),所以需实现Serializable接口,通过流的方法进行深复制

Comparable接口,单元格若需要进行排序,必须实现CompareTo方法。


2)Field分析

Field的作用是,总结下来说是用来标识单元格保存单元格信息这2个作用的。


int row;int col;  相当于Cell数据结构的主键,可以通过HashMap获取单元格。

Object value; 相当于单元格只缓存,保存单元格的经过公式计算后的值。如1+1=2,则value值为2。

String function; 保存公式的字符串。如A3=A1+A2,就需要在A3中保存"A1+A2"字符串。

boolean calculated; 借助的是缓存思想,保证每次只计算一次值;比如在计算前,所有Cell的calculated=false;有一次计算是,A1=1/3+1;A2=A1*3;则会在A1=1/3+1;中计算一次A1,设置A1的calculated=true,将值保存到value中;而在计算A2=A1*3时,先检查A1已经计算,直接替换成value即可。

ArrayList<Cell> relationCell; 保存相关单元格,如A3=A1+A2,那么relationCell就保存A1、A2单元格,这个是用于在A1或A2单元格数值发生变化时,通知A3的。

boolean visible; 标记单元格是否可见,实现Excel隐藏单元格功能。

Branch branch;格式刷对象,(Branch 类不赘述,用来保存前景色,背景色,字体等数据)

 

3)方法分析

clone() 方法,实现单元格深复制

compareTo(Cell cell),实现两个单元格比较

calculate方法,实现公式解析与计算

setVisible方法,设置是否可见

save方法,通过StringBuffer实现将Cell信息转化为String类型,方便与Excel交互

readBranch(Branch branch)方法,实现单元格格式刷


通过上述分析可以实现简单的EXCEL单元格功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值