Как добавить таблицу в ворде к существующей
Перейти к содержимому

Как добавить таблицу в ворде к существующей

Как добавить таблицу в ворде к существующей

Имеетсся шаблон вордовского документа, который необходимо заполнить из 1С, в этом шаблоне есть таблица. Вопрос, а как обратиться из 1С к уже существующей в шаблоне таблице, добавить строки в ней.

начиная с 2000
в ворде есть соответсвующая коллекция (типа таблес)
в 95,97 — с помошью selection

как по оле обращаться к ворду — в инете примеров море.

как манипулировать свойствами и методами можно подсмотреть в записи макроса
с поправкой на 1с

костанты можно подсмотреть в отладчике

Я могу добавить таблицу в документ, могу добавить к добавленной таблице строки, а вот обратиться к существующей таблице как? Добавленная будет по номеру 1, а если таблица уже есть?

Есть код
Word = СоздатьОбъект(«Word.Application»);
Док = Word.Documents.add(«c:\1\1.dot»);
Добавляю таблицу все ок!
Таб=Док.Tables.Add( Док.Paragraphs(16).Range, КоличествоСтрок()+1, 2);
Я пробую обратиться к существующей таблице и добавить ее к ней строку — она исчезает:
Таб = Док.Tables(1);
Таб.Rows.Add();

(3) Ты вечно во все темы встреваешь, так что не лезь.
Я смотрел, что ты всем пишешь, играешься как пятилетний ребенок.

Таб.Cell(1, 1).Text что-то типа того
после совета (6) — $16
(7) 50 центов мне, за накрутку
(6)Получилось так:
Таб.Cell(1, 1).Range.Text=»111111111″;
А как добавить строки или удалить?
запиши макрос и смотри его код

интересно, в какой таблице будет изменена первая ячейка?

(11) в таблице — контекст которой в обьекте «Таб» 🙂
вопрос — в нужной таблице или не нужной?
(0) Слушай, у меня параллельный вопрос, а разрыв страницы у тебя есть в этом документе?
(14) Я перепроверил. Никакого разрыва нет.
разрыв страницы не влияет на работу с таблицей.
(11) Если добавить таблицу, когда других таблиц нет, то в добавленной и меняет.
(12) Очень интересная идея. Буду пробовать.

В общем оказалось мне проще самому в нужном месте создать таблицу и ее заполнить, чем ждать ответа от знатоков.
Итог таков:
Word = СоздатьОбъект(«Word.Application»);
Док = Word.Documents.add(«c:\1\1.dot»);
//ищем и заменяем необходимые реквизиты, в шаблоне Ворда написано должно быть точно так как ищем
Fnd = Word.ActiveDocument.Range().Find;
Fnd.ClearFormatting();
Fnd.Forward = -1;
Fnd.Execute(«». Формат(ДатаДок,»Д(0)ДДММММГГГГ»),2);
Если СокрЛП(Строка(Сотрудник.Пол))=»Мужской» Тогда
Fnd.Execute(«». «гражданин»,2);
ИначеЕсли СокрЛП(Строка(Сотрудник.Пол))=»Женский» Тогда
Fnd.Execute(«». «гражданка»,2);
Иначе
Fnd.Execute(«». «гражданин(ка)»,2);
КонецЕсли;
// И так далее по поиску.
//Таблица вставляется после 16 параграфа
Таб=Док.Tables.Add( Док.Paragraphs(16).Range, КоличествоСтрок()+1, 2);
Если Таб.Style <> «Сетка таблицы» Then
Таб.Style = «Сетка таблицы»
КонецЕсли;
//Формируем заголовок по центру и жирным
Таб.Cell(1, 1).Range.Text = «расчетный месяц»;
Таб.Cell(1, 1).Range.ParagraphFormat.Alignment = 1;
Таб.Cell(1, 1).Range.Font.Bold = 1;
Таб.Cell(1, 2).Range.Text = «месячный оклад (рубли РФ)»;
Таб.Cell(1, 2).Range.ParagraphFormat.Alignment = 1;
Таб.Cell(1, 2).Range.Font.Bold = 1;
//Заполняем табличную часть
Для Н=1 по КоличествоСтрок() Цикл
ПолучитьСтрокуПоНомеру(Н);
Таб.Cell(Н+1, 1).Range.Text = РасчетныйМесяц;
Таб.Cell(Н+1, 1).Range.ParagraphFormat.Alignment = 1;
КонецЦикла; //Н=1
Word.Visible=1;
Word.ActiveDocument.Activate();
Word=»»;

Как добавить таблицу в Ворде: несколько способов

Создание таблиц – это очень удобный способ представления информации. В ней Вы можете структурировать все данные таким образом, чтобы другой человек, глядя на нее, с легкостью воспринял информацию. Если Вы школьник, студент, бухгалтер, секретарь, или офисный работник, регулярно сдающий отчеты – то знания в вопросе, как сделать таблицу в Word, Вам обязательно пригодятся.

Для написания статьи я пользовалась Ворд 2010, но создать ее в Ворд 2007 Вы можете точно таким же образом.

Для начала перейдите на вкладку «Вставка» и в меню «Таблицы» кликните по одноименной кнопке. Откроется выпадающий список, в котором представлены различные способы их создания в Ворде. Рассмотрим их все по порядку.

Как сделать таблицу в Ворде

Наглядный вариант

Самый быстрый и наглядный способ – это «Вставка …» ,с помощью выделения необходимого количества блоков. Ведите мышкой по квадратикам, сверху будет отображаться размер создаваемой таблицы. Чтобы добавить ее в документ, кликните мышкой по правому нижнему квадратику. В результате, она будет создана по ширине всего листа, с выбранным количеством строк и столбцов.

Задание количества строк и столбцов

Второй способ – «Вставить таблицу» . Для этого выберите из списка соответствующий пункт и кликните по нему мышкой. Появится окно, в котором нужно указать необходимое количество сток и столбцов. Маркером отметьте ширину для столбцов:

– постоянная – ширина столбцов не будет изменяться;
– по содержимому – будет зависеть от напечатанного текста;
– по ширине окна – таблица будет соответствовать области, которая выделена для текста на листе.

Рисование границ

Третий способ – «Нарисовать …» . При нажатии на соответствующий пункт появляется инструмент «Карандаш» . Если водить им за пределами уже существующих блоков или просто на пустом листе, можно нарисовать прямоугольник – это могут быть и границы основной таблицы, и одна ячейка. Если водить карандашом в прямоугольнике, рисуется линия – таким образом можно разбить нарисованный прямоугольник на строки и столбцы.

Преобразование текста

Четвертый способ – это преобразование текста в таблицу. Если у Вас имеется текст, который нужно разместить в ячейки, то сделать это не сложно. Сначала отформатируем его нужным образом.

Чтобы Ворд понимал, когда нужно создать новую колонку – разделите текст с помощью кнопки «Tab» на клавиатуре, на ней нарисованы стрелочки в разном направлении. Чтобы создать новую строку, поставьте в конце предыдущего абзаца «Enter» . Чтобы пропустить нужное количество колонок, поставьте подряд соответствующее количество «Tab» . Для более наглядного представления, лучше включить непечатаемые символы. Вместо «Tab» можно использовать «;» , «%» или другой знак.

Теперь выделите отредактированный текст, и выберите из меню пункт «Преобразовать в таблицу» .

Появится окошко. Внизу поставьте разделитель, который Вы использовали: «Tab» , «;» , «%» . Ворд сам определит, сколько столбцов должно быть. Можете задать нужную ширину столбцов.

Моя таблица выглядит следующим образом. В ней сохранились все пустые ячейки, правильно создалась новая строка.

Как в Excel

Пятый способ – это «Таблица Excel» . Нажмите в меню соответствующий пункт.

Появится область для работы с ними, как в Excel. Соответствующим образом будут пронумерованы строки и столбцы. Будет возможность вставлять формулы, диаграммы и прочее.

Кликните за данной областью на листе документа, и останется только таблица.

Экспресс-таблица

Шестой способ – это добавление «Экспресс-таблицы» . Это, своего рода, готовые шаблоны. Можете вставить тот, который понравится Вам. Затем просто измените данные.

Как видите, существуют различные способы, чтобы создать таблицу в Ворде. Выберите подходящий и дело будет сделано!

Записная книжка программиста-новичка, C#, SQL, PHP и все-все-все

Я ведь это уже делал, но хрен теперь найдешь тот кусок кода, гуглим снова… Где бы найти простое и понятное руководство для начинающего, а не тонкости для мега-гуру?

Главная→C#→MS Office→ Работаем с MS Word из C#, часть 3. Работа с таблицами

Рубрики

Свежие записи

  • Вырезаем числовую часть из начала строки в transact-sql
  • Пул соединений с базой данных в ADO.NET / OleDb — как избежать проблем с утечкой соединений в ASP.NET (перевод)
  • ASP .Net MVC, JQuery и AJAX — отсылаем данные на сервер
  • Разделитель тысяч и дробной части для decimal
  • Создаем расширенный Control в WinForms наследуясь от существующего
  • Вставка строк и изменение границ ячеек в Excel Interop из C#
  • Как прочитать данные из удаленного DataRow в DataTable
  • Проблемы с кодировкой при копировании русского текста из MS SQL Studio в Outlook/Word/Office
  • Как проверить, существует ли таблица в MS SQL Server перед удалением/созданием
  • Очень просто.
  • Получаем выбранные строки DataGridView, в котором выбраны только ячейки
  • Ошибка в коде привела к убыткам в 476 миллионов долларов и банкротству компании
  • Отслеживаем изменения выбранного значения в колонке ComboBox DataGridView (DataGridViewComboBoxColumn)
  • Excel 2010, Windows 7, два монитора и «ошибка при направлении команды приложению»
  • Удаляем default-ограничение (constraint) в Transact Sql

