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

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

01.08.2012, 15:00. Показов 8510. Ответов 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
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
Ответ Создать тему
Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер