Module: XLSSestavy::Xls
- Defined in:
- lib/xls_sestavy/xls/xls.rb
Defined Under Namespace
Modules: Formaty, Zapisovani Classes: TabulkaXls
Class Method Summary collapse
-
.ciselne_souradnice(bunky) ⇒ Object
převod standartních souřadnic na pole číselných souradnic: ‘A3’ => [[2,0]], ‘A5:B7’ => [[4,0],] <radek, sloupec>.
-
.col_cm_to_p(cm) ⇒ Object
převod cm na points pro sloupce přibližně ..
- .def_mena=(mena) ⇒ Object
-
.douprav_hodnotu_bunky(hodnota) ⇒ Object
doupravuje hodnotu buňky, aby nedošlo na předvídatelné konflikty.
-
.mm_to_inch(mm) ⇒ Object
převod z mm na palce.
-
.num_format(sym) ⇒ Object
klíč num_formátu pro excel.
-
.row_cm_to_p(cm) ⇒ Object
převod cm na points pro řádky.
-
.sloupec_cislo(znak) ⇒ Object
číslo sloupce ze znaků (‘A’ => 0) do maximální hodnoty ‘ZZ’.
-
.sloupec_pismeno(cislo) ⇒ Object
písmeno sloupce z čísla (0 => ‘A’) do maximální hodnoty ‘ZZ’.
Class Method Details
.ciselne_souradnice(bunky) ⇒ Object
převod standartních souřadnic na pole číselných souradnic: ‘A3’ => [[2,0]], ‘A5:B7’ => [[4,0],] <radek, sloupec>
43 44 45 46 47 48 49 |
# File 'lib/xls_sestavy/xls/xls.rb', line 43 def self.ciselne_souradnice(bunky) a = bunky.match /^(\D+)(\d+)(:(\D+)(\d+))?$/ return unless a souradnice = [[a[2].to_i-1, sloupec_cislo(a[1])]] souradnice << [a[5].to_i-1, sloupec_cislo(a[4])] if a[3] souradnice end |
.col_cm_to_p(cm) ⇒ Object
převod cm na points pro sloupce přibližně .. (nenalezen přesný výpočet)
12 13 14 |
# File 'lib/xls_sestavy/xls/xls.rb', line 12 def self.col_cm_to_p(cm) (cm*28.3464567/5.6).to_i end |
.def_mena=(mena) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/xls_sestavy/xls/xls.rb', line 79 def self.def_mena=(mena) @def_mena = case mena when '€'; '[$€-4B1]' when 'Kč'; '[$Kč-405]' else; '??' end end |
.douprav_hodnotu_bunky(hodnota) ⇒ Object
doupravuje hodnotu buňky, aby nedošlo na předvídatelné konflikty. Důležité pro všechny typy času/datumu, protože to je potřeba převést na textový řetězec pro excel stravitelný
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/xls_sestavy/xls/xls.rb', line 53 def self.douprav_hodnotu_bunky(hodnota) return '' unless hodnota case hodnota when Hash YAML.dump hodnota when Array hodnota.join ', ' when Time, DateTime, Date I18n.localize hodnota, format: :excel else hodnota end end |
.mm_to_inch(mm) ⇒ Object
převod z mm na palce
17 18 19 |
# File 'lib/xls_sestavy/xls/xls.rb', line 17 def self.mm_to_inch(mm) mm/25.4 end |
.num_format(sym) ⇒ Object
klíč num_formátu pro excel
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/xls_sestavy/xls/xls.rb', line 68 def self.num_format(sym) sym && case sym when :cas; 'yyyy-MM-dd HH:mm:ss' when :datum; 'd. M. yyyy' when :suma; "#,###0.00 #{@def_mena}" when :pocet; '#,##0' when :cislo; '#0' else raise "nedefinovaný num_format: #{sym}" end end |
.row_cm_to_p(cm) ⇒ Object
převod cm na points pro řádky
6 7 8 |
# File 'lib/xls_sestavy/xls/xls.rb', line 6 def self.row_cm_to_p(cm) (cm*28.3464567).to_i end |
.sloupec_cislo(znak) ⇒ Object
číslo sloupce ze znaků (‘A’ => 0) do maximální hodnoty ‘ZZ’
23 24 25 26 27 28 29 30 |
# File 'lib/xls_sestavy/xls/xls.rb', line 23 def self.sloupec_cislo(znak) znak.upcase! if znak.length==1 znak.ord-65 elsif znak.length==2 (znak[0].ord-64)*26 + znak[1].ord-65 end end |
.sloupec_pismeno(cislo) ⇒ Object
písmeno sloupce z čísla (0 => ‘A’) do maximální hodnoty ‘ZZ’
34 35 36 37 38 39 |
# File 'lib/xls_sestavy/xls/xls.rb', line 34 def self.sloupec_pismeno(cislo) return (cislo+65).chr if cislo < 26 a = (cislo/26) - 1 b = cislo%26 "#{(a+65).chr}#{(b+65).chr}" end |