38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236

Работа с Excel (нет доступа к пространству имен Excel)

01.08.2012, 15:00. Показов 9016. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
У меня проблема в том, что я делаю все так как там, но выдает ошибку в строчках на слова Excel, например:
C#
1
2
3
4
Excel.Application xlApp; // здесь на Excel Error Namespace '<global namespace>' contains a definition conflicting with alias 'Excel' C:\Users\Администратор\Desktop\Excel\Excel\Form1.cs    23  13  Excel
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;
Я думаю, что все это из-за того, что разные версии Excel. Я подключал Microsoft Excel 14.0 Object Library, а в примере Microsoft Excel 12.0 Object Library. Тогда, что нужно для того, что бы работал код вместе с Microsoft Excel 14.0 Object Library?
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2012, 15:00
Ответы с готовыми решениями:

ASP и Excel. Excel тупит (проблемы с правами доступа?)
Hello, all! Вот у меня опять что-то не работает. Что нужно: взять файлик xls, скопировать, заправить данными (через обновление с базы -...

Как при открытии Excel проверить нет ли уже открытых окон с Excel?
Посоветуйте пожалуйста, как при открытии Excel проверить нет ли уже открытых окон с Excel и если есть , то тогда добавить новый лист в уже...

Работа с документами Excel без Microsoft.Office.Interop.Excel
всем добрый день все дело в том что для своих программ я использую БД Excel но! однако не все устанавливают на компьютере Office, да и...

30
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 15:10
C#
1
using Excel = Microsoft.Office.Interop.Excel;
ТАМ эта строчка есть
а у вас?
0
Заблокирован
01.08.2012, 15:12
Цитата Сообщение от Nike Jagger Посмотреть сообщение
with alias 'Excel'
Возможно из за отсутствия этого.
C#
1
 using Excel = Microsoft.Office.Interop.Excel;
Добавлено через 35 секунд

Не по теме:

Опять опоздала:)

0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 15:17  [ТС]
есть...

Добавлено через 52 секунды
это не из-за разных версий Microsoft Excel Object Library?
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 15:41
покажите все что идет выше этого кода, от самого начала программы?
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 16:08  [ТС]
вот весь код, правд он аналогичен тому, который находится по ссылке:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel; 
using System.Reflection;
 
namespace Excel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            Excel.Range range;
 
            string str;
            int rCnt = 0;
            int cCnt = 0;
 
            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            range = xlWorkSheet.UsedRange;
 
            for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
            {
                for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
                {
                    str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;
                    MessageBox.Show(str);
                }
            }
 
            xlWorkBook.Close(true, null, null);
            xlApp.Quit();
 
            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
        }
 
        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        } 
    }
}
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 17:10
C#
1
2
3
using Excel = Microsoft.Office.Interop.Excel; 
 
namespace WindowsApplication1
образец

C#
1
2
3
using Excel = Microsoft.Office.Interop.Excel; 
 
namespace Excel
ваш вариант

теперь вам понятно почему при написании Excel программа не может выбрать куда же ей обратиться?
переименуйте что нибудь одно
желательно - ваш namespace
1
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 21:33  [ТС]
вот блин на такой фигне попался, просто я проект так назвал, а он мне и неймспейс также.
Спасибо, что открыли глаза!

Только вот теперь ругается на строчку:
C#
1
2
3
xlApp = new Excel.ApplicationClass();
// Error    The type 'Microsoft.Office.Interop.Excel.ApplicationClass' has no constructors defined
// Error    Interop type 'Microsoft.Office.Interop.Excel.ApplicationClass' cannot be embedded. Use the applicable interface instead.
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 21:39
C#
1
= new Excel.Application();
что то мне подсказывает что надо так
1
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 21:53  [ТС]
только он чего-то книгу не создает...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 22:14
а должен? эта строчка ее и не создает
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 22:36  [ТС]
я не про данную строку, просто сама программа должна создавать Excel книгу.
А она не создает...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 23:47
эм, да нет, вроде не должна, она ее открывает, потом чз пару строчек кода закрывает, ну и выводит в мессаджбокс что прочитала в ней
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
02.08.2012, 01:17  [ТС]
блин, но там же статья по тому как программно создать книгу Excel...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
02.08.2012, 09:13
создание книги происходит здесь
C#
1
2
3
4
5
6
xlWorkBook = xlApp.Workbooks.Add(misValue);//добавляем книгу новую
 
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //выбираем 1 лист
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com"; // записываем в ячейку
 
            xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);//сохраняем
у вас:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);//открываем существующую книгу
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);//выбираем лист
 
            range = xlWorkSheet.UsedRange; //выбираем область
 
            for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) //по всем строкам области
            {
                for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) //по всем столбцам
                {
                    str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2; //берем строку из ячейки
                    MessageBox.Show(str); // выводим строку в месаджбокс
                }
            }
 
            xlWorkBook.Close(true, null, null);//закрываем книгу
            xlApp.Quit();//закрываем эксель
ваша программа ничего создавать не обязана
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
02.08.2012, 13:48  [ТС]
это не моя программа, просто я по примеру делал...
тогда, что делает эта вся программа? и как мне просто создать книгу?

Добавлено через 12 секунд
ничего не понимаю
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
02.08.2012, 13:55
Цитата Сообщение от Nike Jagger Посмотреть сообщение
это не моя программа, просто я по примеру делал...
тогда, что делает эта вся программа? и как мне просто создать книгу?

Добавлено через 12 секунд
ничего не понимаю
программа открывает csharp.net-informations.xls из папки программы, считывает из нее текст всех ячеек и выводит по очереди в месаджбокс, после чего закрывается
как создать - ну вот же
C#
1
2
3
4
5
6
7
xlWorkBook = xlApp.Workbooks.Add(misValue);//собственно создание книги
 
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //это уже редактирование содержимого книги
            xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com"; //это уже редактирование содержимого книги
 
            xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
//сохраняем, если не сохраним мы просто создали книгу, посмотрели на нее и закрыли, а файла не появится
1
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
02.08.2012, 14:04  [ТС]
что за misValue?

Добавлено через 3 минуты
и в какой директории создается файл?
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
02.08.2012, 14:57
C#
1
object misValue = System.Reflection.Missing.Value;
это код из вашей ссылки
создается в директории программы, но вы можете указать полное имя файла например @"C:\1.xlsx" и создастся там где напишете
1
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
02.08.2012, 15:09  [ТС]
простите за мою невнимательность.
спасибо, что все разъяснили!
может подскажите какие-нибудь книги на русском по работе с Excel на C#?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2012, 15:09
Помогаю со студенческими работами здесь

Работа с Excel через Microsoft.Office.Interop.Excel
Необходимо реализовать програмку взаимодействующую с Excel в режиме реального времени. Проблем несколько: 1. Как сделать так,...

Обращение к пространству имен другого обьекта
Есть два проекта, мне нужно без ссылки на другой проект обратиться к пространству имен другого обьекта,возможно ли такое?

Работа с Excel. Суть: Если номер строки в Excel четный тогда объеденяем эту ячейку с последующей.
Здравствуйте. Помогите, пожалуйста .Я вот в Delphi осуществляю работу с документов в Excel, как я могу записать, чтобы выполнялся алгоритм:...

Большая работа с Excel (передача в него данных, построение графиков, дозапись, создание нового файла Excel)
Всем участниками большой привет. Снова нужна помощь. Что имеем: -Имеем форму во вложении. на ней есть 30 нужных нам текстбоксов,...

Как получить доступ из Form1.cs к пространству имен Program.cs
Хоть пинайте ногами - сабж не осилил: Program.cs ... namespace firebird_reader { static class...


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

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

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru