Ошибка при создании ячеек шаблона формы varform

DataGridView1.Columns.Add(); exception C# Решение и ответ на вопрос 2230586

Здравствуйте. Си шарп не изучал. Изучал (и продолжаю) Джава и (в молодости было) Делфи. Поставил вижуал студию, хотел для саморазвития попробовать запилить блокнотик (с колоночками и строками а-ля эксель) для собственных нужд. Бегло глянул что и как, понял что синтаксис такой же как в джаве по большей части.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Size = new Size(600, 600);
 
 
            TabControl tab = new TabControl();
 
            tab.Location = new System.Drawing.Point(5, 5);
            tab.Size = new Size(350, 350);
            this.Controls.Add(tab);
 
            TabPage page1 = new TabPage("Page1");
            page1.UseVisualStyleBackColor = true;
 
            TextBox textbox = new TextBox();
            textbox.Name = "";
 
 
            TabPage page2 = new TabPage("Page2");
            page2.UseVisualStyleBackColor = true;
 
            tab.Controls.Add(page1);
            tab.Controls.Add(page2);
 
         //   tab.TabPages.Add(page1);
         //   tab.TabPages.Add(page2);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            DataGridViewColumn col = new DataGridViewColumn();
            col.HeaderText = "col1";
            col.ReadOnly = true;
            dataGridView1.Columns.Add(col);
        }
    }

Загуглил какой компонент может для этого подойти, оказалось что DataGridView. Изначально создавал его динамически, но были при попытке создания колонки ловил эксепшены, думал, проблема в коде, по скольку язык новый. Решил попробовать просто тупо кинуть на форму. То же самое. Что бы я не делал — ловлю эксепшен на последней строке.
«An unhandled exception of type ‘System.InvalidOperationException’ occurred in System.Windows.Forms.dll
Additional information: Как минимум один из столбцов элемента управления DataGridView не имеет шаблона ячейки.»

Не понимаю как решить проблему. Буду очень благодарен за подсказку. Сильно пожалуйста не ругайтесь, я просто учусь. Знаю, что что бы что-то писать — надо учить и сейчас можете отправить это и делать, но хотелось бы немного конкретики, а именно о проблеме: Почему вылазит эксепшен, и как где я дурак?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Как сформировать шаблон формы – делимся опытом

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 11 ]

1 26.03.2015 14:33:36

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Тема: Как сформировать шаблон формы – делимся опытом

Введение

На наш сайт довольно часто обращаются пользователи, которым нужно создать так называемый «шаблон формы».
Под шаблоном формы мы будем далее понимать файл Word, в котором можно вводить данные только в определенные поля, а остальной текст недоступен для редактирования.
К сожалению, я не являюсь специалистом по созданию шаблонов формы, но после размышления над этой проблемой, решил поделиться своими соображениями.
Буду рад, если кто-либо из специалистов сможет впоследствии дополнить написанное здесь.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

2 Ответ от Alex_Gur 26.03.2015 14:34:17

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Требования к шаблону формы

Итак, к шаблону формы обычно предъявляют следующие основные требования:
1) Данные можно вводить только в определенные поля;
2) Остальной текст нельзя изменять.
3) Должно иметься ограничение полей по длине (пользователь формы может ввести в поле не более определенного количества символов).
4) Должно иметься полоса подчеркивания под полями ввода по всей максимальной длине поля.

Требования 1 и 2 в Ворде обычно решаются с помощью ограничения на редактирование Ввод данных в поля форм (об этом – см. ниже).
Требование 3 может быть реализовано с помощью так называемого Поля формы (об этом также – см. ниже).
Требование 4 представляет наибольшие сложности, но в Ворде имеются средства, с помощью которых и это требование может быть выполнено (об этом мы будем говорить далее).

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

3 Ответ от Alex_Gur 26.03.2015 14:36:15

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Создание макета шаблона (без полей)

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

Post’s attachments

Доверенность на получение ЭЦП.doc 70.5 Кб, 22 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

4 Ответ от Alex_Gur 26.03.2015 14:52:10

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Создание кнопки Поле формы

Для более удобного формирования шаблона формы в Word создайте на ленте пользовательскую кнопку Поле формы.
О том, как можно создать такую кнопку, подробно написано в прилагаемом файле.

Примечание: Пользовательскую кнопку без проблем можно создать в версиях 2010 и 2013. Если такую кнопку создать не удалось то вы всегда можете найти это поле на ленте, на вкладке Разработчик:
Разработчик – группа Элементы управления – стрелочка вниз – Формы предыдущих версий – Поле (элемент управления формы).
Использование элемента Поле формы позволяет задать ограничение на длину вводимой строки (требование 3 (см. ранее)).

Post’s attachments

Поле формы.docx 198.54 Кб, 22 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

5 Ответ от Alex_Gur 26.03.2015 14:56:52

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Два способа создания поля с подчеркнутой строкой

Для реализации требования 4 (см. выше) нам удалось выявить два способа создания поля с подчеркнутой строкой:
•    таблица с выделенной нижней границей
•    использование горизонтальной линии с форматом обтекания За текстом.
Оба указанных способа будут рассмотрены далее.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

6 Ответ от Alex_Gur 26.03.2015 15:17:40

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Таблица с выделенной нижней границей – особенности формирования

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

Необходимо учесть следующие особенности формирования ячеек таблицы и заполнения этих ячеек текстом и полями формы:
высота строки таблицы (высота строки таблицы должна быть равна или на 1-2 пт больше, чем размер текста; например, для размера текста 10 пт высота строки таблицы должна быть равна 10-12 пт).
размер текста в поле формы (размер текста должен быть равен или на 1-2 пт меньше, чем высота строки; например, для строки высотой 10-12 пт размер текста 10 пт должен быть равен 10 пт; текст должен быть прижат кверху (опция Выровнять сверху на вкладке Работа с таблицами: Макет); текст поля формы – без подчеркивания).
границы ячеек, в которые вводится текст (нижняя часть указанной ячейки выделяется черной границей шириной 0,5 пт).
размер текста пояснений (текст пояснений может быть дан под подчеркнутой строкой в отдельной ячейке; размер текста около 10 пт; тип видоизменения Надстрочный; текст должен быть прижат кверху (опция Выровнять сверху на вкладке Работа с таблицами: Макет)).
высота строки таблицы для текста пояснений (высота строки таблицы должна быть равна размеру текста пояснений; для размера текста пояснений 10 пт высота строки таблицы должна быть равна 10 пт).

На прилагаемом рисунке тонкими линиями показаны границы ячеек таблицы для приведенного выше примера (в результирующем документе эти границы не будут отображены), толстыми – линии подчеркивания в результирующем документе (там они будут отображены тонкими линиями). Темными прямоугольниками отображаются поля формы.

Post’s attachments

Пример таблицы — ЭЦП.JPG 77.25 Кб, 1 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

7 Ответ от Alex_Gur 26.03.2015 15:27:43

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Использование горизонтальной линии с форматом обтекания За текстом

В случае, если по тем или иным причинам не была создана описанная выше таблица, для реализации требования 4 можно использовать горизонтальную линию с форматом обтекания За текстом.
Для создания линии выполните следующие действия:
Вставка – группа Иллюстрации – Фигуры – группа Линии – Линия
Ширина линии – 0,5 пт.
Цвет – черный.
Поместить линию так, чтобы она была горизонтальной и находилась чуть ниже поля формы. Нужно проследить, чтобы линия была как можно более строго горизонтальной.
Длина линия должна немного превышать максимальную длину поля (см. далее).
Установить формат обтекания линии За текстом:
Средства рисования: Формат – Обтекание текстом – За текстом

В итоговом файле горизонтальные линии с форматом обтекания За текстом будут использованы при создании линий подчеркивания в верхней части примера (см. прилагаемый рисунок).

Post’s attachments

Линии За текстом.JPG 21.84 Кб, 1 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

8 Ответ от Alex_Gur 26.03.2015 15:41:11

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Расчет и указание максимальной длины поля формы

Затем в нужные места вставляются текстовые поля формы. Поля формы удобно вставлять с помощью пользовательской кнопки Поле формы, о которой было сказано выше.

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

Таблица для определения примерного максимального количества символов в строке (шириной 17 см.)
Размер шрифта    Тип шрифта    Примерное максимальное количество символов в строке
10                            Times New Roman    90-95
11                            Times New Roman    80-85
12                            Times New Roman    70-75
10                            Arial                      65-70
11                            Arial                      70-75
12                            Arial                      80-85

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

9 Ответ от Alex_Gur 26.03.2015 15:50:58

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

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

Post’s attachments

Максимальная длина.jpg
Максимальная длина.jpg 49.96 Кб, 1 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

10 Ответ от Alex_Gur 26.03.2015 15:52:50

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492

Re: Как сформировать шаблон формы – делимся опытом

Другие особенности размещения поля формы

Поле формы на строке может быть центрировано или выровнено по левому краю.
Текст поля формы – без подчеркивания.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

11 Ответ от Alex_Gur 26.03.2015 15:54:14

  • Как сформировать шаблон формы – делимся опытом
  • Alex_Gur
  • Модератор
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 28.07.2011
  • Сообщений: 2,758
  • Поблагодарили: 492
  • За сообщение: 1

Re: Как сформировать шаблон формы – делимся опытом

Защита шаблона формы

Для защиты шаблона документа выполните следующие действия:
Файл – Сведения – Защита документа – Ограничить редактирование – группа Ограничения редактирования – установить флажок Разрешить только указанный способ редактирования документа – Ввод данных в поля форм.
Кнопка Да, включить защиту.
При необходимости установить пароль.

Сохраните полученный файл и проверьте корректность работы полученного шаблона формы.

Результат работы над шаблоном формы приведен в приложении.

Post’s attachments

Доверенность на получение ЭЦП 01.doc 78 Кб, 32 скачиваний с 2015-03-26 

You don’t have the permssions to download the attachments of this post.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.

Сообщений [ 11 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Как сформировать «пустые внутри» знаки
  • Как сформировать новый документ из фрагментов родительского?
  • Как автоматически сформировать длинное тире в программе MS Word
  • какие справочные разделы документа можно сформировать автоматически c
  • Формы VBA: Как создать форму
  • создание формы в шаблоне
  • Положение формы на 2-х мониторах
  • Фокус при инициализации формы, как им управлять?

Как сформировать шаблон формы – делимся опытом

Из всех текстовых редакторов самой большой популярностью заслуженно пользуется Ворд. Это с одной стороны очень простая программа, работу в которой легко освоит любой, а с другой стороны необыкновенно сложный инструмент, о многих функциях и возможностях которого большинство пользователей имеет слабое представление. Наш сайт о Microsoft Office Word даст ответ про: не работает сочетания клавиш ctrl.

На форуме сайта Ворд Эксперт вам помогут восполнить этот пробел. Здесь обсуждается все, связанное с Вордом: настройки программы, создание и форматирование документов, назначения горячих клавиш, способы автоматизации (создание шаблонов, написание макросов) и многое другое. Наш сайт о Microsoft Office Word даст ответ про: как сделать фон таблицы в ворде.

На форме можно также оставить заявку или найти готовое решение.

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

В некоторых организациях для сбора данных используются книги Microsoft Office Excel в виде форм. Эти книги обычно содержат пустые ячейки, которые можно ввести для ввода данных. Книгу можно преобразовать в шаблон формы Microsoft Office InfoPath с помощью мастера импорта в InfoPath. Благодаря преобразованию книги в шаблон формы пользователи могут использовать возможности InfoPath, такие как проверка схемы, динамические элементы управления, например повторяющиеся разделы, и бизнес-логика, например проверка данных. Кроме того, вы можете сделать шаблон формы доступным для более широкой аудитории, создав шаблон формы с поддержкой веб-браузера. Чтобы создать шаблон формы с поддержкой веб-браузера, необходимо опубликовать шаблон формы, совместимый с браузером, с сервером, на котором работает InfoPath Forms Services. Формы, основанные на шаблонах форм с поддержкой браузеров, можно заполнять с помощью веб-браузера.

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

В этой статье объясняется основная концепция и процедура преобразования книги Excel в шаблон формы InfoPath, в том числе функций и параметров, которые не поддерживаются в процессе преобразования.

В этой статье

  • Преобразование книги Excel в шаблон формы InfoPath

  • Возможности и параметры, которые не полностью поддерживаются при преобразовании

  • Преобразование книги Excel в шаблон формы InfoPath

Преобразование книги Excel в шаблон формы InfoPath

При преобразовании книги Excel в шаблон формы InfoPath она используется как чертеж для создания нового шаблона формы. Структура таблицы книги воссоздается как макетная таблица в шаблоне формы. Если вы решили включить ячейки, которые используются для сбора данных при преобразовании книги, элементы управления надписью добавляются в шаблон формы в ячейках макетной таблицы, которые соответствуют расположению полей в книге. Размер и расположение поддерживаемых ячеек, границ ячеек и заливки, а также ячейки, Объединенные или разделенные, сохраняются в результирующем шаблоне формы.

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

Чтобы лучше понять связь между книгой, которую вы преобразуете с помощью мастера импорта InfoPath и итогового шаблона формы, представим, что вы являетесь агентом страхования с книгой с именем Claims. xls, содержащей два листа. Первый лист называется Home, а второй — автомобиль. Среди столбцов каждого листа есть заголовки столбцов с типом «Описание», «сумма займа» и «покупная цена». Столбцы «сумма займа» и «цена покупки» на каждом листе форматируются так, чтобы использовался денежный тип данных. Все заголовки столбцов форматируются полужирным синим текстом. Главная книга включает формулу для расчета расписания выплат. Для ввода имени клиента используется отдельная ячейка с форматированием, примененным на всех сторонах.

Если вы используете мастер импорта для преобразования утверждений. xls в шаблон формы, создайте шаблон формы с именем Claims. xsn.

Книга Excel до и после преобразования в шаблон формы InfoPath.

Этот новый шаблон формы состоит из двух представлений. Представление по умолчанию с именем «Главная» (по умолчанию) содержит макет и форматирование на листе «Главная». Второе представление с названием «автомобиль» содержит макет и форматирование на листе «автомобиль». В каждом представлении есть таблица с типом заголовков столбцов, описанием, суммой ссуды и ценой покупки, отформатированными полужирным синим текстом, точно так же, как и в исходной книге. Тем не менее, в зависимости от параметров, выбранных в мастере импорта, некоторые функции могут отличаться в шаблоне формы.

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

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

    Примечание: Несмотря на то, что ячейки, содержащие формулы и ссылки на них, преобразуются в элементы управления с помощью текстовых полей, они не сохраняются в результирующем шаблоне формы. Вы должны повторно создать функциональные возможности, предоставленные формулой, с помощью соответствующих функций в InfoPath.

К началу страницы

Возможности и параметры, которые не полностью поддерживаются при преобразовании

Некоторые параметры и форматирование в книгах Excel не поддерживаются в InfoPath. При преобразовании книги, содержащей такие параметры, созданный шаблон формы InfoPath не будет содержать эти возможности и параметры. Например, если в книге есть верхний колонтитул с изображением, он не будет сохранен в результирующем шаблоне формы InfoPath, так как в InfoPath не поддерживаются изображения в колонтитулах.

Ниже приведен список функций и параметров, которые не сохраняются при преобразовании книги Excel в шаблон формы InfoPath.

  • Ячейки с форматом «сжать по размеру»

  • Фоновые изображения ячеек

  • Узоры фона ячеек

  • Градиенты ячеек

  • Условное форматирование

  • Проверка данных

  • Формулы

  • Макросы

  • Параметры печати (включая бумагу для изменения размера, черно-белого, центра на странице, номер первой страницы, порядок страниц, рисунки, линии сетки, параметры печати, заголовки строк и столбцов, строки и столбцы на каждой странице, масштабирование и Настройка области печати)

  • Выравнивание текста по вертикали

  • Строки, которые являются более узкими, чем высота шрифта по умолчанию 10 пт

  • WordArt

В приведенном ниже списке описаны возможности и параметры, частично поддерживаемые при преобразовании книги Excel в шаблон формы InfoPath.

Ячейки с форматированием данных     Стили и цвета, примененные к ячейкам с форматированием данных, не преобразуются. Например, если ячейка форматируется для отображения отрицательных чисел в виде красного текста, преобразуется числовое значение, а Красное форматирование текста — нет.

Гиперссылки, которые ссылаются на неподдерживаемые протоколы     Все гиперссылки преобразуются, но если гиперссылка использует протокол, отличный от http:, HTTPS:, FTP: или mailto:, гиперссылка не будет работать, когда пользователь щелкнет ссылку.

Выравнивание и форматирование колонтитулов     Верхний или нижний колонтитулы в книге Excel могут содержать левую, посередине и правую область. Эти функции объединяются при импорте в InfoPath. Например, книга с левым верхним колонтитулом, содержащим название «Ольга Вхилер», средний верхний колонтитул с названием «отчет о состоянии» и правый верхний колонтитул с датой «13 октября 2007 г.» будет преобразован в шаблон формы InfoPath, содержащий один верхний колонтитул с следующий текст: «Ольга Вхилерстатус Репортоктобер 13, 2007». Если в верхнем или нижнем колонтитуле книги есть только один раздел, текст в шаблоне формы будет выровнен соответствующим образом. Например, если только правый раздел заголовка имеет текст в книге, соответствующий текст в шаблоне формы будет выровнен по правому краю. В противном случае весь верхний колонтитул или нижний колонтитул выравнивается по левому краю при импорте. Настройка шрифта, примененная к первому разделу колонтитула в книге, применяется ко всему колонтитулу в результирующем шаблоне формы InfoPath.

Преобразование шрифта    Несмотря на то, что при создании нового шаблона форм InfoPath импортирует шрифты из книги, если их шрифты недоступны на компьютере, на котором выполняется импорт, для шаблона формы будут автоматически выбраны дополнительные шрифты.

Неявно Объединенные ячейки     Если в Excel введено больше текста, чем умещается в текущей ячейке, текст появится в верхней части последующих ячеек так же, как если бы они были объединены. Приложение InfoPath не поддерживает эту функцию. Если в преобразованной ячейке больше текста, чем ширина ячейки, текст будет перенесен на следующую строку в InfoPath. Чтобы не допустить этого, перед импортом книги выберите ячейку и количество последующих ячеек, необходимое для размещения текста, а затем объедините ячейки таким образом, чтобы текст поместился в объединенную ячейку.

<c0>Отчеты сводных таблиц </c0>      Отчеты сводной таблицы преобразуются в Макетные таблицы.

Очень большие таблицы     В InfoPath поддерживаются таблицы длиной до 63 столбцов длиной до 999 строк. Если в книге Excel превышены эти ограничения, будут преобразованы только первые 63 столбцов и 999 строк.

Примечание: Некоторые книги Excel нельзя открыть без пароля. Если это так, возможно, вы не сможете успешно импортировать ее в InfoPath. Чтобы устранить эту проблему, попробуйте удалить пароль для книги перед ее импортом. Кроме того, некоторые книги предназначены для предотвращения перемещения, удаления, скрытия или изменения имен листов и изменения других структурных элементов в книге. Если это так, возможно, вы не сможете успешно импортировать его в InfoPath. Чтобы устранить эту проблему, попробуйте удалить ограничения структурного редактирования для книги до ее импорта.

К началу страницы

Преобразование книги Excel в шаблон формы InfoPath

  1. В меню файл выберите пункт Импорт формы.

  2. В диалоговом окне Мастер импорта выберите средство импорта InfoPath для книг Excel, а затем нажмите кнопку Далее.

  3. Нажмите кнопку Обзор.

  4. Найдите и щелкните книгу Excel, которую вы хотите преобразовать, и нажмите кнопку Открыть.

  5. Чтобы изменить поведение импорта по умолчанию, нажмите кнопку Параметры, а затем выберите нужные параметры.

  6. Нажмите кнопку Готово.

    Примечание: В зависимости от макета и сложности книги Excel некоторые элементы макета или элементы управления могут отображаться не так, как ожидалось в результирующем шаблоне формы InfoPath. Поэтому после преобразования нового шаблона формы может потребоваться внести в него изменения.

К началу страницы

Печать шаблона из поля ввода в макете

Я
   luxnlex

20.11.13 — 23:30

Доброго времени суток, уважаемые форумчане!

Я только начинаю программировать на 1С, столкнулся с одной задачкой, но хоть убей мыслей нет как решить…

Взял за пример документ реализацию товаров и услуг, создал реквизит «параметры» с типом строка, на форме создал поле ввода, в нем указал в данных реквизит «параметры». В общем макете ТОРГ-12 в шапке у ячейки задал тип шаблон, а теперь собственно задачка…

Как мне сделать так, что бы например я ввожу в поле ввода текст вида

Код 1C

1

«Дата формирования документа: «+#ДатаДокумента#

и что бы он подставлялся в макет (уже в виде: Дата формирования документа: 20.11.2013 00:00)?. При чем значения не оговоренные заранее, что бы можно было в любой момент написать шаблон с одним и более параметром и это все подставлялось в макет.

Как запихнуть это все в макет? Прошу помочь, спать не смогу ведь, пока задачу не решу… Хотя бы в каком направлении копать??? Интересует очень какой тип должен быть у реквизита, нужно ли параметр переводить в строку/обратно и как (были ошибки такие просто), может быть я не правильно задал шаблон…

2 дня думаю уже никак придумать не могу

Код приводить не буду, так как, в силу тех знаний, которыми я обладаю на данный момент по 1с, просто стыдно

   mikecool

1 — 21.11.13 — 00:30

какой то развод…

   zakidonoff

2 — 21.11.13 — 00:34

(1) Почему? Ставлю себя на его место… В общем-то вопросы, для человека,только влезшего в мир программирования, вполне логичные.

   recovery_man

3 — 21.11.13 — 01:12

«Дата формирования документа: » [ДатаДокумента]

   Wobland

4 — 21.11.13 — 05:44

шаблон в ТабДоке: Дата формирования [ИмяПараметра]

при выводе: Область.Параметры.ИмяПараметра=ЗначениеПараметра

тчк

   luxnlex

5 — 21.11.13 — 09:50

(1) Почему вы так думаете? Обоснуйте пожалуйста?

   luxnlex

6 — 21.11.13 — 09:50

(2)Спасибо за понимание, действительно очень сложно, но желание научиться именно на 1с писать огромное, так как сейчас огромный спрос на программистов 1с. Занимался раньше delphi, C++, но тут чувствую себя не в своей тарелке, поэтому хочется научиться, даже не из-за денег, для себя, принципиально, что вот я могу… Бесит, когда чего-то не понимаешь…

Да, многие скажут: Гилев, Чистов в помощь, книжки различные, курсы… Но по макетам информация есть конечно и ее много, но все как-то обобщено, либо нет информации по той задаче, которую я для себя поставил. Банально макет вывести получилось, а хочется понять на все 100% что как и откуда. А курсы я считаю лучше всего проходить после получения начальных, базовых знаний, после того как пересмотрю полностью Гилева, перечитаю практическое пособие разработчика, а самое главное все это попробую.

   Wobland

7 — 21.11.13 — 09:51

ну вот. речь не мальчика, но мужа. не какая-то там Катерина19 ;)

   luxnlex

8 — 21.11.13 — 10:00

(4)Спасибо, но я так понял это предопределено будет? Я просто хотел что бы в макете был некий параметр, например <МойПараметр>, у ячейки тип шаблон (как я себе это представляю), а на форме я собственно задаю шаблон, ну например:

«Документ номер: «+#НомерДокумента#+»от «+#ДатаДокумента#+», выдан: «+#ПредставлениеОрганизации#

ну и в таком духе, причем что бы можно было менять как угодно, ну что бы не в макете задавался текст с параметрами, а что бы они туда попадали при печати торг12. Направьте пожалуйста в нужное русло?=(

P.S. прошу прощения, если некорректно выражаюсь, напоминаю, что я только начал на 1с программировать…

   luxnlex

9 — 21.11.13 — 10:03

(7) Спасибо) Посоветуйте пожалуйста как знающий человек: как при огромном желании познать программирование на 1с максимально быстро?

   zakidonoff

10 — 21.11.13 — 10:21

(8) В шаблоне выбирай не текст, а параметр в свойстве ячейки.

Тогда её содержимое отобразится с тегами <>.

Например, так <ДатаДокумента>

После этого в обработке заполнения формы в свойствах «параметры» появится «ДатаДокумента», которому можно будет присваивать значение из переменных.

   Wobland

