公司业务的报表系统有导出功能,会导出excel,一般情况下,业务人员都会选择xls后缀的文件名。
有一天,开发报表的小妹妹说,导出的excel,缺少了好多列。问我要怎么解决问题。
我心想居然少列,是不是代码问题呢?于是就开始翻看birtweb相关代码。代码的逻辑是列按照输入的列数来处理。突然翻到一行 maxcolumn=256的代码,于是去数导出的excel列数,果真只有256列。
用记事本打开xls文件,仔细查看xml内容 发现列最大数果然是256,其他内容消失了。突然就想起了xls格式里的神奇数 65535。印象中,当年做excel导出的时候,遇到过xls格式的内容,最多输出65535行,当时死活找不到问题,最后查了微软的文档,才发现,原来xls格式,最大支持65535行记录。
这次遇到的问题,其实和这个一样,是xls的例数限制。于是很自然的想到了改为导出xlsx格式。
去系统尝试了一下 birtweb原本就支持导出为xlsx。告诉小妹妹,结案。
总结,看到2的倍数或者2的倍数减一的数字,多考虑考虑是不是遇到了系统最大值限制。