Module: XLSSestavy::Xls

Defined in:
lib/xls_sestavy/xls/xls.rb

Defined Under Namespace

Modules: Formaty, Zapisovani Classes: TabulkaXls

Class Method Summary collapse

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č-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