11 — 21.11.13 — 10:46

(9) у меня на старте никого не было. вот совсем. быстро освоил технику «подглядеть в типовой такой же момент и сделать так же у себя». потом наступило время техники «а почему это оно ругается?» и как следствие техники внимательного изучения СП. и только совсем потом пришла миста со своими детскими (не всегда, впрочем) болезнями

ну и до этого пять лет верхнего образования, без этого никак

это личный опыт. а ещё я однажды лишился руки и очень быстро научился жить одной ;)

   Wobland

12 — 21.11.13 — 10:47

(8) если у ячейки шаблон, то всё в квадратных скобках — это параметры, которые можно задавать на этапе вывода

   Wobland

13 — 21.11.13 — 10:48

а ещё я кому-то пример писал

    ТабДок=ЭлементыФормы.Вывод;

    Макет=ПолучитьМакет(«Печать»);

    Область=Макет.ПолучитьОбласть(«Заголовок»);

    ТабДок.Вывести(Область);

    
    Область=Макет.ПолучитьОбласть(«Строка»);

    Выборка=Справочники.Номенклатура.Выбрать();

    Номер=0;

    Пока Выборка.Следующий() Цикл

        Номер=Номер+1;

        Область.Параметры.Номер=Номер;

        Область.Параметры.Заполнить(Выборка);

        ТабДок.Вывести(Область);

    КонецЦикла;

    ТабДок.Показать();

   luxnlex

14 — 21.11.13 — 14:12

