2008-10-06 1 views
13

사용자 제공 문서에서 텍스트와 이미지를 가져와야하는 웹 프로젝트가 있으며 가능한 형식 중 하나는 Microsoft Office 2007입니다. 이 형식으로 문서를 생성해야 할 필요가 있습니다.Microsoft Office 2007 파일 (.docx, .xlsx, .pptx) 구문 분석 및 생성

서버는 CentOS 5.2를 실행하며 PHP/Perl/Python이 설치되어 있습니다. 필요한 경우 로컬 바이너리와 쉘 스크립트를 실행할 수 있습니다. 우리는 아파치 2.2를 사용하지만 일단 라이브가되면 Nginx로 전환 할 것입니다.

내 옵션에는 어떤 것이 있습니까? 누구나이 경험이 있었습니까?

답변

17

Office 2007 파일 형식은 열려 있고 well documented입니다. 대략 "x"로 끝나는 모든 새로운 파일 형식은 압축 된 XML 문서입니다. 예를 들어 :

는 Word 2007의 XML 파일이 파일과 부품을 저장할 임시 폴더를 만듭니다 엽니 다.

텍스트, 그림 및 기타 요소가 포함 된 Word 2007 문서를 .docx 파일로 저장합니다.

파일 이름 끝에 .zip 확장명을 추가하십시오.

파일을 두 번 클릭하십시오. ZIP 응용 프로그램은 으로 열립니다. 파일을 구성하는 부분을 볼 수 있습니다.

이전에 작성한 폴더에 부품의 압축을 풉니 다.

다른 파일 형식은 대략 비슷합니다. 나는 아직 그들과 상호 작용할 수있는 오픈 소스 라이브러리를 모른다. 그러나 정확한 요구 사항에 따라 간단한 문서를 읽고 쓰는 것이 너무 어려워 보이지는 않는다. 물론 이전 형식보다 훨씬 쉽습니다.

이전 형식을 읽어야 할 경우 OpenOffice에는 API가 있으며 더 많이 또는 덜 성공적으로 Office 2003 및 이전 문서를 읽고 쓸 수 있습니다.

+0

이것은 훌륭합니다. 통찰력에 감사드립니다. – Brian

2

Sphider의 코드를 확인할 수 있습니다. 그들은 docs와 pdfs, 그래서 나는 그들이 그것을 읽을 수 있다고 확신합니다. 다른 Office 형식의 올바른 방향으로 인도 할 수도 있습니다.

3

OpenXML Format SDK 프로젝트에서 성공적으로 코드를 통해 Excel 스프레드 시트를 수정했습니다. .NET이 필요하며 Mono에서 얼마나 잘 작동하는지 잘 모르겠습니다.

6

python docx 모듈은 pure Python에서 형식이 지정된 Microsoft office docx 파일을 생성 할 수 있습니다. 상자 밖에서는 헤더, 단락, 표 및 글 머리 기호를 처리하지만 makeelement() 모듈을 확장하여 이미지와 같은 임의의 요소를 처리 할 수 ​​있습니다.

from docx import * 
document = newdocument() 

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0] 

# Append two headings 
docbody.append(heading('Heading',1) ) 
docbody.append(heading('Subheading',2)) 
docbody.append(paragraph('Some text') 
관련 문제