From c28ba46b7d11ff58c7ef1c8e8044b9e2eebd514f Mon Sep 17 00:00:00 2001 From: Hugh Mcgowan Date: Thu, 29 Jan 2009 23:26:36 -0600 Subject: [PATCH] Fixed handling of booleans in ods, xls. --- lib/roo/excel.rb | 6 +++++- lib/roo/openoffice.rb | 1 + test/boolean.ods | Bin 0 -> 7857 bytes test/boolean.xls | Bin 0 -> 6144 bytes test/test_roo.rb | 19 +++++++++++++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/boolean.ods create mode 100755 test/boolean.xls diff --git a/lib/roo/excel.rb b/lib/roo/excel.rb index 0254c57..1706d51 100644 --- a/lib/roo/excel.rb +++ b/lib/roo/excel.rb @@ -344,7 +344,11 @@ def read_cells(sheet=nil) v = cell.to_f when :text vt = :string - str_v = cell.to_s('utf-8') + if cell.to_s.downcase == 'true' + str_v = cell.to_s + else + str_v = cell.to_s('utf-8') + end when :date if cell.to_s.to_f < 1.0 vt = :time diff --git a/lib/roo/openoffice.rb b/lib/roo/openoffice.rb index c110062..1c22296 100644 --- a/lib/roo/openoffice.rb +++ b/lib/roo/openoffice.rb @@ -324,6 +324,7 @@ def read_cells(sheet=nil) elsif vt == 'float' # elsif vt == 'boolean' + v = tr.attributes['boolean-value'] # else # raise "unknown type #{vt}" diff --git a/test/boolean.ods b/test/boolean.ods new file mode 100644 index 0000000000000000000000000000000000000000..d7900fcc71bdc868185803644f5d3df9a67b4134 GIT binary patch literal 7857 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 Zng6nl>S_`Z7D_^;X(1XVk+y7UVWFm$C=bM? z%7Y0e8WP2X#E_H+W1jevD$@)T3C! z{-Tijx2rQRe_8{#(-q78`ltV@E}kJECC(@mIC#_!+--k0z`pFfyaPl0LRzhrpz}Z-vYF{+)6i{p7nh0PBjn? zVHHb*^4Y>mbouK0ufihE1}>^y`~Ys3yhz*F*qiKk{;jY<$IxrhHrHFFxM$d~(Nl;Q z!KTPoYh0u8$6D`##xZ5y)OfwxCMw6oS&M}Cm1pg!mMubT$*0=pdu3L`Qolr<%&Tv? z+ahSS!y^t!uOua>6!qq+v_4QF<2-S<#Gj6Lw{NQt)X5p{r09Kq_3vGN96EJ4JvVrIZZUdD=kiT?_|`mp za~?iCBQLNMi$0UCSA!Xkz+RN63wHSvHuh{vGE5_>5>2a8rJ7c!0-DyO7HGOS70m3` zop22MYXS}F33>(-iP6<$4(l_(WgaIp>3R#Tv*tMbgN46eWFJq4bf1o)G~I~Q!m+^) zdBPC1QGzzc)Z^Ajd73B5=eT!<!g?_ji@biJ-^7KDcqYv#+b|1?5wEyF~{G%cv=g{U}N<2AZ`+i^gMG*E`o< zQ|@(*m!tjlUm1RCYw+b8k-yw<1pn9Dntb`w62)ltKo0d}ORLptm7m{@|H(ElwPYts zLUKe;T1+s^(-gtxiEA`wbQZFW0Z`)_tV$tgbUV!jZS!8MWeI<<0*`08CSBA}x&wJ= zC(XM)3%OL4Qj%VUY^4Ou3Q9PgH8|FBgDqv+j&1mEc*?Gp^J*zEuL{zo?2n600k$gd zUR^kEp>(nu`PJP+ipxyl%MZ78ZlDcL9((_{o7)E?AHE%umWEHhqffa2c)q3sd3xS1 zmm5S%f0Y7gyT<{(J5B;v6r6qL{c#p4CH{QNye0T1={U4^(CO^oJN$C*LHyJ=Mn0Zx zIhGh8KfdwBB^*1N=Wm1^Ec)F<$}H7ww39sL-Zc%)tnqZ-nFnc;Rfv81@y~JX??QIUmYq$QI0!S&p);Zn*`y zNlDC7d-kF-$TyNrJbP_Z+K9xvChJ?hGzi=