Class: SalesClicExporter::Document::Excel
- Defined in:
- lib/sales_clic_exporter/excel.rb
Overview
Describes an Excel document
Constant Summary collapse
- Default_cell_index =
Par défaut on commence à écrire sur la colone 1 au lieu de 0 (sauf pour les titres)
1
- Default_column_width =
Taille des colones par défaut, en caractères (sauf la 1ère) Dans la classe on se sert de @default_column_width qui peut prendre cette valeur ou celle passée en option lors de l’instanciation
23
- Default_first_column_width =
Taille de la première colone (qui sert à décaler le texte, pour un effet de présentation
5
- Extension =
Extension used to generate an Excel file
'xls'
Instance Attribute Summary collapse
-
#token ⇒ Object
Ensures that the filename on the server is uniq.
Instance Method Summary collapse
-
#filename ⇒ Object
Nom du document sur le disque.
-
#finish_initialize(options = {}) ⇒ Object
This is where the magic happens.
-
#freezepane ⇒ Object
Créé un freezepane horizontal dans le document (fige la partie supérieure, la partie inférieure est toujours srollable) (fonction scinder/fixer sous Excel/Openoffice).
-
#initialize(client_filename, token = '') ⇒ Excel
constructor
A new instance of Excel.
-
#name ⇒ Object
Nom ‘formatté’ du document, fournis à l’utilisateur.
-
#newline(size = nil) ⇒ Object
Rajout d’une ligne vide.
-
#path ⇒ Object
Path du document.
-
#save ⇒ Object
Print du document.
-
#title_1(text) ⇒ Object
Titre principal du document.
-
#title_2(text) ⇒ Object
Titre secondaire.
-
#title_3(text) ⇒ Object
Titre de niveau 3 Par défaut il commence sur la cellule d’index 1, au lieu de 0, car il n’est utilisé que dans le “corps” de la feuille.
-
#worksheet_name ⇒ Object
Nom de la 1ère worksheet.
-
#worksheet_name=(name) ⇒ Object
Réglage du nom de la 1ère worksheet.
Methods inherited from Base
#h_table, #line, #v_table, #write
Constructor Details
#initialize(client_filename, token = '') ⇒ Excel
Returns a new instance of Excel.
28 29 30 31 32 |
# File 'lib/sales_clic_exporter/excel.rb', line 28 def initialize(client_filename, token = '') self.token = token @client_filename = client_filename @server_filename = client_filename + token end |
Instance Attribute Details
#token ⇒ Object
Ensures that the filename on the server is uniq
10 11 12 |
# File 'lib/sales_clic_exporter/excel.rb', line 10 def token @token end |
Instance Method Details
#filename ⇒ Object
Nom du document sur le disque
118 119 120 |
# File 'lib/sales_clic_exporter/excel.rb', line 118 def filename "#{@server_filename}.#{Extension}" end |
#finish_initialize(options = {}) ⇒ Object
This is where the magic happens. It’s called from #compute_export in export_to_spreadsheet.rb
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/sales_clic_exporter/excel.rb', line 35 def finish_initialize( = {}) # Chargement de la MVJ # La tableau désigne les arguments passés en ligne de commande à la MVJ filedir = File.dirname(__FILE__) + '/..' memory = ['-Xms256M', '-Xmx512M'] # Memory settings Rjb::load("#{filedir}/apache-poi/poi-3.7-20101029.jar", memory) # Import des packages Java @file_class = Rjb::import('java.io.FileOutputStream') @workbook_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFWorkbook') @cell_style_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFCellStyle') @cell_range_address_class = Rjb::import('org.apache.poi.ss.util.CellRangeAddress') @region_util_class = Rjb::import('org.apache.poi.hssf.util.HSSFRegionUtil') @font_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFFont') # Création fichier et feuilles de calcul @book = @workbook_class.new # Reglage du nom de la première feuille @sheet = @book.createSheet(filename.capitalize) # Ligne en cours d'écriture, afin de récupérer le dernier index écrit @current_row_index = 0 # Créé plusieurs style de formattage de manière statique. # Il faut faire attention à ne pas créer les style dans une boucle, leur nombre # étant limité. C'est pour cela qu'on les créé une fois, et qu'on ne fait ensuite # que les assigner à des cellules create_styles() # Application du formattage par défaut en fonction du Hash d'options # - réglage taille des colones # - réduction taille de la première colone default_formatting() end |
#freezepane ⇒ Object
Créé un freezepane horizontal dans le document (fige la partie supérieure, la partie inférieure est toujours srollable) (fonction scinder/fixer sous Excel/Openoffice)
112 113 114 115 |
# File 'lib/sales_clic_exporter/excel.rb', line 112 def freezepane @sheet.createFreezePane(0, @current_row_index) self end |
#name ⇒ Object
Nom ‘formatté’ du document, fournis à l’utilisateur
123 124 125 |
# File 'lib/sales_clic_exporter/excel.rb', line 123 def name "#{@client_filename}.#{Extension}" end |
#newline(size = nil) ⇒ Object
Rajout d’une ligne vide
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/sales_clic_exporter/excel.rb', line 98 def newline(size = nil) if size row = @sheet.createRow(@current_row_index) row.setHeight(size * 20) # Configuration de la hauteur en 1/20 de caractère end increment_row_index self end |
#path ⇒ Object
Path du document
128 129 130 131 |
# File 'lib/sales_clic_exporter/excel.rb', line 128 def path root_path = defined?(Rails) ? "#{Rails.root}/" : "/" "#{root_path}tmp/#{filename}" end |
#save ⇒ Object
Print du document
134 135 136 137 138 139 |
# File 'lib/sales_clic_exporter/excel.rb', line 134 def save # Ecriture des données dans un fichier du répertoire /tmp de Rails out = @file_class.new(self.path) @book.write(out) out.close end |
#title_1(text) ⇒ Object
Titre principal du document
81 82 83 |
# File 'lib/sales_clic_exporter/excel.rb', line 81 def title_1(text) title(text, 1) end |
#title_2(text) ⇒ Object
Titre secondaire
86 87 88 |
# File 'lib/sales_clic_exporter/excel.rb', line 86 def title_2(text) title(text, 2) end |
#title_3(text) ⇒ Object
Titre de niveau 3 Par défaut il commence sur la cellule d’index 1, au lieu de 0, car il n’est utilisé que dans le “corps” de la feuille
93 94 95 |
# File 'lib/sales_clic_exporter/excel.rb', line 93 def title_3(text) title(text, 3) end |
#worksheet_name ⇒ Object
Nom de la 1ère worksheet
76 77 78 |
# File 'lib/sales_clic_exporter/excel.rb', line 76 def worksheet_name @book.getSheetName(0) end |
#worksheet_name=(name) ⇒ Object
Réglage du nom de la 1ère worksheet
71 72 73 |
# File 'lib/sales_clic_exporter/excel.rb', line 71 def worksheet_name=(name) @book.setSheetName(0, name) end |