LINUX.ORG.RU

История изменений

Исправление 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 параметров