2012-06-19 4 views
2

다음 두 가지 문제가 발생합니다.이 두 가지 문제 중 하나를 해결해야 내 프로젝트를 수행 할 수 있습니다. ".doc"파일을 읽는 방법 또는 ASP.NET을 사용하여 ".docx"파일로 변환하는 방법

그래서 여기

는 것들이다 :
  1. 어떻게 말씀 자동화 또는이 Aspose.Words처럼 SDK를 지불를 사용하지 않고 ".DOC"파일, 을 읽을 수 있습니다.

  2. 는 방법 ".DOC"파일을 ".DOCX"변환 (첫 번째는 가능하지 않은 경우)? Word 자동화 또는 Aspose.Words과 같은 유료 SDK를 사용하지 않아도됩니다.

검색된 내용이 많아서 .docx 용 오픈 소스 솔루션을 발견했습니다.

이 작업은 서버에서 수행되므로 아무 워드도 설치되지 않습니다.

+0

참조 스레드 - http://stackoverflow.com/questions/1803576/convert-word-doc-file-to-docx-on-a-server -without-word – adatapost

+0

자세한 참조 스레드 - http://stackoverflow.com/questions/2405417/automation-how-to-automate-transforming-doc-to-docx – Holf

답변

2

NPOI - .NET으로 작성되었으며 무료이며 오픈 소스입니다. roadmap은 앞으로 새로운 형식의 생성을 지원할 예정이지만 이전 버전을 사용하여 이전 형식을 읽고 다른 표준을 사용하여 새로운 형식을 작성할 수 있습니다 (the MS spec here 참조).

+0

이 단계에서이 라이브러리는 여전히 프로덕션 용도로 .doc 파일을 읽는 것을 지원하지 않는 것으로 보입니다. – Sam

1

오픈 소스를 원할 경우 OpenXML SDK을 사용할 수 있습니다. 그렇지 않으면 Interop.Word API를 사용하는 .NET에서 옵션이 있습니다. 이 API를 사용하여 파일을 열고 docx로 저장할 수 있습니다.

http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word(v=office.11).aspx

하지만이 단어를 필요는 컴퓨터에 설치합니다.

+1

OpenXML SDK가 .doc 파일을 처리 할 수 ​​있다고 생각하지 않습니다. 형식. – Holf

+2

Op 지정 없음 Word 설치가 가능합니다. –

1

이 작업을 수행 한 Microsoft 대량 변환 도구가 있습니다. 찾았습니다 reference here.

그렇지 않으면 Word Automation을 사용할 수밖에 없어요. 결국 OpenOffice도 일부 .doc 파일을 열어 .docx/OpenXML로 변환하는 데 어려움을 겪습니다. 이는 어떤 종류의 구문 분석 도구를 직접 작성하는 것이 번거로울 수 있음을 의미합니다.

+0

이렇게하려면 ** Microsoft Office 호환 기능 팩 **을 서버에 설치해야합니다. 올바른 버전이 아니기 때문입니다. –

+1

두 점 : 원래 게시물에 '단어 없음'이 지정되었습니다. MS Office 호환 기능 팩을 독립적으로 설치할 수 있다고 생각합니다. 둘째, 등이 사용할 수있는 거기에 유틸리티, '-nme "C \ 프로그램 파일 \ 마이크로 소프트 오피스 \ 여기서 Office12 \ wordconv.exe"-oice은 ', 자신의 작업, 또는 몇 종속성이 있습니다 . 총에 맞을만한 가치가 있을지도 모릅니다. – Holf

+0

동의했는데, 내 자신의 서버가 아니기 때문에 나는 호스팅 제공 업체로부터 공간을 차지할 것이기 때문에 이에 대해 확신하지 못합니다. 따라서 일부 호스트에서 문제가 발생할 수 있습니다. –

1
당신이 순수 .NET 솔루션을 주사를 할 수 있습니다

:

b2xtranslator

이 서버에서 Office 응용 프로그램을 설치할 필요가 없습니다.

+0

샘플을 추가 할 수 있습니까? – zed

+0

, 나는 [.NET 핵심이 업그레이드] 한 (https://github.com/EvolutionJobs/b2xtranslator)과 예'b2xtranslator.WordprocessingMLMapping.Converter.Convert (새 WordDocument (StructuredStorageReader (파일 이름)) 될 것 @zed WordprocessingDocument.Create (fileName + "x", DocumentType.Document)) ' – Keith

1

나는 또한 동일한 문제에 직면했다. .doc을 .docx로 변환하려면 Microsoft.Office.Interop.Word 라이브러리를 사용할 수 있습니다. 그것은 나를 위해 작동합니다. 여기에 코드가 있습니다.

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using Word = Microsoft.Office.Interop.Word; 
    using System.Reflection; 
    using System.IO; 


namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      Word._Application application = new Word.Application(); 
      object fileformat = Word.WdSaveFormat.wdFormatXMLDocument; 
      DirectoryInfo directory = new DirectoryInfo(@"D:\abc"); 
      foreach (FileInfo file in directory.GetFiles("*.doc", SearchOption.AllDirectories)) 
      { 
       if (file.Extension.ToLower() == ".doc") 
       { 
        object filename = file.FullName; 
        object newfilename = file.FullName.ToLower().Replace(".doc", ".docx"); 
        Word._Document document = application.Documents.Open(filename); 

        document.Convert(); 
        document.SaveAs(newfilename, fileformat); 
        document.Close(); 
        document = null; 
       } 
      } 
      application.Quit(); 
      application = null; 




     } 
    } 
} 
그것은 또한 당신을 위해 작동합니다

..

+0

document.Convert() 줄이 필요합니까? 그것은 내게 문제를주고 있고 .SaveAs() 또한 fileformat 인수로 변환 처리 할 것이라고 생각합니다. – codemonkeyliketab