Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
1
.NET 4.x

Microsoft.Office.Interop.Word работает только на одном ПК

30.10.2017, 14:14. Показов 3929. Ответов 16
Метки нет (Все метки)

Вот не могу понять в чем проблема, работал дома надо проектом, который импортирует данные в Word и Ecxel дома стоит Office 2016 все работало
Но когда начел на работе тестировать программу она при импорте в Word и Ecxel завершается аварийно, вчем может быть проблема ?)
Подключал я Microsoft.Office.Interop. через NuGet Package Manager и вроде бы была версия Microsoft.Office.Interop 15

Как мне кажется наверное проблема с версий Microsoft office если это так, подскажите как можно сделать так что бы на всех ПК проходил нормально импорт

P.S. на работе стоит Office 2010
Вот ошибка
Microsoft.Office.Interop.Word работает только на одном ПК
0

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

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2017, 14:14
Ответы с готовыми решениями:

Альтернатива Microsoft.Office.Interop.Word
Если альтернатива пространства Microsoft.Office.Interop.Word?Мне нужно выложить программу на сервер...

Microsoft.Office.Interop.Word сохранение файла
Требуется сохранение файла. Как это сделать? try { _document =...

Как установить компонент microsoft.office.interop.word?
Скачал компонент microsoft.office.interop.word Как его установить?

В visual studio не видно Microsoft.Office.Interop.Word
у меня в visual studio не видно Microsoft.Office.Interop.Word В чём проблема?

16
451 / 216 / 71
Регистрация: 25.05.2012
Сообщений: 936
Записей в блоге: 1
30.10.2017, 14:40 2
Matroskin_Kot, Технологию Interop можно не использовать, если вы подключите к проекту стороннюю библиотеку для работы с файлами .docx
Например
https://github.com/xceedsoftware/docx

Тогда неважно какая версия офиса установлена и установлен ли офис вообще. Ваше приложение будет самодостаточным в плане экспорта/импорта в формате .docx
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 15:08  [ТС] 3
Цитата Сообщение от NewOrdered Посмотреть сообщение
Matroskin_Kot, Технологию Interop можно не использовать, если вы подключите к проекту стороннюю библиотеку для работы с файлами .docx
Например
https://github.com/xceedsoftware/docx
Тогда неважно какая версия офиса установлена и установлен ли офис вообще. Ваше приложение будет самодостаточным в плане экспорта/импорта в формате .docx
это мне надо переделовать проект ?

Добавлено через 37 секунд
а Ecxel

Добавлено через 1 минуту
как ее установить ?
0
451 / 216 / 71
Регистрация: 25.05.2012
Сообщений: 936
Записей в блоге: 1
30.10.2017, 16:09 4
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
это мне надо переделовать проект ?
да, в той части что отвечает за работу с .docx
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
а Ecxel
для экспорта/импорта в .xlsx есть другие библиотеки, например Excel Package Plus
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
как ее установить ?
скачать библиотеку, добавить ссылку в проект.
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 16:45  [ТС] 5
Цитата Сообщение от NewOrdered Посмотреть сообщение
скачать библиотеку, добавить ссылку в проект.
а какой там dll я скачал но не чего не нашел (

Добавлено через 14 минут
Можно решить проблему без переписки кода ?
0
451 / 216 / 71
Регистрация: 25.05.2012
Сообщений: 936
Записей в блоге: 1
30.10.2017, 16:57 6
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
а какой там dll я скачал но не чего не нашел (
можно установить с помощью менеджера пакетов NuGet
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 17:03  [ТС] 7
Цитата Сообщение от NewOrdered Посмотреть сообщение
можно установить с помощью менеджера пакетов NuGet
а как называеться библиотека что я ее нашел в менеджера пакетов NuGet
0
Неадекват
1443 / 1193 / 233
Регистрация: 02.04.2010
Сообщений: 2,731
30.10.2017, 17:08 8
Matroskin_Kot, Вам нужно использовать или сторонние библиотеки, как предложено выше. Либо использовать позднее связывание, тогда код не будет зависеть от версии офиса установленной на компе пользователя (с некоторыми нюансами естественно).
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 17:17  [ТС] 9
Цитата Сообщение от freeba Посмотреть сообщение
Либо использовать позднее связывание
то есть использовать поздню версию Microsoft Inport ?
если да то как найти поздью версию и как ее установить ?
сейчас у меня стоит версия 15, как я понимаю мне желательно использовать версию что бы подходила к версии от microsoft office xp
0
Неадекват
1443 / 1193 / 233
Регистрация: 02.04.2010
Сообщений: 2,731
30.10.2017, 17:28 10
Цитата Сообщение от Matroskin_Kot Посмотреть сообщение
то есть использовать поздню версию Microsoft Inport ?
Нет, это совсем никакую версию не подключать. В 2013 решал схожую задачу, набросал библиотеку, полностью рабочая до сих пор на любой версии офиса, даже на 95.
0
Вложения
Тип файла: zip SampleExportExcel.zip (87.4 Кб, 26 просмотров)
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 17:34  [ТС] 11
А скажите как ее устнаовить и что поменять в моем коде надо ?) что бы ваша библиотека работала

Добавлено через 1 минуту
Подскажите у вас есть возможность выбирать путь сохранения
0
Неадекват
1443 / 1193 / 233
Регистрация: 02.04.2010
Сообщений: 2,731
30.10.2017, 17:39 12
Ничего не надо, там исходник библиотеки из двух файлов, где и можно посмотреть как оно "внутре" работает. Да метод сохранения там есть.

PS: А вот что в вашем коде надо поменять, я вам не скажу, ввиду того что его не видел.
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
30.10.2017, 17:41  [ТС] 13
Цитата Сообщение от freeba Посмотреть сообщение
Ничего не надо, там исходник библиотеки из двух файлов, где и можно посмотреть как оно "внутре" работает. Да метод сохранения там есть.
PS: А вот что в вашем коде надо поменять, я вам не скажу, ввиду того что его не видел.
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
public static void Export_Data_To_Ecxel(DataGridView dataGridView_Main, string filename, string filter)
        {
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            //ExcelApp.GetSaveAsFilename();
            Microsoft.Office.Interop.Excel.Workbook ExcelWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet ExcelWorkSheet;
            //Книга.
            ExcelWorkBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1);
 
            for (int i = 0; i < dataGridView_Main.Rows.Count; i++)
            {
                for (int j = 2; j < dataGridView_Main.ColumnCount; j++)
                {
                    ExcelApp.Cells[i + 1, j - 1] = dataGridView_Main.Rows[i].Cells[j].Value;
                }
            }
            ExcelApp.Cells[1, 1] = "ПІБ";
            ExcelApp.Cells[1, 2] = "Дата народження";
            ExcelApp.Cells[1, 3] = "ВПО";
            ExcelApp.Cells[1, 4] = "Людина з інвалідністю";
 
            
 
 
            //Вызываем нашу созданную эксельку.
            ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
 
            ExcelApp.GetSaveAsFilename(filename, filter);
        }
0
Неадекват
1443 / 1193 / 233
Регистрация: 02.04.2010
Сообщений: 2,731
30.10.2017, 17:49 14
Лучший ответ Сообщение было отмечено Matroskin_Kot как решение

Решение

Примерно так оно будет выглядеть:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 using (var excel = new Excel())
            {
                Document doc = new Document(excel.Document);
                doc.AddSheet("NEW");
 
                for (int i = 0; i < dataGridView_Main.Rows.Count; i++)
                {
                    for (int j = 2; j < dataGridView_Main.ColumnCount; j++)
                    {
                        doc[i + 1, j - 1] = dataGridView_Main.Rows[i].Cells[j].Value;
                    }
                }
 
                doc[1, 1] = "ПІБ";
                doc[1, 2] = "Дата народження";
                doc[1, 3] = "ВПО";
                doc[1, 4] = "Людина з інвалідністю";
 
                doc.SaveAs(filepath);
            }
1
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
31.10.2017, 14:47  [ТС] 15
Ваша библиотека работает, подскажите как мне решить проблему с Word

Добавлено через 2 часа 6 минут
Не могу понять почему у меня файл не сохрнаться ( как бы названия документу присваиваться а файла нету вот я так делаю
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
 SaveFileDialog sfd = new SaveFileDialog();
 
            sfd.Filter = "Word Ecxel(*.xls)| *.xls";
 
            Stream fileStream;
 
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                using (var writer = new StreamWriter(sfd.FileName))
                {
                    CExport.ExportDataToEcxel(dataGridView_Main, sfd.FileName);
                }
            }
 
   public static void ExportDataToEcxel(DataGridView dataGridView_Main, string filename)
        {
            using (var excel = new Excel())
            {
                Document doc = new Document(excel.Document);
                doc.AddSheet("NEW");
 
                for (int i = 0; i < dataGridView_Main.Rows.Count; i++)
                {
                    for (int j = 2; j < dataGridView_Main.ColumnCount; j++)
                    {
                        doc[i + 1, j - 1] = dataGridView_Main.Rows[i].Cells[j].Value;
                    }
                }
 
                doc[1, 1] = "ПІБ";
                doc[1, 2] = "Дата народження";
                doc[1, 3] = "ВПО";
                doc[1, 4] = "Людина з інвалідністю";
 
                doc.SaveAs(@"D:\tmp\tmp.xls");
            }
        }
Добавлено через 1 час 5 минут
Все работает ) просто антивирус не давал создавать файл

