对“python操作excel的坑”脚本设计的补充

       周六发了一点感慨,星期天睡了一觉,重新看了一下这个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)通用函数       

  • 进度提示;      
  • 错误提示信息   ;
  • 空单元格判断  ;
  • 调试信息输出。

Guess you like

Origin blog.csdn.net/hgstclyh/article/details/106050131