С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/47: Рейтинг темы: голосов - 47, средняя оценка - 4.51
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!
У меня проблема в том, что я делаю все так как там, но выдает ошибку в строчках на слова 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2012, 15:00
Ответы с готовыми решениями:

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

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

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

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

30
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 15:10 2
C#
1
using Excel = Microsoft.Office.Interop.Excel;
ТАМ эта строчка есть
а у вас?
0
Заблокирован
01.08.2012, 15:12 3
Цитата Сообщение от 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  [ТС] 4
есть...

Добавлено через 52 секунды
это не из-за разных версий Microsoft Excel Object Library?
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 15:41 5
покажите все что идет выше этого кода, от самого начала программы?
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 16:08  [ТС] 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
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 7
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  [ТС] 8
вот блин на такой фигне попался, просто я проект так назвал, а он мне и неймспейс также.
Спасибо, что открыли глаза!

Только вот теперь ругается на строчку:
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 9
C#
1
= new Excel.Application();
что то мне подсказывает что надо так
1
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 21:53  [ТС] 10
только он чего-то книгу не создает...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 22:14 11
а должен? эта строчка ее и не создает
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
01.08.2012, 22:36  [ТС] 12
я не про данную строку, просто сама программа должна создавать Excel книгу.
А она не создает...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
01.08.2012, 23:47 13
эм, да нет, вроде не должна, она ее открывает, потом чз пару строчек кода закрывает, ну и выводит в мессаджбокс что прочитала в ней
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
02.08.2012, 01:17  [ТС] 14
блин, но там же статья по тому как программно создать книгу Excel...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
02.08.2012, 09:13 15
создание книги происходит здесь
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  [ТС] 16
это не моя программа, просто я по примеру делал...
тогда, что делает эта вся программа? и как мне просто создать книгу?

Добавлено через 12 секунд
ничего не понимаю
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
02.08.2012, 13:55 17
Цитата Сообщение от 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  [ТС] 18
что за misValue?

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru