Разделение документов Word на меньшие - PullRequest
3 голосов
/ 19 февраля 2010

Я хочу, чтобы пользователь мог загружать текстовый документ, и моя программа затем анализирует документ в отдельные текстовые документы.Проблема в том, что разделение должно быть ручным, поскольку все документы Word не отформатированы одинаково.Моя первоначальная мысль заключается в том, что перед загрузкой пользователь помечает разделы начальным и конечным тегом (что-то вроде комментария), чтобы моя программа могла затем проанализировать и разделить документ на отдельные документы.(Это также должно работать для .doc и .docx, поэтому желательно общее решение)

Пример.Ввод:

Doc1

Глава 1

Бла-бла-бла

Глава 2

Бла-бла

/ конец Doc1

Пример.Выход:

Doc1

Глава 1

Бла-бла-бла

/ конец Doc1

Документ 2

Глава 2

Бла-бла

/ end Doc2

Любые идеи?Я боролся с этим некоторое время

Ответы [ 5 ]

4 голосов
/ 19 февраля 2010

То, что вы хотите сделать, нетривиально!Я выполнил свою часть работы с документами, в которой говорилось, что если вы работаете с DOCX в эти дни, это не так уж плохо из-за вспомогательных библиотек, см.версия становится более сложной, вам нужно будет найти библиотеку для этого или, как предлагается, использовать макросы.

Является ли "программа" веб-сайтом?Если это так, убедитесь, что вы не используете COM-взаимодействие!

0 голосов
/ 23 сентября 2017

VBA Macro для разделения файлов на вложенные документы

Sub UpdateDocuments ()

    Application.ScreenUpdating = False
    Dim strFolder As String, strFile As String, wdDoc As Document
    strFolder = GetFolder
    If strFolder = "" Then Exit Sub
    strFile = Dir(strFolder & "\*.doc", vbNormal)
    While strFile <> ""
        Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile,      AddToRecentFiles:=False, Visible:=False)
        With wdDoc
            'Call your other macro or insert its code here
            'BreakOnSection
            wdDoc.Activate

        ActiveDocument.ActiveWindow.View.Type = wdOutlineView
            Selection.WholeStory
        Selection.Copy
            ActiveDocument.Subdocuments.AddFromRange Range:=Selection.Range
            ActiveDocument.SaveAs "C:\Data\Split\" & ActiveDocument.Name

            ActiveDocument.Close SaveChanges:=True
    End With
    strFile = Dir()
    Wend
    Set wdDoc = Nothing
    Application.ScreenUpdating = True
End Sub

Function GetFolder() As String
    Dim oFolder As Object
    GetFolder = ""
    Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0,     

"Choose a folder", 0)
    If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path
    Set oFolder = Nothing
End Function
0 голосов
/ 19 февраля 2010

У меня большой успех с Aspose.Words для манипулирования документами и их генерации.

0 голосов
/ 19 февраля 2010

Что-то, что может помочь, это Транзит HTML.Это невероятно старое программное обеспечение и невероятно дорогое, и при первоначальном поиске оно может больше не поддерживаться.Но он имел возможность взять один документ Word и разделить его на более мелкие части (конечно, он также преобразовал его в HTML).Может быть, есть на что посмотреть.Google "HTML Transit" для дополнительных исследований и бесплатной демонстрации.

0 голосов
/ 19 февраля 2010

Я бы сказал, что вам лучше всего исследовать макросы VSTO или VBA для достижения этой цели.Оба предоставят вам полный доступ к объектной модели в любой версии документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...