Как создать документ Word в C#
В этом примере показано, как заставить C# создать документ Word. Сначала откройте диалоговое окно «Добавить ссылки». На вкладке COM выберите «Библиотека объектов Microsoft Word 14.0» (или любую другую версию, установленную в вашей системе).
Добавьте следующий с помощью оператора, чтобы упростить работу с пространством имен Word. Часть Word = означает, что вы можете использовать Word как псевдоним для пространства имен.
using Word = Microsoft.Office.Interop.Word;
В этом примере используется следующий код для создания нового документа Word и добавления в него текста.
// Создаем документ Word....
private void btnGo_Click (отправитель объекта, EventArgs e)
{
// Получить объект приложения Word.
Word._Application word_app = new Word.ApplicationClass ();// Сделать Word видимым (необязательно).
word_app.Visible = true;// Создаем документ Word.
object missing = Type.Missing;
Word._Document word_doc = word_app.Documents.Add (
ref missing, ref missing, ref missing, ref missing);// Создаем абзац заголовка.
Word.Paragraph para = word_doc.Paragraphs.Add (ref missing);
para.Range.Text = "Кривая хризантемы";
object style_name = "Заголовок 1";
para.Range.set_Style (ref style_name);
para.Range.InsertParagraphAfter ();// Добавить текст.
para.Range.Text = «Сделать кривую хризантемы» +
«используйте следующие параметрические уравнения, когда t идет» +
"от 0 до 21 *? для генерации" +
«точки, а затем соединить их»;
para.Range.InsertParagraphAfter ();// Сохраним текущий шрифт и начнем с использования Courier New.
string old_font = para.Range.Font.Name;
para.Range.Font.Name = "Courier New";// Добавим уравнения.
para.Range.Text =
"r = 5 * (1 + Sin (11 * t / 5)) - \ n" +
«4 * Sin (17 * t / 3) ^ 4 * \ n" +
«Sin (2 * Cos (3 * t) - 28 * t) ^ 8 \ n" +
"x = r * Cos (t) \ n" +
"y = r * Sin (t)";// Начнем новый абзац, а затем
// вернемся к исходному шрифту.
para.Range.InsertParagraphAfter ();
para.Range.Font.Name = old_font;// Сохраним документ.
object filename = Path.GetFullPath (
Path.Combine (Application.StartupPath, ".. \\ ..")) +
"\\ test.doc";
word_doc.SaveAs(ref filename, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing);// Закрыть.
object save_changes = false;
word_doc.Close (ref save_changes, ref missing, ref missing);
word_app.Quit (ref save_changes, ref missing, ref missing);
}
В этом примере видится сервер Word. В реальном приложении вы можете захотеть сохранить его скрытым.
Объектная модель Word использует множество вызовов методов, которые по какой-то причине принимают множество параметров по ссылке, даже если они не изменяются методами. Это означает, что вы должны поместить значения для этих параметров в переменные. Например, вы не можете использовать true как логический параметр, потому что вы не можете передавать константу по ссылке. Аналогично, вы не можете использовать литеральную строку, такую как C: \ wherever \ test.doc для имени файла, который вы открываете, потому что это не назначаемая переменная.
Код создает специальную переменную с именем missing, которая имеет значение Type.Missing. Код может использовать это значение для любых необязательных параметров, которые ему не нужно передавать методам Word. Затем программа использует его при вызове вызова Documents.Add сервера Word, который создает новый документ Word.
Теперь программа начинает добавлять текст в документ. Он добавляет объект Paragraph к коллекции документа Paragraphs.
Одним из наиболее важных объектов в Word является Range. A Диапазон представляет собой кусок документа. Код устанавливает текст нового абзаца в «Кривую хризантемы». Затем он устанавливает стиль объекта Range в «Заголовок 1.». Снова обратите внимание на нечетный способ, которым он должен поместить значение в переменную перед вызовом set_Style, чтобы он мог передавать имя стиля по ссылке.
Затем код вызывает метод Range объекта InsertParagraphAfter. Это добавляет метку абзаца после текущего текста объекта Range и обновляет Range, чтобы перейти к новому абзацу. Теперь Range готов добавить больше текста после первого абзаца.
Код снова устанавливает текст объекта Range для добавления нового текста и вызовов InsertParagraphAfter снова.
Далее код добавляет некоторый текст, отформатированный как код с шрифтом Courier New. Он сохраняет имя текущего шрифта и устанавливает шрифт объекта Range в Courier New. С этого момента новый текст будет иметь этот шрифт.
Код снова устанавливает текст объекта Range и добавляет новый знак абзаца. Затем он восстанавливает исходное имя шрифта, поэтому будущий текст будет в исходном шрифте.
Затем код вызывает метод SaveAs документа Word для сохранения нового документа. Это перезаписывает любой существующий файл с этим именем без предупреждения. Если вы хотите убедиться, что файл еще не существует, используйте File.Exists для проверки.
Наконец, код закрывает документ Word и приложение Word.