53 / 56 / 10 Регистрация: 07.02.2011 Сообщений: 556 Записей в блоге: 1 |
|||||
1 |
|||||
08.03.2011, 13:46. Показов 8399. Ответов 3
Нужно сделать так: Все эти данные нужно записать в таблицу в файле ворда. Т.е. Заносим все что нужно в новую строку.
0 |
Петррр 6259 / 3560 / 898 Регистрация: 28.10.2010 Сообщений: 5,926 |
||||
08.03.2011, 17:23 |
2 |
|||
1 |
53 / 56 / 10 Регистрация: 07.02.2011 Сообщений: 556 Записей в блоге: 1 |
|
11.03.2011, 17:58 [ТС] |
3 |
Вы меня немного не поняли.
0 |
Umatkot_Primtep 187 / 100 / 19 Регистрация: 15.09.2011 Сообщений: 801 |
||||||||
02.12.2011, 01:59 |
4 |
|||||||
Надо использовать знания данные вам в предыдущем примере и ещё вам пригодится готовый шаблон. Используйте функцию FindAndReplace. Добавлено через 3 минуты
Воспользуйтесь моим кодом ещё для открытия и сохранения документа.
0 |
Используй стандартное расширение Microsoft.Office.Interop.Word и подготовь шаблон с данного документа с закладками в требуемых местах. Краткий код работы с документом:
Word._Document document;
Word._Application application=new Word.Application();
object missingObj = Missing.Value;
object templatePathObj = documentpath;
//открытие файла
try
{
document = application.Documents.Add(ref templatePathObj,
ref missingObj, ref missingObj, ref missingObj);
}
catch
{
document.Close(ref falseobj, ref missingObj, ref missingObj);
application.Quit(ref missingObj, ref missingObj, ref missingObj);
document = null;
application = null;
}
//заполнение закладок
object bookmarkObj = "закладка";
Word.Range bookmarkRange = document.Bookmarks.get_Item(ref bookmarkObj).Range;
bookmarkRange.Text = "";
//работа с таблицей
// Выбрать уже существующую таблицу внутри документа
// можно по ее порядковому номеру (начиная с 1 и начала документа)
Word.Table _table = _document.Tables[tableNumber];
_table.Rows.Add(ref _missingObj);
Word.Range _currentRange = _table.Cell(rowIndex, columnIndex).Range;
_currentRange.Text="";
//Вывод на печать
document.PrintOut(ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj, ref missingObj,
ref missingObj, ref missingObj, ref missingObj);
document.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
application.Quit();
Подробно об этом расширении есть тут и тут.
Выбрать уже существующую таблицу внутри документа можно по ее порядковому номеру (начиная с 1 и начала документа) можно через интерфейс Tables. При этом мы получим объект типа Table
Word.Table _table = _document.Tables[tableNumber];
Новая вставляется методом Tables.Add (предполагается что мы уже получили диапазон _currentRange того места в документе, куда будем ее вставлять):
_table = _document.Tables.Add(_currentRange, numRows, numColumns, ref _missingObj, ref _missingObj);
и добавить к ней строки
_table.Rows.Add(ref _missingObj);
Тип границ для таблицы можно задать так:
_table.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleDouble; _table.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleDouble;
Имея таблицу мы можем получить диапазон для конкретной ячейки по номеру строки/колонки через интерфейс Cell и делать с ним все описанное в предыдущих статьях:
_currentRange = _table.Cell(rowIndex, columnIndex).Range;
В том числе задать вертикальное выравнивание через перечисление WdCellVerticalAlignment
_table.Cell(rowIndex, columnIndex).VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalTop;
Слить несколько ячеек в одну
_table.Rows[cellOneRowIndex].Cells[cellOneColIndex]. Merge(_table.Rows[cellTwoRowIndex].Cells[cellTwoColIndex]);
Или объединить все ячейки для строки
Word.Row row = _table.Rows[rowNum]; Word.Cell firstCell =row.Cells[1]; foreach(Word.Cell currCell in row.Cells) { if(currCell.ColumnIndex != firstCell.ColumnIndex) { firstCell.Merge(currCell); } }
- Работаем с MS Word из C#, часть 0, класс и тестовый проект-пример WinForms
- Работаем с MS Word из C#, часть 1. Открываем шаблон, ищем текст внутри документа
- Работаем с MS Word из C#, часть 2. Вставляем текст на закладку и форматируем
- Работаем с MS Word из C#, часть 3. Работа с таблицами
- Работаем с MS Word из C#, часть 4. Обьединяем несколько файлов в один, считаем количество страниц
- Microsoft.Office.Interop.Word Namespace
- Range Interface
- Rows Interface
1С
В статье рассмотрены основные методы работы с массивами в 1С
1С
В данной статье рассмотрен пример передачи данных из табличной части документа в параметр.
1С
Для решения этой проблемы достаточно установить пользователя под которым будут выполняться регламентные задания.
1С
Функция пропорционально распределяет сумму на необходимое количество
1С
В тех случаях, когда возникает необходимость отключить авторегистрацию объектов, при записи объекта следует устанавливать дополнительное свойство.
1С
В статье рассмотрено несколько основных алгоритмов удаления строк из табличной части по условию. Каждый из вариантов по своему хорош, вам…
1С
Примеры программного заполнения параметров и отборов для отчетов СКД
1С
Примеры создания простых типов в 1С. Числа, строки ,логические, символы.
1С
Данная функция преобразовывает Фамилию Имя Отчество в Фамилия И.О.
1С
Примеры работы с деревом значений в 1С. Добавление, удаление, перемещение строк, создание копии, сортировка данных и др.
1С
Примеры создания дерева значений, массивов, словарей, списка значений, структуры, таблицы значений
1С
Примеры использования условий отбора в запросе 1С. Отборы по дате, по объектам, по параметрам и др.
В предыдущей заметке «Использование шаблонов Word в 1С» был показан простой способ, как используя механизмы 1С и документа Word в качестве шаблона, можно создать печатную форму для вывода данных. В текущей заметке «1с word шаблон» будет показан один из способов, как можно реализовать заполнение таблиц в шаблоне Word.
Для примера использовался шаблон Word следующего вида:
1с word шаблон — Заполнение таблиц в шаблоне Word — Шаблон
Как видно из шаблона, закладка «Таблица1» является указателем на начало таблицы и служит для позиционирования выделения.
Теперь непосредственно сам способ, для его реализации использовалась внешняя обработка, в модуле формы которой, описана лишь одна процедура «ПриОткрытии(Отказ)»:
&НаКлиенте Процедура ПриОткрытии(Отказ) //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; //Путь к шаблону ОбъектВорд.Documents.Add("C:UsersКонстантинDesktopШаблон.docx"); ШаблонВорд = ОбъектВорд.ActiveDocument; //Заполняем первую таблицу Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда //Выделяем обязательную закладку начала таблицы ШаблонВорд.Bookmarks("Таблица1").Select(); //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.SelectRow(); ШаблонВорд.Application.Selection.Copy(); Для Счетчик = 1 По 10 Цикл //Заменяем значения ШаблонВорд.Application.Selection.Find.Execute("Номер" ,,,,,,,,,Счетчик,2); ШаблонВорд.Application.Selection.Find.Execute("ЗначениеКолонки1" ,,,,,,,,,Счетчик+10,2); //Последний параметр поиска пустой ШаблонВорд.Application.Selection.Find.Execute("ЗначениеКолонки2" ,,,,,,,,,Счетчик+100,); //Перемещаемся вниз, вставляем из буфера обмена строку ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.Paste(); //Перемещаемся вверх и выделяем строку для замены значений ШаблонВорд.Application.Selection.MoveUp(); ШаблонВорд.Application.Selection.SelectRow(); КонецЦикла; //Вырезаем лишнюю строку ШаблонВорд.Application.Selection.Cut(); //Скрываем обязательную закладку начала таблицы ШаблонВорд.Bookmarks("Таблица1").Select(); ШаблонВорд.Application.Selection.TypeText(" "); КонецЕсли; ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа //ОбъектВорд.Application.Quit(); КонецПроцедуры
Как видно из кода процедуры, сначала находим закладку, выделяем и копируем строку таблицы находящуюся ниже, после заменяем текст на значения и вставляем скопированную строку. Результат работы внешней обработки 1С «Заполнение таблиц в шаблоне Word»:
1с word шаблон — Заполнение таблиц в шаблоне Word — Результат
Скачать файл обработки 1С и шаблона Word.