Hi,
Hi All,
I think I just found a bug in Win32OLE,
When I read a cell which has Korean or Chinese Character Text from Excel2003
with Win32Ole, whatever the text is, the value of the cell is always '???'
My environment is WinXP Sp3, Office2003, Ruby is 1.8.6 (I also test the
1.9.0, it still returns ???)
I use the parseexcel, and it can read the cell content correctly.
I attched the test codes and test file.
In the excel file, there are 2 cells, first cell is Koean Text, 2nd cell is
Chinese Text.
test.rb is used Win32Ole.
test2.rb is used parseexcel, if you want use this, please:Gem Install
parseexcel
test.xls is the excel file
Thanks for alex's help.
BR
Nan
That is not a bug.
You must use WIN32OLE.codepage in case of the mixed character set handling:
Here is a working code for my Korean WinXP SP3 based on your test.rb:
require 'win32ole'
require 'iconv'
def read_excel(e_name, s_name)
$excel.WorkBooks.Open("#{$MY_LOCATION}/" + e_name,TRUE)
$excel.WorkSheets(s_name).Activate
begin
puts $excel.Cells(1,1).value
puts $excel.Cells(1,2).value
$excel.Cells(1,1).text.to_s.each_byte{|c| print c, ' '}
puts Iconv.conv("EUC-KR//IGNORE","UTF-8//IGNORE",$excel.Cells(1,1).value)
ensure
$excel.WorkBooks.Close()
end
end
$MY_LOCATION = Dir.getwd
WIN32OLE.codepage = WIN32OLE::CP_UTF8
$excel = WIN32OLE.new("excel.application")
$excel.Visible = false
begin
read_excel('test.xls',"Sheet1")
ensure
$excel.Quit()
end
Regards,
Park Heesob
···
2008/9/16 Wu Nan <i.wunan+rubymail@gmail.com>: