2010-06-18 35 views
2

我正在閱讀使用Spreadsheet::ParseExcel.xls文件,並能夠按原樣獲取數據。爲什麼在讀取Perl中的Excel 2007(.xlsx)文件時,數值會被截斷?

但是,當使用Spreadsheet::XLSX讀取.xlsx文件時,讀取的值將被截斷。

例如,在2.4578.xls.xlsx文件被讀取爲分別2.45782.45

請提示爲什麼.xlsx文件數據已損壞。

+2

提供示例電子表格文件並顯示您的代碼;這些將有助於給你一個確切的答案。 – daxim 2010-06-18 12:32:30

回答

3

我創建了一個包含一個表,只有在A1價值2.4578一個簡單的工作簿中並運行下面的腳本:

use Spreadsheet::XLSX; 

my $excel = Spreadsheet::XLSX->new('Book1.xlsx'); 

my ($sheet) = @{ $excel->{Worksheet} }; 

print $sheet->{Cells}[0][0]{Val}, "\n"; 

輸出:

C:\Temp> x 
2.4578000000000002

因此,在這種簡單的情況下,似乎一切沒問題。

如果您可以發佈一個簡短的自包含示例來展示該問題,並且可以查看一個小樣本文件,我們將有更好的機會確定問題。

2

對於未格式化的原始值,請嘗試$cell->{Val},而不是對Excel格式的值使用$cell->Value()

+0

我認爲你有倒退。在我的答案中使用代碼,用'_Value'替換'Val'打印出2.46。 – 2010-06-18 13:31:50

+0

以上順序無誤。 – jmcnamara 2010-06-21 08:42:29

相關問題