excelinator icon indicating copy to clipboard operation
excelinator copied to clipboard

Is there a way to specify field types?

Open facundofarias opened this issue 9 years ago • 4 comments

Once we have the CSV file as XLS, all the data it's taken as text, and I would like to have as the datatype they are, such as: Number, Date, etc.

Is there a way to specify this? (Like an options hash or something) Thanks!

facundofarias avatar Oct 23 '15 08:10 facundofarias

I didn't submit a PR adding this code yet but I have something that may be helpful for you.

module Excelinator
  def self.array_to_xls(array)
    book = Spreadsheet::Workbook.new
    sheet = book.create_worksheet
    array.each_with_index do |row_data, index|
      row = sheet.row(index)
      row_data.each_with_index do |cell_data, row_index|
        if cell_data.kind_of?(Date)
          row.set_format row_index, Spreadsheet::Format.new(:number_format => 'MM/DD/YYYY')
        end
        row.push(cell_data)
      end
    end
    content = ''
    ios = StringIO.new(content)
    book.write(ios)
    content
  end
end

tapajos avatar Oct 23 '15 09:10 tapajos

Hey, yes! It's seems to be the feature that I need. How can I integrate this code with the Excelinator I am using? By cloning the repo? Would this feature be enabled in the future? Thanks a lot!

facundofarias avatar Oct 23 '15 13:10 facundofarias

I'm planning submit a PR adding something like that but it needs to be improved to work with other types.

To be honest, you don't need Excelinator for that, you can use https://github.com/zdavatz/spreadsheet directly (if you don't need anything else from Excelinator).

tapajos avatar Oct 23 '15 13:10 tapajos

Yeah, Excelinator is just a little bit of glue code.

chrismo avatar Jan 12 '16 01:01 chrismo