我无法让ParseExcel解析由gnumeric生成的.xls电子表格,我认为问题在于gnumeric。当只有285行正在使用时,PsrseExcel的row_range()方法返回(0,500)。
我尝试选择单元格A1 - I285,然后选择文件>打印区域>在使用我的Perl脚本保存和处理.xls文件之前设置打印区域,没有任何效果。
该文件实际上包含两个工作表。一个正确计算行数,另一个不正确。我创建了两个工作表,但不知道我可能做的不同。
答案 0 :(得分:0)
我怀疑它是在计算不可打印字符的行,但除非你发布你的代码,否则我无法肯定地说。
如果是不可打印的字符,请尝试在导致问题的任何循环中插入这个坏男孩:
next unless $cell;
答案 1 :(得分:0)
当只有285行正在使用时,ParseExcel的row_range()方法返回(0,500)。
Spreadsheet :: ParseExcel从Excel文件中的二进制记录中读取row_range()
数据,该文件存储max和min行和列值。它不会迭代工作表来计算这些值。
因此,如果row_range()
报告(0,500)作为使用中的行范围,则这些是存储在该记录中的值。
差异的来源可能是由于包含格式但没有数据的行。 Excel区分“空”单元格和“空白”单元格。 “空”单元格是不包含数据的单元格,而“空白”单元格是不包含数据但包含格式的单元格。 Excel存储“空白”单元格,但忽略“空”单元格。
我尝试选择单元格A1 - I285,然后选择文件>打印区域>在使用我的Perl脚本保存和处理.xls文件之前设置打印区域,没有任何效果。
打印区域对row_range()
报告的范围没有影响。
如果您确实要将文件减少到包含行的285个数据,请选择286-501中的行,删除它们然后保存文件。
或者,将程序设置为忽略仅包含空白数据的单元格的行。