c# - separar - Dividir documentos de Word en otros más pequeños
separar correspondencia en word (5)
¡Lo que quieres hacer no es trivial! He hecho mi parte justa de manipulación de documentos, eso dijo que si está trabajando con un DOCX en estos días no es tan malo debido a las bibliotecas de apoyo, consulte:
La versión anterior se vuelve más difícil, necesitarás buscar una biblioteca para eso, o como se sugiere usar macros.
¿El "programa" es un sitio web? Si es así, asegúrese de no utilizar interoperabilidad COM
Quiero que un usuario pueda cargar un documento de Word y mi programa luego analiza el documento en documentos de Word separados. El problema es que la división tendrá que ser manual ya que todos los documentos de Word no están formateados de la misma manera. Mi pensamiento inicial es que antes de que el usuario cargue, el usuario etiqueta las secciones con una etiqueta de inicio y final (de algún tipo, tal vez un comentario) para que mi programa pueda analizar y dividir el documento en documentos separados. (Esto también debe funcionar para .doc y .docx, por lo que es deseable una solución común)
Ex. Entrada:
Doc1
Capítulo 1
Bla, bla, bla
Capitulo 2
Blah blah
/ fin Doc1
Ex. Salida:
Doc1
Capítulo 1
Bla, bla, bla
/ fin Doc1
Doc 2
Capitulo 2
Blah blah
/ fin Doc2
¿Algunas ideas? He estado luchando con esto por un tiempo
Algo que puede ayudar es HTML Transit. Es un software increíblemente viejo e increíblemente caro, y desde una búsqueda inicial, puede que ya no sea compatible. Pero, sí tenía la capacidad de tomar un documento de Word y dividirlo en partes más pequeñas (por supuesto, también lo convirtió a HTML). Algo para mirar, tal vez. Google "HTML Transit" para más investigación y demostración gratuita.
He tenido un gran éxito con Aspose.Words para manipulación y generación de documentos.
Yo diría que su mejor apuesta es investigar las macros VSTO o VBA para lograr esto. Ambos le darán acceso completo al modelo de objetos en cualquier versión del documento.
VBA Macro para dividir archivos en documentos secundarios
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