История изменений
Исправление
sdio,
(текущая версия)
:
Единственная предложенная в треде библиотека (для ruby) формул, насколько я понимаю, не умеет.
Что надо ТСу не известно, а меня заказчик попросил заполнять расчитанными данными его заранее оформленный xls. Я в нужные ячейки его екселя записал ключи типа %VAR1% , %VAR2% ... и в руби-скрипте просто заменяю их на значения
упрощенно так
#!/usr/bin/ruby
require 'spreadsheet'
params = Hash.new;
File.open("tech_data.txt").each {|line|
arr = line.split(',',4)
key = arr[2]
if ! key.empty? && key =~ /^%.*%$/ then
params[key] = arr[3].chomp
end
}
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet.open 'report_base.xls'
sheet = book.worksheet 0
sheet.each do |row|
row.each_index do |idx|
cell = row[idx]
if cell =~ /^%.*%$/ then
row[idx] = params[cell]
end
end
end
book.write 'report.xls'
#=====
tech_data.txt
01,Number of layers,%LAYNUM%,6
02,Min drill,%MIN_DRILL%,11.811
03,Min pad,%MIN_PAD%,23.622
04,Min line width,%MIN_LINE_WIDTH%,11
05,Min lines space,%MIN_LINE_GAP%,10
06,PCB type,%PCB_TYPE%,FOIL
.... более 60 параметров
Исходная версия
sdio,
:
Единственная предложенная в треде библиотека (для ruby) формул, насколько я понимаю, не умеет.
Что надо ТСу не известно, а меня заказчик попросил заполнять расчитанными данными его заранее оформленный xls. Я в нужные ячейки его екселя записал ключи типа %VAR1% , %VAR2% ... и в руби-скрипте просто заменяю их на значения
упрощенно так
#!/usr/bin/ruby
require 'spreadsheet'
params = Hash.new;
File.open("tech_data.txt").each {|line|
arr = line.split(',',4)
key = arr[2]
if ! key.empty? && key =~ /^%.*%$/ then
params[key] = arr[3].chomp
end
}
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet.open 'report_base.xls'
sheet = book.worksheet 0
sheet.each do |row|
row.each_index do |idx|
cell = row[idx]
if cell =~ /^%.*%$/ then
# puts "#{cell} = #{params[cell]}"
row[idx] = params[cell]
end
end
end
book.write 'report.xls'
#=====
tech_data.txt
01,Number of layers,%LAYNUM%,6
02,Min drill,%MIN_DRILL%,11.811
03,Min pad,%MIN_PAD%,23.622
04,Min line width,%MIN_LINE_WIDTH%,11
05,Min lines space,%MIN_LINE_GAP%,10
06,PCB type,%PCB_TYPE%,FOIL
.... более 60 параметров