Програмно вмъкване на документ на Word в съществуващ документ (Word 2007)

Имам документ на Word 2007, в който искам да вмъкна съществуващ документ на Word - като същевременно запазя горния/долния колонтитул, графиките, границите и т.н. на двата документа.

Правя това с помощта на Word API в C#.

Звучи доста просто, искам да кажа, че със сигурност просто използвате метода "InsertFile"... с изключение на това, че в Word 2007 функционалността "вмъкване на файл" сега всъщност е "вмъкване на текст от файл" и прави точно това - пропуска границата на страницата , графики и долен колонтитул и др.

Добре тогава, вместо това ще използвам копиране и поставяне, така...

_Document sourceDocument = wordApplication.Documents.Open(insert the 8 million by ref parameters Word requries)
sourceDocument.Activate(); // This is the document I am copying from 
wordApplication.Selection.WholeStory();
wordApplication.Selection.Copy();
targetDocument.Activate(); // This is the document I am pasting into
wordApplication.Selection.InsertBreak(wdSectionBreakNextPage);
Selection.PasteAndFormat(wdFormatOriginalFormatting);
wordApplication.Selection.InsertBreak(wdSectionBreakNextPage);

който прави това, което бихте очаквали, взема изходния документ, избира всичко, копира го и след това го поставя в целевия документ. Тъй като добавих прекъсване на секции, преди да направя поставянето, той също запазва границите, горния/долния колонтитул на двата документа.

Обаче - сега тук имам проблема. Поставянето само включва границите, заглавката и т.н., ако поставя в края на целта документ. Ако го поставя в средата - въпреки че има предходно прекъсване на раздела, тогава само текстът се поставя и заглавката, границите и т.н. се губят.


person Chris B    schedule 27.03.2009    source източник
comment
Ако преминаването към маршрута на OpenXML изобщо е опция, вижте blogs.msdn.com/brian_jones/archive/2010/02/26/ и секцията Обединяване на множество документи на Word тук msdn.microsoft.com/en-us/library/dd469465.aspx   -  person R0MANARMY    schedule 01.04.2010


Отговори (4)


Ще работи ли функционалността на отметките. InsertFile съдържа параметри, които да вземете от това, което може да заобиколи проблема. Може би вече сте обмислили това

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.bookmark.insertfile.aspx

person Matrim    schedule 27.03.2009
comment
Благодаря за предложението - не бях пробвал InsertFile. Сега го пробвам, но се боря да го накарам да работи... - person Chris B; 27.03.2009
comment
Не мисля, че е възможно, защото не правя VSTO приложение на ниво документ, нямам достъп до контролна колекция, например, която обектът на отметката изглежда изисква. - person Chris B; 27.03.2009
comment
Жалко, вероятно няма да помогне, но работещ пример за горното може да се намери тук devpinoy.org/blogs/keithrull/archive/2007/05/23/ - person Matrim; 30.03.2009
comment
разглеждайки тази връзка по-отблизо - тя не използва метода на отметката - използва стандартния метод "insertfile", който не работи през 2007 г. (или - мисля, че 2003 г.) - person Chris B; 30.03.2009

Този вид работи за мен. Все още се търси по-добро решение. Не забравяйте да добавите препратката си към Interop.Word. Знам, че това е стара тема и използвам Word 2016, но търсих дълго време и трябваше да събера решението.

using Word = Microsoft.Office.Interop.Word;
var wordApp = new Word.Application();
wordApp.Visible = true;
wordApp.Documents.Add(@"C:\workingtemplate.dotx");
//Open is for an existing document. 
//Add is to use a template.
//Get the range to be able to then collapse and have the correct insertion point
var rng = wordApp.ActiveDocument.Range();
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
rng.InsertBreak(Word.WdBreakType.wdPageBreak);
rng.InsertFile(@"C:\temp.docx");
person frs    schedule 18.01.2017

Всъщност работя върху нещо подобно в момента, колкото и да е странно, и открих библиотека на powershell cmdlet, написана на C#, която може да ви бъде полезна:

Powertools за Open XML

Все още има малко грешки с наследените горни и долни колонтитули, както и с препратките към изображения, които не се копират правилно, ако едно и също изображение е в множество части на документа, но голяма част от структурата е на мястото си.

person Chris J    schedule 31.08.2009
comment
Благодаря, че ме уведомихте за това, това ми дава друг път за разрешаване на тези проблеми с Office. - person Chris B; 01.09.2009

ЗА ВМЪКВАНЕ НА ДОКУМЕНТ НА ​​WORD В ДРУГ ДОКУМЕНТ НА ​​WORD 2007 Единственият начин, който намерих за успешен за WORD 2007, е... отворете документа, към който искате да добавите страниците, след това отидете в раздела „Вмъкване“ на лентата, погледнете текста " (същото място като текстовото поле, Word Art и т.н.) и изберете "обект", появява се падащо меню, след което изберете "Текст от файл". От тук просто избирате документа, който искате да вмъкнете, и това е готово, може да се наложи да направите някои леки корекции, но всичко там е форматирано правилно, не забравяйте да поставите курсора си в точката, в която искате да вмъкнете новите неща. Надявам се това да помогне

person Universal Saint    schedule 01.04.2010