Добавлено через 1 час 49 минут
Подскажите какуюту библиотеку для того что бы можно было импортировать в Word таблицу с datagridView что бы не зависили от версии Word
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 1
02.11.2017, 01:30 16
А какой антивирус мешал?
Неделю бьюсь со схожей проблемой - своего приложения и компьютера клиента.
Использую WordInterop для вставки закладок в файл и сохранения его.
Также не даёт сохранять. Win 8.1. Office 2016 Антивирус Avast (пробовал отключать, но не сносил).
На других 5-ти компьютерах всё ок - там и Win 7, Win 10 и офисы от 2010 - 2016.
0
4 / 4 / 3
Регистрация: 10.05.2016
Сообщений: 1,093
02.11.2017, 09:35  [ТС] 17
Цитата Сообщение от Konstantin2015 Посмотреть сообщение
А какой антивирус мешал?
Неделю бьюсь со схожей проблемой - своего приложения и компьютера клиента.
Использую WordInterop для вставки закладок в файл и сохранения его.
Также не даёт сохранять. Win 8.1. Office 2016 Антивирус Avast (пробовал отключать, но не сносил).
На других 5-ти компьютерах всё ок - там и Win 7, Win 10 и офисы от 2010 - 2016.
У меня блочил Comodo Internet Security и Avast Free, добавил в исключение и проблема ушла.
Смотрите блочит антивирусы которые запускают приложение в контейнере, и те что сканируют .*.exe проблема решаеться исключением
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2017, 09:35

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

Невозможно привести COM-объект типа Microsoft.Office.Interop.Word
Здравствуйте! Есть проблема из частых: &quot;вчера работало, сегодня нет&quot;. Моя программа сохраняла отчет...

Найти и заменить слова в документе (doc) без Microsoft.Office.Interop.Word
Добрый день! Существует ли способ с помощью оного я мог бы найти и заменить слова в файле (doc)...

Microsoft.Office.Interop для всех версий MS Office
Здравствуйте! Нашёл кучу околоподобных тем, но без нужных решений. Задача такая: Пишу на C#...

Microsoft.Office.Interop.Excel
Доброго времени суток! Делаю гистограмму, есть код: var XL1 = new Application(); ...


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

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

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