周六发了一点感慨,星期天睡了一觉,重新看了一下这个200行的脚本。当时只是完成任务即可,回头看时想到可能后面这类表格处理的应用可能会比较常见,有必要做个优化设计,重构一下,作为后面表格处理的基础库。大概脑子简单设计一下,(暂时想到就这些):
1、设计表格读取处理类:
1)表操作类:
属性:
有效表,记录数
方法:
- 打开;
- 关闭;
- 表有效性判断;表头判断;表尾判断:数据空判断;记录数量判断;表格宽度判断)
2)表主体信息读取:
属性:
- 信息数(单元格数);
- 行数(一般等于信息数,但有合并单元格);
- 列数(一般等于信息数*2,但有合并单元格);
- 主体信息(一个python集合list)。
方法:
int readMainInfo( readInfoHeadStruct,readInfoModule=oneByOne ,srcTable,beginCell=(0,0),endCell=(0,0))
1) readInfoHeadStruct 要读取的字段,每个字段包含(name,bAllowNull=False,strType= “str”,posModule=“NextNotNullColumn”,initPlace(0,0)) bAllowNull是否允许为空, posModule默认为右边紧挨的第一个非空列,
2)readInfoModule,是否严格的oneByOne ,还是次序不确定。一般固定表格主体部分是确定的。
返回值: 0,读取成功
1,读取失败,没有有效信息
2~n,读取失败,各类错误代码
3)表记录信息读取:
属性:
- 记录数(一般为记录行数)
- 主体信息(一个python集合list)。
方法:
int readRecordInfo( readInfoRecordStruct,infoModule=one2one ,srcTable,beginLine=1)
1) readInfoRecordStruct 要读取的字段,每个字段包含(name,bAllowNull=False,strType= “str”) bAllowNull是否允许为空, posModule默认为右边紧挨的第一个非空列,
2)InfoModule,一般有:one2one,每个记录一行,没有分叉;one2Many,记录的列从左往右可以树状分叉;many2many,记录的列从左往右可以往后随意分叉合并(这种应该很少见)。
返回值: 0~n,读取成功,返回记录数
-1~-n,读取失败,各类错误代码
2、设计通用处理类:
1)excel文件处理
- 文件目录遍历
- excel单元格获取 (特别是公式)针对不同模式,需要迭代,还是直接取值,要做好异常处理
2)通用函数
- 进度提示;
- 错误提示信息 ;
- 空单元格判断 ;
- 调试信息输出。