excel_to_code 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|