Как скопировать определенные страницы документа Word - PullRequest
0 голосов
/ 06 октября 2018

У меня есть документ Word, который содержит несколько страниц, и я хочу скопировать некоторые страницы в новый документ Word, используя OpenXml SDK.Я выполнил некоторый поиск в Интернете и получил код, который читает весь документ и копирует в новый

 string documentURL = filelocation;
 byte[] docAsArray = File.ReadAllBytes(documentURL);

 using (MemoryStream stream = new MemoryStream())
  {
    stream.Write(docAsArray, 0, docAsArray.Length);    // THIS performs doc copy
    using (DocumentFormat.OpenXml.Packaging.WordprocessingDocument doc = DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(stream, true))
    {
                // perform content control substitution here, making sure to call .Save()
                // on any documents Part's changed.
    }

 File.WriteAllBytes(outputSplitDocpath, stream.ToArray());
 }

Теперь, в приведенном выше коде, как я могу прочитать только определенные страницы и скопировать в новую?Пожалуйста, помогите с предложениями.Спасибо

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Используйте Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); вместо OpenXML

//dummy value to satisfy params
object oMissing = System.Reflection.Missing.Value;

//copy specific page/s
object what = WdGoToItem.wdGoToPage;
object which = WdGoToDirection.wdGoToFirst;
object count1 = 1;
Range startRange = word.Selection.GoTo(ref what, ref which, ref count1, ref oMissing);
object count2 = (int)count + 1;
Range endRange = word.Selection.GoTo(ref what, ref which, ref count2, ref oMissing);
endRange.SetRange(startRange.Start, endRange.End - 1);
endRange.Select();
word.Selection.Copy();
//save...
0 голосов
/ 06 октября 2018

Если не использовать разрыв страницы вручную для создания каждой страницы в документе, то, что вы хотите сделать, невозможно.

Автоматические разрывы страниц генерируются Word во время выполнения, когда документоткрыт в приложении Word.Фактическое размещение разрыва страницы является полностью динамическим, основанным на выполняемом редактировании и пересчитывается «все время» во время редактирования.

Эта информация не надежно сохраняется в документе, когдадокумент закрыт.Одна из причин этого заключается в том, что документ может отображаться по-разному при открытии на другом компьютере или при выборе другого принтера (драйвера).

Поэтому невозможно работать с отдельными страницами с использованием Office Open XMLформат файла, если не существует способа распознать каждую страницу, например, разрыв страницы вручную.

...