Module: XLSSestavy

Defined in:
lib/xls_sestavy/sestava.rb,
lib/xls_sestavy/sloupec.rb,
lib/xls_sestavy/version.rb,
lib/xls_sestavy/excel_helper.rb,
lib/xls_sestavy/rada_sloupcu.rb,
lib/xls_sestavy/excel_formaty.rb,
lib/xls_sestavy/excel_tabulky.rb,
lib/xls_sestavy/definice_sloupcu.rb,
lib/xls_sestavy/argumenty_sestavy.rb,
lib/xls_sestavy/preddefinovany_sloupec.rb

Defined Under Namespace

Modules: ExcelFormaty, ExcelTabulky Classes: ArgumentySestavy, DefiniceSloupcu, PreddefinovanySloupec, RadaSloupcu, Sestava, Sloupec

Constant Summary collapse

VERSION =
"0.2.10"

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>



41
42
43
44
45
46
47
# File 'lib/xls_sestavy/excel_helper.rb', line 41

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)



10
11
12
# File 'lib/xls_sestavy/excel_helper.rb', line 10

def self.col_cm_to_p(cm)
  (cm*28.3464567/5.6).to_i
end

.def_mena=(mena) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/xls_sestavy/excel_helper.rb', line 87

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ý



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/xls_sestavy/excel_helper.rb', line 51

def self.douprav_hodnotu_bunky(hodnota)
  case hodnota
    when Hash
      ret = '---'
      hodnota.each_pair{|k, v| ret += "\n#{k}: #{v}"}
      ret
    when Array
      hodnota.join ', '
    when Time, DateTime, Date
      I18n.l hodnota, format: :excel
    when NilClass
      ''
    else
      hodnota
  end
end

.mm_to_inch(mm) ⇒ Object

převod z mm na palce



15
16
17
# File 'lib/xls_sestavy/excel_helper.rb', line 15

def self.mm_to_inch(mm)
  mm/25.4
end

.num_format(sym) ⇒ Object

klíč num_formátu pro excel



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/xls_sestavy/excel_helper.rb', line 69

def self.num_format(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_smlouvy
      '#0'
    else
      raise "nedefinovaný num_format: #{sym}"
  end
end

.row_cm_to_p(cm) ⇒ Object

převod cm na points pro řádky



4
5
6
# File 'lib/xls_sestavy/excel_helper.rb', line 4

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’



21
22
23
24
25
26
27
28
# File 'lib/xls_sestavy/excel_helper.rb', line 21

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’



32
33
34
35
36
37
# File 'lib/xls_sestavy/excel_helper.rb', line 32

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