(13)Спасибо вам за помощь огромное=) Но это, к сожалению, немного не то…(

В общем реализовал частично так:

ОбластьМакетаШапка.Параметры.Пар1 = ЭтотОбъект.МойПараметр;

где Пар1 — параметр в макете, МойПараметр — реквизит

Выводить-то выводит, но только с типом ячейки параметр (то есть грубо говоря текст), хотя нужен шаблон, там же несколько будет параметров содержаться.

Как мне донести до 1с, что нужно «Текст1: «+[параметр1]+»Текст2: «+[параметр2] заменить в макете при печати на Текст 1: ЗначениеПараметра1 Текст2: ЗначениеПараметра2

Подскажите пожалуйста, как грамотно перевести спец. символы типа [], либо ##, либо еще какой любой другой и текст содержащийся между спец. символов как параметр? Буду очень вам признателен!)

   luxnlex

15 — 21.11.13 — 14:14

(10) Параметр не устраивает, к сожалению((( Нужно несколько параметров выводить, а тут без шаблона никак я так понимаю…

   zakidonoff

16 — 21.11.13 — 14:56

(14) Ну, так и доноси…

ОбластьМакетаШапка.Параметры.Пар1 = «Текст1: «+ Строка(ЭтотОбъект.МойПараметр1) +» Текст2: » + Строка(ЭтотОбъект.МойПараметр2);

   zakidonoff

17 — 21.11.13 — 14:58

(14) Но если уж так хочешь через шаблон…

Пар1 = ОбластьМакетаШапка.Параметры.Пар1;

Пар1 = СтрЗаменить(Пар1, «[параметр1]», ЗначениеПараметра1);

Пар1 = СтрЗаменить(Пар1, «[параметр2]», ЗначениеПараметра2);

ОбластьМакетаШапка.Параметры.Пар1 = Пар1;

   Wobland

18 — 21.11.13 — 15:16

(16) издеваешься?

(14) область.параметр1=..; область.параметр2=..

могу удалённо носом тыкнуть

   mikecool

19 — 21.11.13 — 15:18

(7) ))) это она пол сменила

   Wobland

20 — 21.11.13 — 15:25

(19) от ты сравнил Папанова с Новодворской

   luxnlex

21 — 21.11.13 — 15:28

(16) (18) Это все немного не то, как присвоить параметру значение я знаю, но как присвоить одному параметру несколько параметров и текст с формы (необязательно что там номер и дата, текст вводится в любой момент произвольный), тут-то и начинаются ошибки…

Вот ссылка на скриншот что хотел сделать: http://yadi.sk/d/FskW3-5CD5EE3

ссылкой сделать не смог к сожалению тут(

и код:

ОбластьМакетаШапка.Параметры.Пар1 = ЭтотОбъект.МойПараметр;

   Wobland

22 — 21.11.13 — 15:29

(21) от оно чо, михалыч. тогда слушайся закидонофа

   Wobland

23 — 21.11.13 — 15:30

но я против отдельного поля в документе под такую херь и за правильный шаблон в макете

   luxnlex

24 — 21.11.13 — 15:31

(19)Простите, что не очень корректно и грамотно выражаю свои мысли и ставлю задачу, я только недавно начал программировать на 1с, очень сложно адаптироваться пока(

   Wobland

25 — 21.11.13 — 15:31

(24) ты не в теме, не обращай внимания ;)

   luxnlex

26 — 21.11.13 — 15:33

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

   Wobland

27 — 21.11.13 — 15:35

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

   ALFkz

28 — 21.11.13 — 15:40

Считывай текст с Табличного Документа и заменяй их на параметры которые из Формы. Типа в одной из колонок есть текст «Дата формирования документа: #ДатаДокумента#» и она идет в первой колонке

Текст=Тд.Область(R1C1).Текст;

Для сч=0 по ЭтотОбъект.Метаданные().Реквизиты.Количество()-1 цикл

        Имя=ЭтотОбъект.Метаданные().Реквизиты.получить(сч).имя;

Текст=СтрЗаменить(Пар1, «#»+СОКРЛП(Имя)+»#», ЭтотОбъект[Имя]);        

        
конеццикла;

Тд.Область(R1C1).Текст=Текст;

   Wobland

29 — 21.11.13 — 15:42

а потом человек захочет, чтобы вместо «дата документа» было «документ от» и будет насиловать каждый документ вместо того, чтобы поправить макет

   luxnlex

30 — 21.11.13 — 15:44

(27)в том то и дело, что просто присвоить значение я могу, даже запросик простенький делал уже (на форме поле добавил, кнопку выбора, привязал к реквизиту, реквизит ссылается на физ. лица), ну и по печати получал свой макет и свою область макета, делал запрос выбирал физ. лица, устанавливал параметр, выводил табдок, показывал документ, все рисует. Долго мучался правда, никакой литературы не было на тот момент. даже не знал как искать, так как информации по такой банальщине просто не было(((

Это я к тому что представление я имею…

А то что я хочу сделать, это для себя, так как до этого программировал на ооп, да, тут логика есть и потихонечку ее начал понимать, но все равно очень сложно… На той же делфе я бы сделал простенькую программку за 10 минут и БД была бы на акцессе привязана и поля бы выводились, но тут… расскажите, пожалуйста кто знает как это сделать?((((

   luxnlex

31 — 21.11.13 — 15:45

(29) так в том-то и дело, что параметры для начала я беру те, которые есть в макете торг12, а не свои, со своими другой вопрос…)

   Wobland

32 — 21.11.13 — 15:47

(31) я вижу два пути. оба имеют право на жизнь.

1) хранить «шапку» в документе;

2) формировать шапку при печати макета;

первый случай предусматривает индивидуальность, второй — унифицированность. что ты хочешь?

   Wobland

33 — 21.11.13 — 15:48

имхается мне, пока ты сам по себе тыркался, зашёл в тупик, из которого теперь не можешь выбраться…

   luxnlex

34 — 21.11.13 — 15:54

(32)Унифицированность, если я правильно понял, то это универсальность?

   Wobland

35 — 21.11.13 — 15:56

(34) нет. я имел в виду принципиально одинаковую форму шапки для любого документа. а у тебя она пока зависит от того, что вздумается юзеру в поле написать

   luxnlex

36 — 21.11.13 — 15:56

(33)Именно так(

Надо было сразу грамотно поставить задачу, но в силу знаний, коих пока по 1с немного, не получилось корректно обозначить цель, которой я хочу достичь…

   Wobland

37 — 21.11.13 — 15:57

(36) дай уже удалёнку, проще пальцем раз ткнуть ;)

   luxnlex

38 — 21.11.13 — 15:57

(35)не то что вздумается, имена параметров должны совпадать как они и заданы в макете, ну а текст что угодно может совпадать)

   luxnlex

39 — 21.11.13 — 16:00

ammyy admin подойдет? как с вами связаться, что бы номер сказать?

мой ICQ: 454313995, почта: a.shteiner@bk.ru

  

luxnlex

40 — 21.11.13 — 16:19

(37)Спасибо огромное Вам, буду думать)

Проблема с печатной формой (при выводе на печать)

Автор SuperPuper, 17 авг 2022, 08:31

0 Пользователей и 1 гость просматривают эту тему.


Покажите лучше, макет печатной формы из конфигуратора, и программный код. А то догадывается что там у Вас никто не будет.
P.S пишите какая платформа и конфигурация. Перед созданием темы.



Подозреваю, что при формировании документа на печать, текст в соответствии с печатной формой выводится целыми ячейками на листы. Если ячейка не влезает целиком в лист — она вся переносится на следующий лист и из-за этого возникают пустые области в конце предыдущего. Не смог пока что найти, как это устранить.  :xfbnsdfb:


SuperPuper, Название пунктов оставить как и есть, а подпункты объединить в одну ячейку. Тогда будет переход нормальный. 



Тут уже нужно смотреть как лучше. До какого — то пункта в одной ячейки. А следующий под пункт с другой ячейки начинать.
В конфигураторе есть предварительный просмотр документа. Смотреть как идет наложение текста.Судя по скринам текста, в самом тексте параметров нет. Так что придется подгонять текст.


ls600,
Смотрите, вот например текст из области 2 на скриншоте не влезает в область 1 и поэтому он целиком переносится на следующий лист, оставляя на предыдущем листе пустую область. Текст этот целиком находится в одной ячейке макета печатной формы. Если все ячейки объединять в одну большую — ситуация лишь усугубится, как в примере из скриншотов в моем предыдущем сообщении, где осталась пустая область и подпункты из пункта 2 не влезли целиком на листе и не перенеслись на следующий. Предполагаю, поправьте меня если я не прав, сумма высот ячейки меньше области вывода, необходимо чтобы текст из ячейки делился или разбивался на части если он не влезает на область листа, т.е. часть текста из ячейки будет заполнять области 1, а оставшаяся часть будет переноситься в область 2. Вот не могу найти как это возможно сделать…  :xfbnsdfb:

Снимок17.PNG


SuperPuper, как альтернативный вариант, для печати договоров и других «длинных» текстов используют Вордовский шаблон/документ
либо как советовали выше, формируйте макет одной областью, сами вставляйте в него разделители страниц, подгоняйте размеры ячейки/строки и сверяйтесь с просмотром.

если помогло нажмите: Спасибо!


LexaK,
Если подгонять, то тогда может случиться так, что однажды текст в «шапке» будет снова длиннее заданных размеров и форма поплывет опять. Нужно такое решение, которое было бы универсальным под любой договор и корректно переносило строки из ячеек печатной формы, заполняя листы.
Вот к примеру из-за одной лишней строки в шапке так сейчас и произошло, см. скриншоты.
Снимок18.PNG
Снимок19.PNG


Для отображения ошибок формы в шаблоне ветки вам просто нужно использовать макрос form_errors twig без разницы, если это глобальная ошибка формы или ошибка поля.

Но в моем случае глобальная ошибка не отображается как ошибка поля, поэтому я не могу использовать макрос twig form_errors для этих двух случаев. Я решил использовать макрос для ошибки поля, и я хотел бы получить глобальные ошибки формы из объекта SymfonyComponentFormFormView. Цель состоит в том, чтобы перебирать глобальные ошибки в шаблоне ветки и отображать их так, как я хочу.

На самом деле, я не могу найти какие-либо ресурсы в документации symfony2, которые могут мне помочь.

Наконец, я нашел решение самостоятельно. Для людей, которые хотят сделать то же самое, решение состоит в вызове $formView->get("errors"), который дает вам массив FormError

Я использую symfony 2.5, и он работал идеально для меня таким образом.

MyController

$error = new FormError(ErrorMessages::USER_NOT_AUTHENTICATED);
$form->addError($error);

MyView

{% for error in form.vars.errors %}
<div class="alert alert-danger" role="alert">
{{ error.messageTemplate|trans(error.messageParameters, 'validators')~'' }}
</div>
{% endfor %}

надеюсь, что это сэкономит время.

в symfony 2.3 все методы доступа были удалены в пользу публичных свойств для повышения производительности.

$formView->get("errors");

теперь:

$formView->vars["errors"];

Посетите UPGRADE-2.1.md и обратитесь к разделу «Отклонения» для получения дополнительной информации.

Введите минимум 50 символов

Очень часто бывает такое, что нужно сформировать документы по определенному шаблону, на основе каких-то данных, например, по каждому сотруднику или по каждому лицевому счету. И делать это вручную бывает достаточно долго, когда этих самых сотрудников или лицевых счетов много, поэтому сегодня мы рассмотрим примеры реализации таких задач в Excel с помощью макроса написанного на VBA Excel.

Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.

Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье —  Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.

В нашем примере мы, конечно, будем использовать простой шаблон, только для того чтобы это было просто наглядно и понятно (только в качестве примера), у Вас в свою очередь шаблон будет, как мне кажется намного сложней.

Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля

И так приступим!

Реализовывать нашу задачу будем на примере «Электронной карточке сотрудника» (я это просто придумал:), хотя может такие и на самом деле есть), т.е. документ в котором хранится личные данные сотрудника вашего предприятия, в определенном виде, именно в Excel.

Примечание! Программировать будем в Excel 2010.

И для начала приведем исходные данные, т.е. сами данные и шаблон

Данные.

Скриншот 1

Лист, на котором расположены эти данные так и назовем «Данные»

Шаблон.

Скриншот 2

Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»

Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки.

Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»

Курс по SQL для начинающих

Скриншот 3

Свои поля я назвал следующим образом:

  • ФИО – fio;
  • № — number;
  • Должность – dolgn;
  • Адрес проживания – addres;
  • Тел. № сотрудника – phone;
  • Комментарий – comment.

Код макроса на VBA Excel

Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

Скриншот 4

затем, в правой области поставьте галочку напротив пункта «Разработчик»

Скриншот 5

После вкладка разработчик станет отображаться на ленте.

Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».

Скриншот 6

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:

Sub Карточка()
'Книга
NewBook = ""
' Путь, где будут храниться наши карточки
' Т.е. в той папке, откуда запустился файл с макросом
Path = ThisWorkbook.Path
' Выбираем лист с данными
Sheets("Данные").Select
' Запускаем цикл, скажем на 100000 итераций
' Начиная со второй строки, не учитывая заголовок
For i = 2 To 100000
' Выйдем из него, когда фамилии закончатся, т.е. строки
If Cells(i, 1).Value = "" Then
        i = 100000
    Exit For
End If
' Имя файла карточки, назовем по фамилии
Name_file = Path & "" & Sheets("Данные").Cells(i, 1).Value & ".xls"
‘Выбираем лист с шаблоном
Sheets("Шаблон").Select
' Присваиваем значения нашим ячейкам, по именам которые мы задавали
    Range("fio").Value = Sheets("Данные").Cells(i, 1).Value & " " & _
        Sheets("Данные").Cells(i, 2).Value & " " & Sheets("Данные").Cells(i, 3).Value
    Range("number").Value = Sheets("Данные").Cells(i, 4).Value
    Range("addres").Value = Sheets("Данные").Cells(i, 5).Value
    Range("dolgn").Value = Sheets("Данные").Cells(i, 6).Value
    Range("phone").Value = Sheets("Данные").Cells(i, 7).Value
    Range("comment").Value = Sheets("Данные").Cells(i, 8).Value
    ' Копируем все
    Cells.Select
    Selection.Copy
    ' Создаем новую книгу или делаем ее активной 
    If NewBook = "" Then
        Workbooks.Add
        NewBook = ActiveWorkbook.Name
    Else
        Workbooks(NewBook).Activate
        Cells(1, 1).Select
    End If
    ' Вставляем данные в эту книгу
    Application.DisplayAlerts = False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ' Сохраняем с нашим новым названием
    ActiveWorkbook.SaveAs Filename:= _
    Name_file, FileFormat:=xlExcel8, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    NewBook = ActiveWorkbook.Name
    Application.DisplayAlerts = True
    ' Снова активируем файл с макросом и выбираем лист
    Workbooks("Макрос.xls").Activate
    Sheets("Данные").Select
' Переходим к следующей строке
Next i
' Закроем книгу
Workbooks(NewBook).Close
' Выведем сообщение об окончании
MsgBox ("Выполнено!")
End Sub

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

Скриншот 7

и после выполнения у Вас в той же папке появится вот такие файлы

Скриншот 8

Вот с таким содержимым:

Скриншот 9

Для удобства можете на листе с данными создать кнопку и задать ей событие выполнить наш только что созданный макрос, и после чего простым нажатием выполнять этот макрос. Вот и все! Удачи!

Делаю выгрузку из datagridview

введите сюда описание изображения

в документ Word

введите сюда описание изображения

с помощью этого кода:

string num = null;
int y = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку.
    if (num == null)
    {
        wordDocument.Range(tbl.Cell(i + 2, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Text = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
        num = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
    }
    else
    {
        if (num == dataGridView1.Rows[i].Cells["Column2"].Value.ToString())
        {
            y++;
            //тут он не может найди запрашиваемый номер семейства
            wordDocument.Range(tbl.Cell(i + 2 - y, 1).Range.Start, tbl.Cell(i + 2, 1).Range.End).Cells.Merge();
            //объединение второй колонки
            wordDocument.Range(tbl.Cell(i + 2 - y, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Cells.Merge();
        }
        else
        {//если нет, то просто заполняем данными
            wordDocument.Range(tbl.Cell(i + 2, 1).Range.Start, tbl.Cell(i + 2, 1).Range.End).Text = dataGridView1.Rows[i].Cells["Column1"].Value.ToString();
            wordDocument.Range(tbl.Cell(i + 2, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Text = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
            num = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
            y = 0;
        }
    }
    //заполняем остальные колонки данными
    wordDocument.Range(tbl.Cell(i + 2, 3).Range.Start, tbl.Cell(i + 2, 3).Range.End).Text = dataGridView1.Rows[i].Cells["Column3"].Value.ToString();
    wordDocument.Range(tbl.Cell(i + 2, 4).Range.Start, tbl.Cell(i + 2, 4).Range.End).Text = dataGridView1.Rows[i].Cells["Column4"].Value.ToString();
    wordDocument.Range(tbl.Cell(i + 2, 5).Range.Start, tbl.Cell(i + 2, 5).Range.End).Text = stepennn.ShowSubText(dataGridView1.Rows[i].Cells["Column5"].Value.ToString(), dataGridView1.Rows[i].Cells["Column6"].Value.ToString());
    wordDocument.Range(tbl.Cell(i + 2, 6).Range.Start, tbl.Cell(i + 2, 6).Range.End).Text = dataGridView1.Rows[i].Cells["Column6"].Value.ToString();
    wordDocument.Range(tbl.Cell(i + 2, 7).Range.Start, tbl.Cell(i + 2, 7).Range.End).Text = dataGridView1.Rows[i].Cells["Column7"].Value.ToString();
}

Делаю объединение строк в первой и во второй колонке. Если убрать объединение ячеек в первой колонке, то всё работает как надо. Во второй колонке объединение происходит нормально, а на первой происходит ошибка — Запрашиваемый номер семейства не существует. По логике всё должно работать, но чё то не могу додумать что не так

На третьем цикле происходит ошибка

Маленький пример

private void button1_Click(object sender, EventArgs e)
{
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
    var doc =word.Documents.Open( @"C:\111.docx", ReadOnly: true);
    word.Visible = true; 
    object missing = Type.Missing;
    Microsoft.Office.Interop.Word.Table tbl = word.ActiveDocument.Tables[1];
    tbl.Borders.Enable = 1;

    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
    tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
    doc.Range(tbl.Cell(2, 2).Range.Start, tbl.Cell(4, 2).Range.End).Cells.Merge();
    doc.Range(tbl.Cell(2, 3).Range.Start, tbl.Cell(3, 3).Range.End).Cells.Merge();
}

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

Почему так, не пойму

Понравилась статья? Поделить с друзьями:
  • Ошибка при создании эпл айди
  • Ошибка при создании эп компонент криптопро эп browser plug in не установлен
  • Ошибка при сканировании частоты 11766 триколор
  • Ошибка при создании хранилища cannot read properties of undefined reading createobjectasync
  • Ошибка при сканировании повторите попытку hp