2 Stimmen

Warum werden Werte beim Lesen einer Excel 2007 (.xlsx) Datei in Perl abgeschnitten?

Ich lese eine .xls Datei mit Spreadsheet::ParseExcel und konnte die Daten so wie sie sind erhalten.

Aber beim Lesen einer .xlsx Datei mit Spreadsheet::XLSX werden die gelesenen Werte abgeschnitten.

Zum Beispiel wird 2.4578 in einer .xls und .xlsx Datei als 2.4578 bzw. 2.45 gelesen.

Bitte schlage vor, warum die Daten der .xlsx Datei korrupt sind.

3voto

Sinan Ünür Punkte 114993

Ich habe ein einfaches Arbeitsbuch erstellt, das nur ein Blatt und den Wert 2.4578 in A1 enthält, und habe das folgende Skript ausgeführt:

use Spreadsheet::XLSX;

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

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

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

Ausgabe:

C:\\Temp> x
2.4578000000000002

Also scheint in diesem einfachen Fall alles in Ordnung zu sein.

Wenn Sie ein kurzes, eigenständiges Beispiel posten können, das das Problem zeigt, und eine kleine Beispieldatei .xlsx, die wir uns ansehen können, hätten wir eine bessere Chance, das Problem zu identifizieren.

2voto

jmcnamara Punkte 33232

Versuchen Sie $cell->{Val} für den unformatierten Rohwert anstelle von $cell->Value() für den formatierten Excel-Wert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X