2009-05-03 7 views
0

Ich schreibe ein Perl/Tk-Skript, das Excel-Arbeitsblätter mit dem Beispielskript ss2tk aus dem Modul Spreadsheet :: Read anzeigt. Es werden nicht zwei Nachkommastellen abgerundet, sondern die Funktion von Spreadsheet::XLSX::Utility2007 wird auf zwei Dezimalstellen abgerundet. Warum? Ich versuche, diese zweite Funktion als eine Funktion meines Programms zu verwenden, um die Konvertierung der angezeigten Arbeitsblätter in CSV-Dateien anzubieten.Warum rundet Spreadsheet :: XLSX :: Utility2007 xls2csv auf zwei Dezimalstellen?

+0

Diese Frage ist zu kompliziert. Können Sie das Problem auf ein kurzes Code-Snippet reduzieren und das posten? Oder zumindest auf das Beispielskript und/oder das CPAN-Modul perldoc verlinken? –

+1

Auch hier gepostet: http://www.mahalo.com/answers/programming/in-perl-the-xls2csv-function-from-spreadsheetxlsxutility2007-rounds-off-to-two-decimal-places-why –

+3

Haben Sie gefragt der Autor des Moduls? – Schwern

Antwort

1

Ich sehe, Sie konnten get an answer bei PerlMonks mit Hilfe von frieduck (irgendeine Beziehung zu friedo?), So dass ich es für SO Leute verknüpfen verknüpfen.

Zusammenfassend stellte sich heraus, dass die Interna von Spreadsheet::XLSX::Utility2007 beim Abrufen der Zellenwerte automatisch ein 2-Dezimalstellenformat anwendeten. Die beiden vorgeschlagenen Lösungen waren:

  1. Changing the way the module generates cell types (lassen Sie sie alle als Standard behandeln), indem Sie die XLSX-Interna modifizieren.
  2. Changing the way the module treats the cells loaded from the spreadsheet (behandelt sie mit dem unformatierten Wert aus der ursprünglichen Tabelle), auch durch Ändern der Interna.

So oder so, es wurde auch erwähnt, dass Sie wahrscheinlich am besten sein würde eine local Unter aus der Definition des modifizierten Verhalten zu tun durchführen, so dass es keine bösen Überraschungen ändert das Modul an Ort und Stelle zur Folge hat.

+0

Es scheint, dass Frieduck ** keine ** Beziehung zu Friedo hat. –

Verwandte Themen