Fork me on GitHub

Excel的规范与限制

      今天尝试在Python中运行Excel宏(参见在Python中运行Excel的VBA宏),为了测试的简便性,就在Excel中随便写了个VBA宏:从第1行到第50000行,分别给第1列单元格写入一个字符串。测试结果良好。

      为了进一步测试Python运行Excel宏的性能(如速度),我特意将50000的行数增加到了100000,结果运行该宏的时候竟然出错了,调试发现行数增加到65537的时候,程序崩溃了,提示“运行时错误‘1004’:应用程序定义或对象定义错误”。

      百思不得其解之余,我上网查询了一下错误原因,结果发现原来有“Excel的规范和限制”的说法,即在不同版本的Excel中,对应有各种各样的限制。比如在Excel 2003(我用的版本)中,“工作表大小”的最大限制为“65,536行 X 256列”,于是一旦行数超过了65536的限制后,就会出错;Excel 2007在Excel 2003的基础上作了很多改进,比如“工作表大小”的最大限制扩大为了“1,048,576行 X 16,384列”;Excel 2010在“工作表大小”的最大限制上与Excel 2007相同,但在其他方面作了一些改进。

      Excel 2003的规范细节可以参见:Excel specifications and limits (Applies to Microsoft Office Excel 2003);Excel 2007的规范细节可以参见:Excel specifications and limits (Applies to Microsoft Office Excel 2007);Excel 2010的规范细节可以参见:Excel specifications and limits (Applies to Microsoft Office Excel 2010)

      另外,Excel 2003 versus 2007还专门给出了Excel 2003与Excel 2007之间的区别对比;Excel 2007 versus 2010则比较了Excel 2007与Excel 2010之间的不同。

      在手工使用Excel,或者借助VBA自动化Excel的过程中,Excel所属版本的规范作为一个限制约束都是我们必须注意的;而对各个版本的Excel之间的规范差异性的了解,则有助于我们更好地考虑Excel的兼容性问题。

posted on 2011-10-16 22:31  RussellLuo  阅读(1082)  评论(0编辑  收藏  举报

导航