시나리오 : "Microsoft Word 97 - 2003 Document"에서 "Microsoft Word Document"로 변환해야하는 약 14,000 단어의 문서가 있습니다. 즉, 2010 형식 (.docx)으로 업그레이드되었습니다.2010 년 Word 문서를 업그레이드하는 방법이 있습니까
질문 : API를 사용하여이를 쉽게 할 수 있습니까?
참고 : 문서를 .docx로 변환하지만 여전히 호환 모드로 열리는 Microsoft 프로그램 만 찾을 수있었습니다. 그들이 새로운 형식으로 변환 될 수 있다면 좋을 것입니다. 이전 문서를 열 때와 동일한 기능을 제공하며 변환 할 수있는 옵션을 제공합니다.
: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word._document.convert.aspx을 사용하는 방법을 찾아 냈습니다.
EDIT2 : 이것은 그것은 나를 경로가 다음 하위 폴더에있는 모든 문서 파일을 찾을 선택할 수 있습니다 문서
Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
FolderBrowserDialog1.ShowDialog()
Dim mainThread As Thread
If Not String.IsNullOrEmpty(FolderBrowserDialog1.SelectedPath) Then
lstFiles.Clear()
DirSearch(FolderBrowserDialog1.SelectedPath)
ThreadPool.SetMaxThreads(1, 1)
lstFiles.RemoveAll(Function(y) y.Contains(".docx"))
TextBox1.Text += "Conversion started at " & DateTime.Now().ToString & Environment.NewLine
For Each x In lstFiles
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf ConvertDoc), x)
Next
End If
End Sub
Private Sub ConvertDoc(ByVal path As String)
Dim word As New Microsoft.Office.Interop.Word.Application
Dim doc As Microsoft.Office.Interop.Word.Document
word.Visible = False
Try
Debug.Print(path)
doc = word.Documents.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
doc.Convert()
Catch ex As Exception
''do nothing
Finally
doc.Close()
word.Quit()
End Try
End Sub`
을 변환 내 현재 기능입니다. 이 코드는 중요하지 않으며 변환을위한 모든 파일은 lstFiles에 있습니다. 현재 문제는 단지 10 개의 문서 만 변환하는 데 정말 오랜 시간이 걸린다는 것입니다. 문서 당 하나의 단어 응용 프로그램을 다시 사용하는 대신 사용해야합니까? 어떤 제안?
약 2 ~ 3 회 전환 후 단어가 열리고 깜박이기는하지만 계속 변환됩니다.
EDIT3 : 약간 위의 코드로 조정하면 더 깨끗하게 실행됩니다. 그래도 8 분의 1 파일을 변환하는 데 1min10 초 걸립니다. 내가 14000을 가지고 있다고 가정하면이 방법을 변환해야하는데 상당히 오래 걸릴 것입니다.
EDIT4 : 코드를 다시 변경했습니다. 지금 스레드 풀을 사용합니다. 조금 더 빨리 달리는 것 같습니다. 모든 문서를 변환하려면 더 나은 컴퓨터에서 실행해야합니다. 또는 폴더별로 천천히하십시오. 아무도 이것을 최적화하는 다른 방법을 생각할 수 있습니까?
:하지만,
여기 내 전체 코드의
, 이것은 하나의 버튼, Button1을하고 FolderBrowserDialog, FolderBrowserDialog1 그냥 한 형태이다 두 스레드 모두 내 코어를 100 % 사용하고 있다는 것을 알았 기 때문에 병렬화가 빠른 컴퓨터만큼이나이 문제를 해결할 것이라고 생각하지 않았습니다. 어떤 종류의 컴퓨터를 사용하고 있습니까? –Windows XP x86, Intel Pentium Dual CPU @ 2.00GHZ, 3.25GB RAM. 업무용 컴퓨터 ... – Gage
x64 Windows 7 이외의 다른 제품과 비교하면 상당히 유사합니다. x86 버전이 x64보다 훨씬 느리거나 다른 버전의 Office 라이브러리를 사용하고 있는지 궁금합니다. "Microsoft Office 12.0 Object Library"버전 2.4.0.0과 "Microsoft Word 12.0 Object Library"버전 8.4.0.0을 사용하고 있습니다. 또한 변환중인 Word 문서의 평균 크기는 얼마입니까? 나는 나의 샘플 세트에서 가장 큰 것이 1 MB 정도라고 생각한다. –