excel_to_code 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +41 -0
- data/bin/excel_to_c +63 -0
- data/bin/excel_to_ruby +9 -0
- data/src/commands.rb +2 -0
- data/src/commands/excel_to_c.rb +858 -0
- data/src/commands/excel_to_ruby.rb +620 -0
- data/src/compile.rb +2 -0
- data/src/compile/c.rb +5 -0
- data/src/compile/c/compile_to_c.rb +62 -0
- data/src/compile/c/compile_to_c_header.rb +26 -0
- data/src/compile/c/compile_to_c_unit_test.rb +42 -0
- data/src/compile/c/excel_to_c_runtime.c +2029 -0
- data/src/compile/c/map_formulae_to_c.rb +184 -0
- data/src/compile/c/map_sheet_names_to_c_names.rb +19 -0
- data/src/compile/c/map_values_to_c.rb +85 -0
- data/src/compile/c/map_values_to_c_structs.rb +37 -0
- data/src/compile/ruby.rb +3 -0
- data/src/compile/ruby/compile_to_ruby.rb +33 -0
- data/src/compile/ruby/compile_to_ruby_unit_test.rb +28 -0
- data/src/compile/ruby/excel_to_ruby_runtime.rb +1 -0
- data/src/compile/ruby/map_formulae_to_ruby.rb +95 -0
- data/src/compile/ruby/map_sheet_names_to_ruby_names.rb +19 -0
- data/src/compile/ruby/map_values_to_ruby.rb +65 -0
- data/src/excel.rb +5 -0
- data/src/excel/area.rb +93 -0
- data/src/excel/excel_functions.rb +84 -0
- data/src/excel/excel_functions/abs.rb +14 -0
- data/src/excel/excel_functions/add.rb +18 -0
- data/src/excel/excel_functions/and.rb +30 -0
- data/src/excel/excel_functions/apply_to_range.rb +17 -0
- data/src/excel/excel_functions/average.rb +12 -0
- data/src/excel/excel_functions/choose.rb +18 -0
- data/src/excel/excel_functions/cosh.rb +9 -0
- data/src/excel/excel_functions/count.rb +9 -0
- data/src/excel/excel_functions/counta.rb +8 -0
- data/src/excel/excel_functions/divide.rb +23 -0
- data/src/excel/excel_functions/excel_equal.rb +20 -0
- data/src/excel/excel_functions/excel_if.rb +8 -0
- data/src/excel/excel_functions/excel_match.rb +51 -0
- data/src/excel/excel_functions/find.rb +39 -0
- data/src/excel/excel_functions/iferror.rb +10 -0
- data/src/excel/excel_functions/index.rb +48 -0
- data/src/excel/excel_functions/left.rb +12 -0
- data/src/excel/excel_functions/less_than.rb +26 -0
- data/src/excel/excel_functions/less_than_or_equal.rb +26 -0
- data/src/excel/excel_functions/max.rb +12 -0
- data/src/excel/excel_functions/min.rb +12 -0
- data/src/excel/excel_functions/mod.rb +15 -0
- data/src/excel/excel_functions/more_than.rb +26 -0
- data/src/excel/excel_functions/more_than_or_equal.rb +26 -0
- data/src/excel/excel_functions/multiply.rb +24 -0
- data/src/excel/excel_functions/negative.rb +12 -0
- data/src/excel/excel_functions/not_equal.rb +19 -0
- data/src/excel/excel_functions/number_argument.rb +30 -0
- data/src/excel/excel_functions/pi.rb +7 -0
- data/src/excel/excel_functions/pmt.rb +16 -0
- data/src/excel/excel_functions/power.rb +18 -0
- data/src/excel/excel_functions/round.rb +13 -0
- data/src/excel/excel_functions/rounddown.rb +14 -0
- data/src/excel/excel_functions/roundup.rb +17 -0
- data/src/excel/excel_functions/string_join.rb +19 -0
- data/src/excel/excel_functions/subtotal.rb +13 -0
- data/src/excel/excel_functions/subtract.rb +18 -0
- data/src/excel/excel_functions/sum.rb +8 -0
- data/src/excel/excel_functions/sumif.rb +7 -0
- data/src/excel/excel_functions/sumifs.rb +74 -0
- data/src/excel/excel_functions/sumproduct.rb +32 -0
- data/src/excel/excel_functions/vlookup.rb +49 -0
- data/src/excel/formula_peg.rb +238 -0
- data/src/excel/formula_peg.txt +45 -0
- data/src/excel/reference.rb +56 -0
- data/src/excel/table.rb +108 -0
- data/src/excel_to_code.rb +7 -0
- data/src/extract.rb +13 -0
- data/src/extract/check_for_unknown_functions.rb +20 -0
- data/src/extract/extract_array_formulae.rb +23 -0
- data/src/extract/extract_formulae.rb +36 -0
- data/src/extract/extract_named_references.rb +38 -0
- data/src/extract/extract_relationships.rb +10 -0
- data/src/extract/extract_shared_formulae.rb +23 -0
- data/src/extract/extract_shared_strings.rb +20 -0
- data/src/extract/extract_simple_formulae.rb +18 -0
- data/src/extract/extract_table.rb +24 -0
- data/src/extract/extract_values.rb +29 -0
- data/src/extract/extract_worksheet_dimensions.rb +11 -0
- data/src/extract/extract_worksheet_names.rb +10 -0
- data/src/extract/extract_worksheet_table_relationships.rb +10 -0
- data/src/extract/simple_extract_from_xml.rb +19 -0
- data/src/rewrite.rb +10 -0
- data/src/rewrite/ast_copy_formula.rb +42 -0
- data/src/rewrite/ast_expand_array_formulae.rb +180 -0
- data/src/rewrite/rewrite_array_formulae.rb +71 -0
- data/src/rewrite/rewrite_array_formulae_to_arrays.rb +18 -0
- data/src/rewrite/rewrite_cell_references_to_include_sheet.rb +56 -0
- data/src/rewrite/rewrite_formulae_to_ast.rb +24 -0
- data/src/rewrite/rewrite_merge_formulae_and_values.rb +18 -0
- data/src/rewrite/rewrite_relationship_id_to_filename.rb +22 -0
- data/src/rewrite/rewrite_shared_formulae.rb +38 -0
- data/src/rewrite/rewrite_values_to_ast.rb +28 -0
- data/src/rewrite/rewrite_whole_row_column_references_to_areas.rb +90 -0
- data/src/rewrite/rewrite_worksheet_names.rb +20 -0
- data/src/simplify.rb +16 -0
- data/src/simplify/count_formula_references.rb +58 -0
- data/src/simplify/identify_dependencies.rb +56 -0
- data/src/simplify/identify_repeated_formula_elements.rb +37 -0
- data/src/simplify/inline_formulae.rb +77 -0
- data/src/simplify/map_formulae_to_values.rb +157 -0
- data/src/simplify/remove_cells.rb +18 -0
- data/src/simplify/replace_arrays_with_single_cells.rb +27 -0
- data/src/simplify/replace_blanks.rb +58 -0
- data/src/simplify/replace_common_elements_in_formulae.rb +19 -0
- data/src/simplify/replace_formulae_with_calculated_values.rb +21 -0
- data/src/simplify/replace_indirects_with_references.rb +44 -0
- data/src/simplify/replace_named_references.rb +82 -0
- data/src/simplify/replace_ranges_with_array_literals.rb +54 -0
- data/src/simplify/replace_shared_strings.rb +49 -0
- data/src/simplify/replace_table_references.rb +71 -0
- data/src/simplify/replace_values_with_constants.rb +47 -0
- data/src/simplify/simplify_arithmetic.rb +54 -0
- data/src/util.rb +2 -0
- data/src/util/not_supported_exception.rb +2 -0
- data/src/util/try.rb +9 -0
- metadata +207 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
class ReplaceSharedStringAst
|
2
|
+
|
3
|
+
attr_accessor :shared_strings
|
4
|
+
|
5
|
+
def initialize(shared_strings)
|
6
|
+
@shared_strings = shared_strings.map do |s|
|
7
|
+
s[/^(.*?)\n$/,1]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def map(ast)
|
12
|
+
if ast.is_a?(Array)
|
13
|
+
operator = ast.shift
|
14
|
+
if respond_to?(operator)
|
15
|
+
send(operator,*ast)
|
16
|
+
else
|
17
|
+
[operator,*ast.map {|a| map(a) }]
|
18
|
+
end
|
19
|
+
else
|
20
|
+
return ast
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def shared_string(string_id)
|
25
|
+
[:string,shared_strings[string_id.to_i]]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
class ReplaceSharedStrings
|
31
|
+
|
32
|
+
def self.replace(values,shared_strings,output)
|
33
|
+
self.new.replace(values,shared_strings,output)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Rewrites ast with shared strings to strings
|
37
|
+
def replace(values,shared_strings,output)
|
38
|
+
rewriter = ReplaceSharedStringAst.new(shared_strings.readlines)
|
39
|
+
values.lines do |line|
|
40
|
+
# Looks to match shared string lines
|
41
|
+
if line =~ /\[:shared_string/
|
42
|
+
ref, ast = line.split("\t")
|
43
|
+
output.puts "#{ref}\t#{rewriter.map(eval(ast)).inspect}"
|
44
|
+
else
|
45
|
+
output.puts line
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class ReplaceTableReferenceAst
|
2
|
+
|
3
|
+
attr_accessor :tables, :worksheet, :referring_cell
|
4
|
+
|
5
|
+
def initialize(tables, worksheet = nil, referring_cell = nil)
|
6
|
+
@tables, @worksheet, @referring_cell = tables, worksheet, referring_cell
|
7
|
+
end
|
8
|
+
|
9
|
+
def map(ast)
|
10
|
+
return ast unless ast.is_a?(Array)
|
11
|
+
operator = ast[0]
|
12
|
+
if respond_to?(operator)
|
13
|
+
send(operator,*ast[1..-1])
|
14
|
+
else
|
15
|
+
[operator,*ast[1..-1].map {|a| map(a) }]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def table_reference(table_name,table_reference)
|
20
|
+
return [:error,"#REF!"] unless tables.has_key?(table_name.downcase)
|
21
|
+
tables[table_name.downcase].reference_for(table_name,table_reference,worksheet,referring_cell)
|
22
|
+
end
|
23
|
+
|
24
|
+
def local_table_reference(table_reference)
|
25
|
+
table = tables.values.find do |table|
|
26
|
+
table.includes?(worksheet,referring_cell)
|
27
|
+
end
|
28
|
+
return [:error,"#REF!"] unless table
|
29
|
+
table.reference_for(table.name,table_reference,worksheet,referring_cell)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
class ReplaceTableReferences
|
36
|
+
|
37
|
+
attr_accessor :sheet_name
|
38
|
+
|
39
|
+
def self.replace(*args)
|
40
|
+
self.new.replace(*args)
|
41
|
+
end
|
42
|
+
|
43
|
+
def replace(input,table_data,output)
|
44
|
+
tables = {}
|
45
|
+
table_data.each do |line|
|
46
|
+
table = Table.new(*line.strip.split("\t"))
|
47
|
+
tables[table.name.downcase] = table
|
48
|
+
end
|
49
|
+
|
50
|
+
rewriter = ReplaceTableReferenceAst.new(tables,sheet_name)
|
51
|
+
|
52
|
+
input.lines do |line|
|
53
|
+
# Looks to match shared string lines
|
54
|
+
begin
|
55
|
+
if line =~ /\[(:table_reference|:local_table_reference)/
|
56
|
+
cols = line.split("\t")
|
57
|
+
ast = cols.pop
|
58
|
+
ref = cols.first
|
59
|
+
rewriter.referring_cell = ref
|
60
|
+
output.puts "#{cols.join("\t")}\t#{rewriter.map(eval(ast)).inspect}"
|
61
|
+
else
|
62
|
+
output.puts line
|
63
|
+
end
|
64
|
+
rescue Exception => e
|
65
|
+
puts "Exception at line #{line}"
|
66
|
+
raise
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class MapValuesToConstants
|
2
|
+
|
3
|
+
attr_accessor :constants
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
count = 0
|
7
|
+
@constants = Hash.new do |hash,key|
|
8
|
+
count += 1
|
9
|
+
hash[key] = "C#{count}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def map(ast)
|
14
|
+
return ast unless ast.is_a?(Array)
|
15
|
+
operator = ast[0]
|
16
|
+
if [:number,:percentage,:string].include?(operator)
|
17
|
+
[:constant, constants[ast]]
|
18
|
+
else
|
19
|
+
[operator,*ast[1..-1].map {|a| map(a) }]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
class ReplaceValuesWithConstants
|
27
|
+
|
28
|
+
attr_accessor :rewriter
|
29
|
+
|
30
|
+
def self.replace(*args)
|
31
|
+
self.new.replace(*args)
|
32
|
+
end
|
33
|
+
|
34
|
+
def replace(input,output)
|
35
|
+
@rewriter ||= MapValuesToConstants.new
|
36
|
+
input.lines do |line|
|
37
|
+
begin
|
38
|
+
ref, ast = line.split("\t")
|
39
|
+
output.puts "#{ref}\t#{rewriter.map(eval(ast)).inspect}"
|
40
|
+
rescue Exception => e
|
41
|
+
puts "Exception at line #{line}"
|
42
|
+
raise
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class SimplifyArithmeticAst
|
2
|
+
|
3
|
+
def map(ast)
|
4
|
+
return ast unless ast.is_a?(Array)
|
5
|
+
operator = ast[0]
|
6
|
+
if respond_to?(operator)
|
7
|
+
send(operator,*ast[1..-1])
|
8
|
+
else
|
9
|
+
[operator,*ast[1..-1].map {|a| map(a) }]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def brackets(*args)
|
14
|
+
raise NotSupportedException.new("Multiple arguments not supported in brackets #{args.inspect}") if args.size > 1
|
15
|
+
map(args.first)
|
16
|
+
end
|
17
|
+
|
18
|
+
def arithmetic(*args)
|
19
|
+
return map(args.first) if args.size == 1
|
20
|
+
return [:arithmetic,*args.map {|a| map(a) }] if args.size == 3
|
21
|
+
[['^'],['*','/'],['+','-']].each do |op|
|
22
|
+
i = args.find_index { |a| a[0] == :operator && op.include?(a[1])}
|
23
|
+
next unless i
|
24
|
+
pre_operation = i == 1 ? [] : args[0..(i-2)]
|
25
|
+
operation = args[(i-1)..(i+1)]
|
26
|
+
post_operation = (i + 2) > args.size ? [] : args[(i+2)..-1]
|
27
|
+
return arithmetic(*pre_operation.map {|a| map(a) },[:arithmetic,*operation],*post_operation.map {|a| map(a) })
|
28
|
+
end
|
29
|
+
return [:arithmetic,*args.map {|a| map(a) }]
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
class SimplifyArithmetic
|
36
|
+
|
37
|
+
def self.replace(*args)
|
38
|
+
self.new.replace(*args)
|
39
|
+
end
|
40
|
+
|
41
|
+
def replace(input,output)
|
42
|
+
rewriter = SimplifyArithmeticAst.new
|
43
|
+
input.lines do |line|
|
44
|
+
# Looks to match lines with references
|
45
|
+
if line =~ /:arithmetic/
|
46
|
+
content = line.split("\t")
|
47
|
+
ast = eval(content.pop)
|
48
|
+
output.puts "#{content.join("\t")}\t#{rewriter.map(ast).inspect}"
|
49
|
+
else
|
50
|
+
output.puts line
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/src/util.rb
ADDED
data/src/util/try.rb
ADDED
metadata
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: excel_to_code
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thomas Counsell, Green on Black Ltd
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-04-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nokogiri
|
16
|
+
requirement: &70298839691560 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.5.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70298839691560
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70298839691040 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.7.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70298839691040
|
36
|
+
description: ! "# excel_to_code\n\nConverts some excel spreadsheets (.xlsx, not .xls)
|
37
|
+
into some other programming languages (currently ruby or c).\nThis allows the excel
|
38
|
+
spreadsheets to be run programatically, without excel.\n\nIts cannonical source
|
39
|
+
is at http://github.com/tamc/excel2code\n\n# Running excel_to_code\n\nTo just have
|
40
|
+
a go:\n\n\t./bin/excel_to_c <excel_file_name>\n\t\nNB:For small spreadsheets this
|
41
|
+
will take a minute or so. For large spreadsheets it is best to run it overnight.\n\t\nfor
|
42
|
+
more detail:\n\t\n\t./bin/excel_to_c --compile --run-tests --settable <name of input
|
43
|
+
worksheet> --prune-except <name of output worksheet> <excel file name> \n\t\nthis
|
44
|
+
should work:\n\n\t./bin/excel_to_c --help\n\n# Testing excel_to_code\n\n1. Make
|
45
|
+
sure you have ruby 1.9.2 or later installed\n2. gem install bundler # May need to
|
46
|
+
use sudo\n3. bundle\n4. rspec spec/*\n\n# Hacking excel_to_code\n\nThere are some
|
47
|
+
how to guides in the doc folder. \n\n# Limitations\n\n1. Not tested at all on Windows\n2.
|
48
|
+
INDIRECT formula must be convertable at runtime into a standard formula\n3. Doesn't
|
49
|
+
implement all functions (see doc/Which_functions_are_implemented.md)\n4. Doesn't
|
50
|
+
implement references that involve range unions and lists\n5. Sometimes gives cells
|
51
|
+
as being empty, when excel would give the cell as having a numeric value of zero\n"
|
52
|
+
email: tamc@greenonblack.com
|
53
|
+
executables:
|
54
|
+
- excel_to_c
|
55
|
+
- excel_to_ruby
|
56
|
+
extensions: []
|
57
|
+
extra_rdoc_files: []
|
58
|
+
files:
|
59
|
+
- README
|
60
|
+
- src/commands/excel_to_c.rb
|
61
|
+
- src/commands/excel_to_ruby.rb
|
62
|
+
- src/commands.rb
|
63
|
+
- src/compile/c/compile_to_c.rb
|
64
|
+
- src/compile/c/compile_to_c_header.rb
|
65
|
+
- src/compile/c/compile_to_c_unit_test.rb
|
66
|
+
- src/compile/c/excel_to_c_runtime.c
|
67
|
+
- src/compile/c/map_formulae_to_c.rb
|
68
|
+
- src/compile/c/map_sheet_names_to_c_names.rb
|
69
|
+
- src/compile/c/map_values_to_c.rb
|
70
|
+
- src/compile/c/map_values_to_c_structs.rb
|
71
|
+
- src/compile/c.rb
|
72
|
+
- src/compile/ruby/compile_to_ruby.rb
|
73
|
+
- src/compile/ruby/compile_to_ruby_unit_test.rb
|
74
|
+
- src/compile/ruby/excel_to_ruby_runtime.rb
|
75
|
+
- src/compile/ruby/map_formulae_to_ruby.rb
|
76
|
+
- src/compile/ruby/map_sheet_names_to_ruby_names.rb
|
77
|
+
- src/compile/ruby/map_values_to_ruby.rb
|
78
|
+
- src/compile/ruby.rb
|
79
|
+
- src/compile.rb
|
80
|
+
- src/excel/area.rb
|
81
|
+
- src/excel/excel_functions/abs.rb
|
82
|
+
- src/excel/excel_functions/add.rb
|
83
|
+
- src/excel/excel_functions/and.rb
|
84
|
+
- src/excel/excel_functions/apply_to_range.rb
|
85
|
+
- src/excel/excel_functions/average.rb
|
86
|
+
- src/excel/excel_functions/choose.rb
|
87
|
+
- src/excel/excel_functions/cosh.rb
|
88
|
+
- src/excel/excel_functions/count.rb
|
89
|
+
- src/excel/excel_functions/counta.rb
|
90
|
+
- src/excel/excel_functions/divide.rb
|
91
|
+
- src/excel/excel_functions/excel_equal.rb
|
92
|
+
- src/excel/excel_functions/excel_if.rb
|
93
|
+
- src/excel/excel_functions/excel_match.rb
|
94
|
+
- src/excel/excel_functions/find.rb
|
95
|
+
- src/excel/excel_functions/iferror.rb
|
96
|
+
- src/excel/excel_functions/index.rb
|
97
|
+
- src/excel/excel_functions/left.rb
|
98
|
+
- src/excel/excel_functions/less_than.rb
|
99
|
+
- src/excel/excel_functions/less_than_or_equal.rb
|
100
|
+
- src/excel/excel_functions/max.rb
|
101
|
+
- src/excel/excel_functions/min.rb
|
102
|
+
- src/excel/excel_functions/mod.rb
|
103
|
+
- src/excel/excel_functions/more_than.rb
|
104
|
+
- src/excel/excel_functions/more_than_or_equal.rb
|
105
|
+
- src/excel/excel_functions/multiply.rb
|
106
|
+
- src/excel/excel_functions/negative.rb
|
107
|
+
- src/excel/excel_functions/not_equal.rb
|
108
|
+
- src/excel/excel_functions/number_argument.rb
|
109
|
+
- src/excel/excel_functions/pi.rb
|
110
|
+
- src/excel/excel_functions/pmt.rb
|
111
|
+
- src/excel/excel_functions/power.rb
|
112
|
+
- src/excel/excel_functions/round.rb
|
113
|
+
- src/excel/excel_functions/rounddown.rb
|
114
|
+
- src/excel/excel_functions/roundup.rb
|
115
|
+
- src/excel/excel_functions/string_join.rb
|
116
|
+
- src/excel/excel_functions/subtotal.rb
|
117
|
+
- src/excel/excel_functions/subtract.rb
|
118
|
+
- src/excel/excel_functions/sum.rb
|
119
|
+
- src/excel/excel_functions/sumif.rb
|
120
|
+
- src/excel/excel_functions/sumifs.rb
|
121
|
+
- src/excel/excel_functions/sumproduct.rb
|
122
|
+
- src/excel/excel_functions/vlookup.rb
|
123
|
+
- src/excel/excel_functions.rb
|
124
|
+
- src/excel/formula_peg.rb
|
125
|
+
- src/excel/formula_peg.txt
|
126
|
+
- src/excel/reference.rb
|
127
|
+
- src/excel/table.rb
|
128
|
+
- src/excel.rb
|
129
|
+
- src/excel_to_code.rb
|
130
|
+
- src/extract/check_for_unknown_functions.rb
|
131
|
+
- src/extract/extract_array_formulae.rb
|
132
|
+
- src/extract/extract_formulae.rb
|
133
|
+
- src/extract/extract_named_references.rb
|
134
|
+
- src/extract/extract_relationships.rb
|
135
|
+
- src/extract/extract_shared_formulae.rb
|
136
|
+
- src/extract/extract_shared_strings.rb
|
137
|
+
- src/extract/extract_simple_formulae.rb
|
138
|
+
- src/extract/extract_table.rb
|
139
|
+
- src/extract/extract_values.rb
|
140
|
+
- src/extract/extract_worksheet_dimensions.rb
|
141
|
+
- src/extract/extract_worksheet_names.rb
|
142
|
+
- src/extract/extract_worksheet_table_relationships.rb
|
143
|
+
- src/extract/simple_extract_from_xml.rb
|
144
|
+
- src/extract.rb
|
145
|
+
- src/rewrite/ast_copy_formula.rb
|
146
|
+
- src/rewrite/ast_expand_array_formulae.rb
|
147
|
+
- src/rewrite/rewrite_array_formulae.rb
|
148
|
+
- src/rewrite/rewrite_array_formulae_to_arrays.rb
|
149
|
+
- src/rewrite/rewrite_cell_references_to_include_sheet.rb
|
150
|
+
- src/rewrite/rewrite_formulae_to_ast.rb
|
151
|
+
- src/rewrite/rewrite_merge_formulae_and_values.rb
|
152
|
+
- src/rewrite/rewrite_relationship_id_to_filename.rb
|
153
|
+
- src/rewrite/rewrite_shared_formulae.rb
|
154
|
+
- src/rewrite/rewrite_values_to_ast.rb
|
155
|
+
- src/rewrite/rewrite_whole_row_column_references_to_areas.rb
|
156
|
+
- src/rewrite/rewrite_worksheet_names.rb
|
157
|
+
- src/rewrite.rb
|
158
|
+
- src/simplify/count_formula_references.rb
|
159
|
+
- src/simplify/identify_dependencies.rb
|
160
|
+
- src/simplify/identify_repeated_formula_elements.rb
|
161
|
+
- src/simplify/inline_formulae.rb
|
162
|
+
- src/simplify/map_formulae_to_values.rb
|
163
|
+
- src/simplify/remove_cells.rb
|
164
|
+
- src/simplify/replace_arrays_with_single_cells.rb
|
165
|
+
- src/simplify/replace_blanks.rb
|
166
|
+
- src/simplify/replace_common_elements_in_formulae.rb
|
167
|
+
- src/simplify/replace_formulae_with_calculated_values.rb
|
168
|
+
- src/simplify/replace_indirects_with_references.rb
|
169
|
+
- src/simplify/replace_named_references.rb
|
170
|
+
- src/simplify/replace_ranges_with_array_literals.rb
|
171
|
+
- src/simplify/replace_shared_strings.rb
|
172
|
+
- src/simplify/replace_table_references.rb
|
173
|
+
- src/simplify/replace_values_with_constants.rb
|
174
|
+
- src/simplify/simplify_arithmetic.rb
|
175
|
+
- src/simplify.rb
|
176
|
+
- src/util/not_supported_exception.rb
|
177
|
+
- src/util/try.rb
|
178
|
+
- src/util.rb
|
179
|
+
- bin/excel_to_c
|
180
|
+
- bin/excel_to_ruby
|
181
|
+
homepage: http://github.com/tamc/excel2code
|
182
|
+
licenses: []
|
183
|
+
post_install_message:
|
184
|
+
rdoc_options: []
|
185
|
+
require_paths:
|
186
|
+
- src
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
189
|
+
requirements:
|
190
|
+
- - ~>
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: 1.9.1
|
193
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
requirements: []
|
200
|
+
rubyforge_project:
|
201
|
+
rubygems_version: 1.8.10
|
202
|
+
signing_key:
|
203
|
+
specification_version: 3
|
204
|
+
summary: Converts .xlxs files into pure ruby 1.9 code or pure C code so that they
|
205
|
+
can be executed without excel
|
206
|
+
test_files: []
|
207
|
+
has_rdoc: false
|