Сценарий : у меня есть около 14000 документов Word, которые необходимо преобразовать из «Документа Microsoft Word 97 - 2003» в «Документ Microsoft Word».Другими словами, обновлен до формата 2010 (.docx).
Вопрос : Есть ли простой способ сделать это, используя API или что-то еще?
Примечание : Мне удалось найти толькоПрограмма Microsoft, которая конвертирует документы в .docx, но они все еще открываются в режиме совместимости.Было бы хорошо, если бы они могли быть просто преобразованы в новый формат.Те же функциональные возможности, которые вы получаете при открытии старого документа, и он дает вам возможность преобразовать его.
Редактировать : Только что обнаружен 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 : немного подправлен код выше, и он работаеточиститель.Требуется 1мин10сек, чтобы конвертировать 8 файлов.Учитывая, что у меня 14000, мне нужно преобразовать этот метод, это займет достаточно много времени.
EDIT4 : снова изменил код.Использует пул потоков сейчас.Кажется, работает немного быстрее.Еще нужно запустить на лучшем компьютере, чтобы конвертировать все документы.Или делайте их медленно по папкам.Кто-нибудь может придумать какой-нибудь другой способ оптимизировать это?