2012-08-29 1 views
0

데이터를 Spreadsheet gem과 Ruby on Rails를 사용하여 Excel 파일로 내보내는 중입니다. 내 Excel 파일에 머리글과 바닥 글을 추가하고 싶습니다. 문제는 내가 이것을 할 때, 저작권 기호, 앰퍼샌드 기호 및 등록 된 기호가 표시되지 않습니다. 다중 바이트 문자 오류가 발생하거나 단순히 아무것도 표시하지 않습니다.©, & symbol in을 Ruby on Rails로 Excel

# 인코딩 UTF-8 및 "UTF-8 -- - - 코딩 #"모든 유사한 문제를 통과하고 노력했다. 그것은 쓸모가 없다. 이스케이프 시퀀스 ("\ u00A9"- 유니 코드 코드)를 사용하려고하면 파일 형식이 손상됩니다. 이 문제에 대한 가능한 해결책은 무엇입니까? 내가 놓친 게 있니? 친절히 도와주세요. 이 코드는 나를 위해 작동 사전

답변

0

감사 :

def do_test 
    book = Spreadsheet::Workbook.new 
    sheet1 = book.create_worksheet 
    sheet1[0,0] = "\u00a9" 
    book.write "./sample.xls" 
end 

당신이 어떤 점에서 UTF-8 이외의 다른 스프레드 시트 인코딩을 설정했을 수 가능성이 있습니다. Spreadsheet.client_encoding을 확인하여 사용중인 것을 확인할 수 있습니다.

UPDATE

add_header/footer 코드는 매우 특정 인코딩된다.

def write_header 
    write_op opcode(:header), [@worksheet.header.bytesize, 0].pack("vC"), @worksheet.header 
end 

엑셀 작가는 기본적으로 유니 코드-1200 (UTF-16 리틀 엔디안)을 사용하고 있습니다 : 여기에 사용되는 코드입니다. 즉,이 기능을 사용하려면 "\u00a9".encode('UTF-16LE')을 사용하여 비표준 문자를 인코딩해야 할 수도 있습니다 ...

+0

예 : Excel 시트의 내용 @PinnyM에서 작동합니다. 하지만 나는 인쇄하는 동안 Excel의 헤더에 기호를 추가하고 싶습니다. 그렇게하는 동안 파일이 손상되었다고합니다. 또한 UTF-8 만 client_encoding 확인했습니다. – Raj

+0

맨 위 행의 '머리글'또는 시트 이름 또는 다른 것? 아마도 당신이 무엇을하려고하는지 보여주는 몇 가지 코드를 게시하면 도움이 될 것입니다 ... – PinnyM

+0

이것은 내 controller.rb에 쓴 코드입니다. sheet.add_header ("Company Name") sheet.add_footer ("Company Name ©") 이렇게하면, 해당 파일을 작성한 후 파일을 열려고하면 파일 형식 오류가 발생합니다. 그래서 나는 다음과 같이 기호를 추가하려고 시도했다. sheet.add_footer ("회사 명 \ u00a9"). 이렇게하면 잘못된 멀티 바이트 문자 (US-ASCII) 오류가 발생합니다. – Raj