Иллюстрация к циклу заметок про работу с Microsoft Word из C#. Проект Visual Studio 2010, два класса - WordDocument и WordSelection (просто часть документа, обертка над Range), реализующие описанные приемы, тестовый шаблон и простенькое окошко, позволяющее протестировать работу классов и наглядно увидеть, как именно все цепляется к событиям формы для самых начинающих. Если вы любите умные слова, то эти классы используют шаблон Фасад.
Тестовый проект с классами и небольшой формой для Visual Studio 2010 -- WordTest.zip
Примеры финального кода с использованием приведенных в проекте классов
Открытие шаблона
private string pathToTemplate { get { return Application.StartupPath + "\\" + pathTextBox.Text; } }
WordDocument wordDoc; try { wordDoc = new WordDocument(pathToTemplate); } catch (Exception error) { MessageBox.Show("Ошибка при открытии шаблона Word. Подробности " + error.Message); return; } wordDoc.Visible = true;
Вставка текста на закладку
wordDoc.SetSelectionToBookmark(bookmarkTextBox.Text); wordDoc.InsertParagraphAfter("Вставляем ПЕРВЫЙ параграф с текстом. Параметры по умолчанию."); wordDoc.InsertParagraphAfter(); // пустой wordDoc.InsertParagraphAfter("Вставляем ВТОРОЙ параграф с текстом. Жирный, выравнивание справа. Размер шрифта 8."); wordDoc.Selection.Bold = true; wordDoc.Selection.Aligment = TextAligment.Right; wordDoc.Selection.FontSize = 8; wordDoc.InsertParagraphAfter(); // пустой wordDoc.InsertParagraphAfter("Вставляем ТРЕТИЙ параграф с текстом. Курсив, выравнивание по центру. Размер шрифта 18. Рамка."); wordDoc.Selection.Italic = true; wordDoc.Selection.Aligment = TextAligment.Center; wordDoc.Selection.FontSize = 18; wordDoc.Selection.Border = BorderType.Double; wordDoc.InsertParagraphAfter(); // пустой wordDoc.InsertParagraphAfter("Вставляем ЧЕТВЕРТЫЙ параграф с текстом. Параметры по умолчанию. Размер шрифта 12."); wordDoc.Selection.FontSize = 12;
Внутренне устройство этих классов и теоретические принципы работы Word разобраны в дальнейших статьях этого цикла.
- Работаем с 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
WordDocument wordDoc что это такое???? помогите. я код всталяю у меня все красным красно...
Все примеры кода на этой странице используют специальные классы для работы с Word, без этих классов они работать не будут.
Описывать определение классов это правило хорошего тона.
Вот и зачем вы такие умные сюда лезете.
Человек пришел сюда, чтобы чему-то научиться.
Задал первый вопрос, ты его сразу же отшил.
Петрос, если ты такой умный, то почему читаешь эти статьи?
Подскажите а как после в ставки текста из поля textbox вставляемый текст записать в бд.
Просто у меня после этого в бд записывает пустоту
Добрый день.
Большое спасибо за статью.
Ещё бы Вы сказали, где почитать про все эти "параграфы", что это такое и с чем их едят.
Вот сейчас вставляю программно картинки в ворд документ.
Надо, чтобы каждая картинка на новом листе, а они друг за другом идут.
Подскажите, можно что-либо сделать?
for (int i = 6; i > 0; i--)
{
// Add a page break.
object break_type3 = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
para.Range.InsertBreak(ref break_type3);
para = word_doc.Paragraphs.Add(ref missing);
if(i == 1)
{
Microsoft.Office.Interop.Word.InlineShape map = word_doc.InlineShapes.AddPicture(logoFileName);
map.Height = 200;
map.Width = 200;
map.Range.InsertAfter(Environment.NewLine + "Clinica: " + "Best" + Environment.NewLine +
"Doctor: " + "Petrov" + Environment.NewLine +
"Prof: " + "Doctor" + Environment.NewLine);
}
else
{
Microsoft.Office.Interop.Word.InlineShape map = word_doc.InlineShapes.AddPicture(imageName1);
map.Height = 120;
map.Width = 160;
map.Range.InsertAfter(Environment.NewLine + "Patient Name: " + "Sidorova A. A." + Environment.NewLine +
"Date: " + DateTime.Now.Date.ToString() + Environment.NewLine +
"Time: " + DateTime.Now.TimeOfDay.ToString() + Environment.NewLine +
"Picture Number " + i.ToString() + Environment.NewLine +
"Diagnose: " + "No yet" + Environment.NewLine);
}
}