Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
SmirnoFF.Oleg
65 / 63 / 19
Регистрация: 13.12.2011
Сообщений: 274
#1

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

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

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

Пример создания word-отчета можно посмотреть в моей теме (описаны все шаги + какие библиотеки подключаем) http://www.cyberforum.ru/wpf-silverlight/thread451720.html

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

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

Код для примера:
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
Здравствуйте. Приложение создано на .NET Framework 3.0 В приложении в ворд...

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

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

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

Считать текст из Word посредством Microsoft.Office.Interop.Word
Необходимо считать форматированный текст из Word посредством...

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

7
Vorona
Peace 2 all shining faces
671 / 533 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
22.03.2012, 01:36 #2
хмм я конечно не специалист в этом, но если работает в 2010 офисе а в 2003 - нет, то может стоить выполнять проэкт используя более раннюю версию фреймворка?
0
alexsave
256 / 186 / 30
Регистрация: 18.08.2010
Сообщений: 229
Завершенные тесты: 2
22.03.2012, 06:41 #3
Нет, дело в том, что версия сборки Microsoft.Office.Iterop.Word старая у пользователей, у которых установлен MS Office 2003. Недавно здесь писал конвертор из DOC в XPS, там таки же проблемы со старой версией данной библиотеки
1
SmirnoFF.Oleg
65 / 63 / 19
Регистрация: 13.12.2011
Сообщений: 274
24.03.2012, 14:21  [ТС] #4
Цитата Сообщение от alexsave Посмотреть сообщение
Нет, дело в том, что версия сборки Microsoft.Office.Iterop.Word старая у пользователей, у которых установлен MS Office 2003. Недавно здесь писал конвертор из DOC в XPS, там таки же проблемы со старой версией данной библиотеки
Не решили проблему?
0
Nukutu
176 / 102 / 12
Регистрация: 22.03.2010
Сообщений: 456
24.03.2012, 14:41 #5
Цитата Сообщение от SmirnoFF.Oleg Посмотреть сообщение
Не решили проблему?
Просто в своем приложении необходимо вкладывать для пользователей сборку Microsoft.Office.Interop.Word. При установке, она автоматически будет устанавливаться.
0
SmirnoFF.Oleg
65 / 63 / 19
Регистрация: 13.12.2011
Сообщений: 274
25.03.2012, 15:43  [ТС] #6
Цитата Сообщение от Nukutu Посмотреть сообщение
Просто в своем приложении необходимо вкладывать для пользователей сборку Microsoft.Office.Interop.Word. При установке, она автоматически будет устанавливаться.
Можно поподробнее, пожалуйста?! Какие от меня действия должны быть?
0
Nukutu
176 / 102 / 12
Регистрация: 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
65 / 63 / 19
Регистрация: 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
Доброго времени суток, форумчане! Подскажите, пожалуйста, как можно...

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

Печать документа в WORD 2003
Возникла проблема при печати учебной работы в WORD 2003. Один принтер (HP...

Генерация Word-документа посредством ASP
Подскажите, вот есть БД. В ней данные, разумеется. Нужно взять данные и...


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

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

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