码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-08 13:41:32      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:excel   java   设计   

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单元格功能。

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:excel   java   设计   

原文地址:http://blog.csdn.net/u011680348/article/details/47342285

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!