Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
#1

Не работает генерация документа MS Word с установленным MS Office 2003 - C# WPF

22.03.2012, 00:18. Просмотров 1125. Ответов 7
Метки нет (Все метки)

Почему не работает генерация документа MS Word с установленным MS Office 2003? Работает только с MS Office 2010!

Пример создания word-отчета можно посмотреть в моей теме (описаны все шаги + какие библиотеки подключаем) Создание word-отчета (*.doc) в WPF

Какие ошибки выдает сейчас сказать не могу, нужно тестировать.

Есть соображения?

Код для примера:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
       Word.Application wrdApp;
        Word._Document wrdDoc;
        Object oMissing = System.Reflection.Missing.Value;
        Object oFalse = false;                    
                    Word.Selection wrdSelection;
                    Word.MailMerge wrdMailMerge;
                    Word.MailMergeFields wrdMergeFields;
                    Word.Table wrdTable;
                    string StrToAdd;
 
                    // Create an instance of Word  and make it visible.
                    wrdApp = new Word.Application();
                    wrdApp.Visible = false;
 
                    // Add a new document.
                    wrdDoc = wrdApp.Documents.Add(ref oMissing, ref oMissing,
                        ref oMissing, ref oMissing);
                    wrdDoc.Select();
 
                    wrdApp.Selection.PageSetup.Orientation = WdOrientation.wdOrientLandscape;
 
 
                    wrdSelection = wrdApp.Selection;
                    wrdMailMerge = wrdDoc.MailMerge;
 
                    // Create a string and insert it into the document.    
                    wrdSelection.ParagraphFormat.SpaceAfter = 0;
                    StrToAdd = ". № " + m.textBox1.Text + "/" + m.textBox4.Text + "\r\nот " + System.DateTime.Now.ToString("dd.MM.yyyy");
                    wrdSelection.ParagraphFormat.Alignment =
                        Word.WdParagraphAlignment.wdAlignParagraphCenter;
                    wrdSelection.Font.Bold = 1;
                    wrdSelection.Font.Size = 18;
                    wrdSelection.Font.Name = "Times New Roman";
                    wrdSelection.ParagraphFormat.LineSpacing = 13;
                    wrdSelection.TypeText(StrToAdd);
 
                    InsertLines(1);
                    wrdSelection.ParagraphFormat.SpaceAfter = 10;
                    wrdSelection.PageSetup.LeftMargin = 15;
                    wrdSelection.PageSetup.RightMargin = 15;
                    wrdSelection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify;
                    wrdSelection.Font.Bold = 0;
                    wrdSelection.Font.Size = 12;
                    wrdSelection.ParagraphFormat.LineSpacing = 10;
 
                    wrdSelection.Font.Italic = 1;
                    wrdSelection.TypeText("Наименование и код:\n");
                    wrdSelection.Font.Italic = 0;
                    wrdSelection.ParagraphFormat.LeftIndent = 10;
                    wrdSelection.TypeText(m.textBox3.Text + " (" + m.textBox4.Text + ")\n");
                    wrdSelection.ParagraphFormat.LeftIndent = 0;
                    wrdSelection.Font.Italic = 1;
                    wrdSelection.TypeText("Предмет:\n");
                    wrdSelection.Font.Italic = 0;
                    wrdSelection.ParagraphFormat.LeftIndent = 10;
                    wrdSelection.TypeText(m.textBox5.Text + "\n");
                    wrdSelection.ParagraphFormat.LeftIndent = 0;
 
 
                   ...
 
                    // генерируем таблицу
                    gentable(wrdSelection, colrows + 2, colcells + 1);
                    wrdSelection.Tables[1].Rows.SetLeftIndent(5, WdRulerStyle.wdAdjustNone);
 
                    // Go to the end of the document.
                    Object oConst1 = Word.WdGoToItem.wdGoToLine;
                    Object oConst2 = Word.WdGoToDirection.wdGoToLast;
                    wrdApp.Selection.GoTo(ref oConst1, ref oConst2, ref oMissing, ref oMissing);
 
                    wrdSelection.Font.Size = 12;
 
                    ...
 
                    // генерируем таблицу
                    gentablea(wrdSelection, ...);
 
                    wrdDoc.Saved = true;
 
                    object fileName = System.IO.Directory.GetCurrentDirectory() + "\\tmp\\izv.doc";
                    wrdDoc.SaveAs2(ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                    wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                    wrdApp.Quit(ref oFalse, ref oMissing, ref oMissing);
 
                    // Release References.
                    wrdSelection = null;
                    wrdMailMerge = null;
                    wrdMergeFields = null;
                    wrdDoc = null;
                    wrdApp = null;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 00:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает генерация документа MS Word с установленным MS Office 2003 (C# WPF):

Запуск MS Word из приложения. Не работает с Office 2003 - C#
Здравствуйте. Приложение создано на .NET Framework 3.0 В приложении в ворд добавляется текст и сохраняется документ, после этого документ...

Запуск MS Word из приложения. Не работает с Office 2007 - C#
Подскажите, что делать! Создал проект под .NET Framework 2.0 Использую MS Word для проверки орфографии в приложении c#: ...

Microsoft.Office.Interop.Word не работает на клиентском компьютере - C#
Приложение C# написанное в VS 2012, подключила сборку Microsoft.Office.Interop.Word,все работает, а у клиентов нет.У клиента и у меня...

Использование Microsoft.Office.Interop.Word на компьютере без установленного пакета MS office - C#
Есть приложение, которое использует Microsoft.Office.Interop.Word, на компах с установленным офисом 2010, все нормально работает, если...

Считать текст из Word посредством Microsoft.Office.Interop.Word - C#
Необходимо считать форматированный текст из Word посредством Microsoft.Office.Interop.Word. По большей части нужно не сколько само...

Программа с использованием библиотек MS Office 2010 не работает с Office 2003 - VBA
Есть юзерформа, вызывается кнопкой с листа в ворде. в юзерформе идёт обмен данными с таблицей эксель и наполнение исходного документа. ...

7
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
22.03.2012, 01:36 #2
хмм я конечно не специалист в этом, но если работает в 2010 офисе а в 2003 - нет, то может стоить выполнять проэкт используя более раннюю версию фреймворка?
0
alexsave
254 / 184 / 13
Регистрация: 18.08.2010
Сообщений: 229
Завершенные тесты: 2
22.03.2012, 06:41 #3
Нет, дело в том, что версия сборки Microsoft.Office.Iterop.Word старая у пользователей, у которых установлен MS Office 2003. Недавно здесь писал конвертор из DOC в XPS, там таки же проблемы со старой версией данной библиотеки
1
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
24.03.2012, 14:21  [ТС] #4
Цитата Сообщение от alexsave Посмотреть сообщение
Нет, дело в том, что версия сборки Microsoft.Office.Iterop.Word старая у пользователей, у которых установлен MS Office 2003. Недавно здесь писал конвертор из DOC в XPS, там таки же проблемы со старой версией данной библиотеки
Не решили проблему?
0
Nukutu
176 / 102 / 2
Регистрация: 22.03.2010
Сообщений: 456
24.03.2012, 14:41 #5
Цитата Сообщение от SmirnoFF.Oleg Посмотреть сообщение
Не решили проблему?
Просто в своем приложении необходимо вкладывать для пользователей сборку Microsoft.Office.Interop.Word. При установке, она автоматически будет устанавливаться.
0
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
25.03.2012, 15:43  [ТС] #6
Цитата Сообщение от Nukutu Посмотреть сообщение
Просто в своем приложении необходимо вкладывать для пользователей сборку Microsoft.Office.Interop.Word. При установке, она автоматически будет устанавливаться.
Можно поподробнее, пожалуйста?! Какие от меня действия должны быть?
0
Nukutu
176 / 102 / 2
Регистрация: 22.03.2010
Сообщений: 456
25.03.2012, 19:53 #7
Цитата Сообщение от SmirnoFF.Oleg Посмотреть сообщение
Можно поподробнее, пожалуйста?! Какие от меня действия должны быть?
Как уже говорилось, устанавливается версия .dll, соответственно установленного у Вас Microsoft Office. Т.е., если у Вас установлен Microsoft Office 2010, то и версия .dll будет его.
Если же пользователи не имеют установленного Microsoft Office 2010 или выше , то прога будет искать у него соответствующую биббдиотеку, правда безуспешно.
Что надо сделать в решении:
На скринах у меня Ексель, то же самое для Word.
Первый скрин показывает, что надо включить True свойство "Копировать локально".
Второй скрин показывает, что, при включенном True, при публикации через ClickOne необходимая .dll включается (она сама включается, ничего делать не надо) в установочный файл.
Когда пользователь запускает установочный файл, то, если данная .dll у него не установлена, то предлагается установить. Таким образом, если у пользователя даже нелицензионный Microsoft Office 2003, то устанавливается необходимая билиотека с Microsoft Office 2007 (в моем варианте). Если же у Вас Microsoft Office 2010, то будет его библиотека устанавливаться.
0
Миниатюры
Не работает генерация документа MS Word с установленным MS Office 2003   Не работает генерация документа MS Word с установленным MS Office 2003  
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
26.03.2012, 11:35  [ТС] #8
Цитата Сообщение от Nukutu Посмотреть сообщение
Как уже говорилось, устанавливается версия .dll, соответственно установленного у Вас Microsoft Office. Т.е., если у Вас установлен Microsoft Office 2010, то и версия .dll будет его.
Если же пользователи не имеют установленного Microsoft Office 2010 или выше , то прога будет искать у него соответствующую биббдиотеку, правда безуспешно.
Что надо сделать в решении:
На скринах у меня Ексель, то же самое для Word.
Первый скрин показывает, что надо включить True свойство "Копировать локально".
Второй скрин показывает, что, при включенном True, при публикации через ClickOne необходимая .dll включается (она сама включается, ничего делать не надо) в установочный файл.
Когда пользователь запускает установочный файл, то, если данная .dll у него не установлена, то предлагается установить. Таким образом, если у пользователя даже нелицензионный Microsoft Office 2003, то устанавливается необходимая билиотека с Microsoft Office 2007 (в моем варианте). Если же у Вас Microsoft Office 2010, то будет его библиотека устанавливаться.
Спасибо за подробный ответ, попробуем.
0
26.03.2012, 11:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2012, 11:35
Привет! Вот еще темы с ответами:

Аналог content control в MS Office Word 2003 - MS Word
Доброго времени суток, форумчане! Подскажите, пожалуйста, как можно организовать content control в Word 2003?

Соединение Delphi c Microsoft Office Excel - Word 2003 - Delphi
И снова здравствуйте) спасибо ребятам "Санек25 и БогДелфей" за решение предыдущей проблемы, очень помогли с изображениями) рис.1.))) Но...

Печать документа в WORD 2003 - MS Word
Возникла проблема при печати учебной работы в WORD 2003. Один принтер (HP Deskjet D4263) не полностью печатает номер страницы в нижнем...

Работа с MS Word - генерация выходного документа - C++ Qt
Доброго времени суток! Передо мной стоит следующая задача: имеется файл шаблона в формате MS word (.doc или .docx), в него необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru