2013-07-31 2 views
3

Excel (https://github.com/railscasts/362-exporting-csv-and-excel)로 내보내기하는 방법에 대한 Ryan Bates의 Railscasts Episode # 362의 예제 응용 프로그램을 사용할 때 .xls 파일을 열면 경고 메시지가 나타납니다. "Excel로 다운로드"링크를 사용하여 다운로드 할 수 있습니다.Railscasts Episode # 362 - Excel로 내보내기 : Excel 2010에서 파일을 열 때 주어진 경고 메시지를 피하는 방법?

경고 읽

"열려고하는 파일 ... 파일 확장자에 의해 지정된 것보다 다른 형식으로 파일이 손상되어 열기 전에 원본을 신뢰할 수 없습니다되어 있는지 확인합니다. 파일을 열시겠습니까? "

'예'를 클릭하면 파일을 열 수 있습니다. Excel 2011을 사용할 때 경고 메시지가 표시되지 않습니다 (Mac의 경우). 그러나 사용자가 내 사이트에서 이러한 파일을 다운로드 할 때 경고 메시지를 표시하지 않는 Excel 파일을 제공 할 수 있기를 원합니다.

참고 : 응용 프로그램의 모든 참조를 .xls에서 .xlsx로 바꾸려고 시도했지만 Excel에서 파일을 열 수 없습니다. "Excel에서이 파일을 열 수 없습니다. 파일 형식이나 파일 확장자가 유효하지 않습니다. 파일이 손상되지 않았는지, 파일 확장명이 파일 형식과 일치하는지 확인하십시오." 나는 그런 AXLSX (https://github.com/randym/axlsx)으로 보석을 알고,하지만 난 그냥 엑셀 2010에서 경고 메시지를 제거하기 위해 Railscasts 방법을 사용하고 빠른 수정을 만들 수있는 기대했다

는 당신에게 당신을 위해 너무 많은 감사 도움!

답변

7

Railscasts 응용 프로그램에서 생성 된 xls 파일은 실제로 이전 Excel 2003 XML 형식의 XML 파일입니다. 엑셀의

최신 버전의 파일 형식이 파일 확장명과 일치하지 않을 때 기능이 경고를 생성 Extension Hardening라고 있습니다

경고가 확장 강화라는 엑셀 2007의 새로운 보안 기능입니다을하는 열려있는 파일 컨텐츠가 파일을 열려고 시도하는 쉘 명령에 지정된 확장 유형과 일치하는지 확인합니다. 위에 나열된 MIME 형식이 .XLS 확장명과 연결되어 있으므로이 경고 메시지없이 열려면 파일이 XLS (BIFF8) 파일 형식이어야합니다.

이 경고를 피하려면 파일 확장자와 일치하는 형식으로 Excel 파일을 생성해야합니다. 위의 링크에서 해결 방법으로 제안 된대로 레지스트리를 편집하는 것은 실제로 실용적이지 않습니다. 확장을 xml로 변경하면 작동 할 수도 있습니다.

xlsx의 경우 writeexcel, xlsx 및 AXLSX의 경우 write_xlsx (위에서 언급 한)은 좋은 옵션입니다.

2

는 사실, 코드가 생성 :

<?xml version="1.0"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:x="urn:schemas-microsoft-com:office:excel" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:html="http://www.w3.org/TR/REC-html40"> 
    <Worksheet ss:Name="Sheet1"> 
    <Table> 
     <Row> 
     <Cell><Data ss:Type="String">ID</Data></Cell> 
     <Cell><Data ss:Type="String">Name</Data></Cell> 
     <Cell><Data ss:Type="String">Release Date</Data></Cell> 
     <Cell><Data ss:Type="String">Price</Data></Cell> 
     </Row> 
    <% @products.each do |product| %> 
     <Row> 
     <Cell><Data ss:Type="Number"><%= product.id %></Data></Cell> 
     <Cell><Data ss:Type="String"><%= product.name %></Data></Cell> 
     <Cell><Data ss:Type="String"><%= product.released_on %></Data></Cell> 
     <Cell><Data ss:Type="Number"><%= product.price %></Data></Cell> 
     </Row> 
    <% end %> 
    </Table> 
    </Worksheet> 
</Workbook> 

작동합니다 .XML 할 파일의 이름을 변경

(XLS는 바이너리 형식, XLST 압축 형식입니다) XML이다

관련 문제