Hi,
I am trying to do some converting from xml data and write the reports to
Excel. it works very well for English, however, the Unicode data will be
messing in the excel, how should I do it.
the class I am using to write Excel:
require ‘win32ole’
require “iconv”
class ExcelConst
end
class ExcelHelper
def initialize()
@excel_app = WIN32OLE.new(“Excel.Application”)
puts “Excel failed to start” unless @excel_app
@excel_app.Visible = false
@workbook = @excel_app.Workbooks.Add
@sheet = @workbook.Worksheets(1)
puts “Excel failed to get wowksheet” unless @sheet
@row =1
#WIN32OLE.const_load(@excel_app, ExcelConst)
end
def write_header(header_data)
@row = 1
col = 0
header_data.each{ |cell| begin
col_name = (?A + col).chr
range = @sheet.Range("#{col_name}#{@row}")
range.value = cell
col = col+1
end
}
@sheet.Rows(1).Font.Bold = true
@sheet.Rows(1).Font.Size = 14
#@sheet.Rows(1).Font.ColorIndex = 5 #set to blue
@sheet.Rows(1).Interior.ColorIndex = 37 #set to light blue
@sheet.Rows(1).RowHeight = 25
end
def set_column_width(width_list)
col =0
width_list.each{ |width| begin
col_name = (?A + col).chr
@sheet.Columns(col_name).ColumnWidth = width
col = col+1
end
}
end
def write_row(data)
@row =2 if @row <2
p data
col = 0
data.each{ |cell| begin
col_name = (?A + col).chr
range = @sheet.Range("#{col_name}#{@row}")
range.value = cell
p cell
col = col+1
end
}
@row = @row+1
end
def save(filename)
#@sheet.Columns.AutoFit()
excel97_2003_format = -4143
#pwd = Dir.pwd.gsub(’/’,’\’) << ‘\’
#otherwise, it sticks it in default save directory-
C:\Users\Sam\Documents on my system
@workbook.SaveAs(filename, excel97_2003_format)
end
def quit()
if(@excel_app != nil) then
@excel_app.Quit
@excel_app = nil
end
end
end
thank you
–
Best regards,
Liang