Я пробовал сначала использовать Word.Selection, но я не мог понять, как я могу взять одну строку за раз и скопировать ее. Возможно, это будет возможно с помощью Word.Selection.
Следующее, о чем я думал, это копирование, вставляющее ячейку за раз, но свойство Range удерживает структуру ячейки таблицы. Я заглянул в Word Model и попытался выяснить, есть ли какой-то символ окончания после каждой строки, чтобы отличить его как конец строки. Существует такой характер, но он предназначен для всех ячеек. Чтобы найти этого персонажа, нажмите кнопку «Офис» (кроме «Домой»), нажмите на опции слова, нажмите на дисплей, в разделе всегда показывают эти метки форматирования на экране, отметьте все отметки форматирования. Это отображает все непечатаемые символы в текстовом документе. Это символ, который вы сможете увидеть ¤.
Этот символ хранит структурную информацию ячейки, а отображаемые символы ANSI - 13 + 7. 13 - это знак абзаца, а 7 - маркер «конечной ячейки». Это содержит дополнительную информацию, которая указывает на управление структурой ячейки в файле. В Word 2007 эти два символа отображаются как один символ, поэтому нам нужно сбросить этот символ из диапазона ячеек.
Я создал список для хранения всех ячеек, которые мне нужны из главной таблицы.
List<Microsoft.Office.Interop.Word.Cell> masterTableCells=new List<Microsoft.Office.Interop.Word.Cell>();
После того, что следующий код удаляет последний символ из диапазона
Microsoft.Office.Interop.Word.Table table = b.Range.Tables[1];
table.ID = b.Name;
for (int colCounter = 1; colCounter <= masterTable.Columns.Count; colCounter++)
{
Microsoft.Office.Interop.Word.Range sourceRange = masterTable.Cell(1, colCounter).Range;
Microsoft.Office.Interop.Word.Range targetRange = table.Cell(1, colCounter).Range;
object oCharacter = Microsoft.Office.Interop.Word.WdUnits.wdCharacter;
object negOne = -1;
sourceRange.MoveEnd(oCharacter, negOne);
targetRange.MoveEnd(oCharacter, negOne);
targetRange.FormattedText = sourceRange.FormattedText;
}
Целью было получить форматированный текст и удалив символ из каждого диапазона ячеек, мы можем указать только что конкретная структура ячейки, а не целые таблицы.
Если вы попытаетесь запустить цикл только с форматированным текстовым свойством, вы получите поврежденную таблицу. Надеюсь это поможет.
Когда вы говорите, что не можете использовать table.Cell(). Range.Text, у вас есть код, в котором вы его пробовали, и он не работает. согласно MS это можно сделать даже с форматированием. Оформить эту ссылку для стартеров http://msdn.microsoft.com/en-us/library/aa537149%28v=office.11%29.aspx – MethodMan
Мне нужно обеспечить форматирование основной таблицы, которую я переношу, Я не думаю, что это можно было бы сделать с Range.Text – gizgok
Вы посмотрели ссылку, которую они предоставляют удивительные примеры .. не видя никакого кода, который у вас есть или попробовал ..это довольно сложно опубликовать образцы кода, поскольку предложение не захочет привести вас к неправильному пути. – MethodMan