Свежие комментарии

  • Kirill к записи Самоучитель по C# для начинающих. 01. Основы языка, переменные, логика, циклы.
  • как избавиться от чувства вины к записи Как добавить строку/текст в начало файла в C# и .Net
  • DannyLef к записи Полезные расширения-плагины для WordPress
  • как избавиться от чувства вины к записи Как добавить строку/текст в начало файла в C# и .Net
  • gweg2ehgwEHERWQHQ к записи Простейшее диалоговое окно-вопрос (MessageBox) в WindowsForms

Архивы

Мета

Работаем с MS Word из C#, часть 3. Работа с таблицами

Опубликовано 02.08.2012 автором Ведомир

Выбрать уже существующую таблицу внутри документа можно по ее порядковому номеру (начиная с 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); >>
  1. Работаем с MS Word из C#, часть 0, класс и тестовый проект-пример WinForms
  2. Работаем с MS Word из C#, часть 1. Открываем шаблон, ищем текст внутри документа
  3. Работаем с MS Word из C#, часть 2. Вставляем текст на закладку и форматируем
  4. Работаем с MS Word из C#, часть 3. Работа с таблицами
  5. Работаем с MS Word из C#, часть 4. Обьединяем несколько файлов в один, считаем количество страниц
  6. Microsoft.Office.Interop.Word Namespace
  7. Range Interface
  8. Rows Interface

Комментарии

Работаем с MS Word из C#, часть 3. Работа с таблицами — Комментарии (4)

Александр говорит 12.10.2015 в 8:35 :

Добрый день!
Очень помог ваши статьи в разработки авто документаций.
Очень интересно как добавлять значение в ячейки,которые объединены по вертикали?
Благодарю за ответ

Антон говорит 20.04.2016 в 15:53 :

Здравствуйте, пытаюсь самостоятельно разработать сервис генерации билетов, использую Вашу статью, помогла, но возникли вопросы, не все понятно. Мжно ли как то с Вами связаться?

Работа на дому официальное трудоустройство.
Алексей говорит 28.07.2017 в 14:24 :

Подскажите как при экспорте данных из Datagridview в таблицу документа Word, изменить цвет строки, у которой в первом столбце таблицы Word отсутствуют значения/текст.

Неправильно создаются две и более таблицы в одном документе Word через VBA Excel

В чем заключается проблема: проблема в том, что при исполнении строчки с кодом создания таблицы (set table = wDoc.Tables.add(wDoc.Range(0,0),5,5)) вторая таблица создаётся в первой колонке первого столбца уже существующей таблицы. То есть первая таблица создаётся, в неё заносятся данные. Но при создании ещё одной таблицы в этом wDoc она вставляется не строчкой ниже существующей таблицы, а прямо в саму существующую таблицу. Я полагаю, что это связано с Range. Я пробовал делать разными способами в процессе дебага, но ничего не получилось. Подскажите, как можно сделать так, чтобы новые таблицы вставлялись в конец документа? Пока что проблему решил тем, что создаю несколько wApp и связанные с ним wDoc и на каждом из них создаю таблицы. Конечно вариант не очень. Нужно, чтобы на одном wApp и wDoc было несколько таблиц, текст и т.д.

Отслеживать
задан 26 сен в 6:04
user471929 user471929
167 6 6 бронзовых знаков

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Вариант без Selection. Базируется на свойстве Content , представляющем собой основную историю документа. Комментарии в коде.

Option Explicit Function createWordApplication(Optional Visible As Boolean = True) As Word.Application ' видимость окна приложения делаем как опциональный аргумент, по умолчанию - видимо On Error Resume Next Set createWordApplication = GetObject(, "Word.Application") ' попытка подключиться к уже открытому Word, чтобы не дублировать On Error GoTo 0 If createWordApplication Is Nothing Then ' если открытого Word нет, то запускаем приложение Set createWordApplication = New Word.Application createWordApplication.Visible = Visible End If End Function Sub createTable(wd As Word.Document, Optional tableCaption As String = "") Dim start As Word.Range, table As Word.table wd.Content.InsertParagraphAfter ' вставить параграф в конце текста If tableCaption <> "" Then ' если параметр заголовка таблицы не пуст, то wd.Content.InsertAfter tableCaption ' напечатать заголовок wd.Content.InsertParagraphAfter ' добавить еще параграф после End If Set table = wd.Tables.Add(wd.Content.Paragraphs.Last.Range, 5, 5) 'добавить таблицу в последний параграф With table.Borders ' оформить границы таблицы (есть множество вариантов границ https://learn.microsoft.com/ru-ru/office/vba/api/word.wdlinestyle) .InsideLineStyle = wdLineStyleSingle .OutsideLineStyle = wdLineStyleSingle End With End Sub Sub Test() Dim Word As Word.Application, wd As Word.Document, i As Integer Set Word = createWordApplication Set wd = Word.Documents.Add For i = 1 To 10 ' создаем 10 таблиц одну под другой, добавляя между ними опциональный заголовок createTable wd, "Таблица № " & i Next End Sub 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *