Нет пространства excel c

Nike Jagger

37 / 37 / 10

Регистрация: 08.03.2012

Сообщений: 236

1

01.08.2012, 15:00. Показов 7854. Ответов 30

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!
У меня проблема в том, что я делаю все так как там, но выдает ошибку в строчках на слова Excel, например:

C#
1
2
3
4
Excel.Application xlApp; // здесь на Excel Error Namespace '<global namespace>' contains a definition conflicting with alias 'Excel' C:UsersАдминистраторDesktopExcelExcelForm1.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



Tessen

713 / 680 / 126

Регистрация: 30.03.2012

Сообщений: 1,124

01.08.2012, 15:10

2

C#
1
using Excel = Microsoft.Office.Interop.Excel;

ТАМ эта строчка есть
а у вас?



0



Cyrus

Заблокирован

01.08.2012, 15:12

3

Цитата
Сообщение от Nike Jagger
Посмотреть сообщение

with alias ‘Excel’

Возможно из за отсутствия этого.

C#
1
 using Excel = Microsoft.Office.Interop.Excel;

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

Не по теме:

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



0



37 / 37 / 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



Nike Jagger

37 / 37 / 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



Tessen

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



Nike Jagger

37 / 37 / 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



Tessen

713 / 680 / 126

Регистрация: 30.03.2012

Сообщений: 1,124

01.08.2012, 21:39

9

C#
1
= new Excel.Application();

что то мне подсказывает что надо так



1



37 / 37 / 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



37 / 37 / 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



37 / 37 / 10

Регистрация: 08.03.2012

Сообщений: 236

02.08.2012, 01:17

 [ТС]

14

блин, но там же статья по тому как программно создать книгу Excel…



0



Tessen

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



37 / 37 / 10

Регистрация: 08.03.2012

Сообщений: 236

02.08.2012, 13:48

 [ТС]

16

это не моя программа, просто я по примеру делал…
тогда, что делает эта вся программа? и как мне просто создать книгу?

Добавлено через 12 секунд
ничего не понимаю



0



Tessen

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



37 / 37 / 10

Регистрация: 08.03.2012

Сообщений: 236

02.08.2012, 14:04

 [ТС]

18

что за misValue?

Добавлено через 3 минуты
и в какой директории создается файл?



0



Tessen

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



37 / 37 / 10

Регистрация: 08.03.2012

Сообщений: 236

02.08.2012, 15:09

 [ТС]

20

простите за мою невнимательность.
спасибо, что все разъяснили!
может подскажите какие-нибудь книги на русском по работе с Excel на C#?



0



При выполнении проекта C # для эксплуатации таблицы Excel с использованием Microsoft.Office.interop.excel; в пространстве имен имени «Офис» в «Microsoft» нетВ пространстве имен нет имени типа или пространства имен в «Microsoft».InteropОтказ Обходной путь:

В проекте — «Добавить ссылку ——» COM компоненты, выберите



Интеллектуальная рекомендация

Swfit-разница между классом и структурой

Основное различие между классом и структурой: класс является ссылочным типом, а структура является типом значения. Нет изображения, чтобы сказать J8, ну, посмотрите на картинку, чтобы поговорить. тип …

Вам также может понравиться

Обучение ORCL-MAIN LINE 2-PLSQL

SQL Basic Learning Краткое введение определение PL/SQL был разработан Oracle Corporation в начале 1990 -х годов для улучшения функции SQL. PL/SQL — один из языков программирования, встроенных в базу д…

Я читаю файл excel, и содержимое затем сохраняется в БД. Проблема заключается в проверке пространства в столбце Excel. Некоторые из столбцов являются пробелами, и для них значения DB будут равны нулю. У меня есть проверка на наличие нулевого значения при чтении ячеек, но почему-то она не работает должным образом.

Код

if (workSheet.Cells[rowIterator, 12].Value != null)
store.WeeklyOff = workSheet.Cells[rowIterator, 12].Value.ToString();
if (workSheet.Cells[rowIterator, 13].Value != null)
store.OpenTime = workSheet.Cells[rowIterator, 13].Value.ToString();
if (workSheet.Cells[rowIterator, 14].Value != null)
store.CloseTime = workSheet.Cells[rowIterator, 14].Value.ToString();

В приведенном выше фрагменте я поставил проверку нулевого значения для каждой ячейки. Проблема состоит в том, что столбец 12 также является пробелом, и эта проверка работает нормально, т.е. if условие ложно и оно переходит к следующему оператору, но из столбца 13 и далее нулевая проверка не работает. Во время отладки я могу увидеть null для столбца 13 и 14, все еще != null Проверка != null не проверена, и код в выражении if выполняется, и я получаю исключение из null-указателя. Я пробовал много других вещей для нулевой проверки, но ничего не работает должным образом. Борьба с последнего 1 дня, но ничего не работает. Все переменные определяются как String. Пожалуйста, порекомендуйте.

            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();//закрываем эксель

Так что я новый пользователь Си. Однако в строках 4, 18, 19 и 20 я получаю следующую ошибку:

Не удалось найти имя типа или пространства имен Excel

Я импортировал ссылку на COM-библиотеку excel, но безрезультатно.

using System;
using System.IO;
using System.Diagnostics;
using Excel;
namespace CallPython
{

class Program
{

    private static bool ExcelCommentsChecker()
    {
        Excel.Application excelApp = new Excel.Application();
        Excel.Workbook workBook = excelApp.Workbooks.Open(@"C:Toolscomments.xlsx");
        foreach (var worksheet in workBook.Worksheets()
            if (worksheet.Comments != null)
            {
                Console.WriteLine("comments");
            }
            else
            {
                Console.WriteLine("The variable is set to false.");
            }
        //foreach (var row in worksheet.Rows)
        //   foreach (var cell in row.Cells)
        // https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-add-and-delete-worksheet-comments
        // https://www.c-sharpcorner.com/blogs/how-to-add-move-hide-remove-comments-to-an-excel-worksheet-cell-using-epplus-net-application-c-sharp-part-eight
        //https://www.codeproject.com/Tips/801032/Csharp-How-To-Read-xlsx-Excel-File-With-Lines-of
        // if (cell != null) // Do something with the cells
        return false;
    }


    static void Main(string[] args)
    {
        // full path of python interpreter 
        string python = @"C:Toolspython3python.exe";

        // python app to call 
        string myPythonApp = @"C:Toolswordchecksinglefile.py";
        //https://www.codeproject.com/Tips/801032/Csharp-How-To-Read-xlsx-Excel-File-With-Lines-of
        // Create new process start info 
        ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(python);

        // make sure we can read the output from stdout 
        myProcessStartInfo.UseShellExecute = false;
        myProcessStartInfo.RedirectStandardOutput = true;

        // start python app with 3 arguments  
        // 1st arguments is pointer to itself,  
        // 2nd and 3rd are actual arguments we want to send 
        myProcessStartInfo.Arguments = myPythonApp;

        Process myProcess = new Process();
        // assign start information to the process 
        myProcess.StartInfo = myProcessStartInfo;

        // start the process 
        myProcess.Start();

        // Read the standard output of the app we called.  
        // in order to avoid deadlock we will read output first 
        // and then wait for process terminate: 
        StreamReader myStreamReader = myProcess.StandardOutput;
        string myString = myStreamReader.ReadLine();

        /*if you need to read multiple lines, you might use: 
            string myString = myStreamReader.ReadToEnd() */

        // wait exit signal from the app we called and then close it. 
        myProcess.WaitForExit();
        myProcess.Close();
        ///
        Console.WriteLine("Value received from script: " + myString);

        System.Threading.Thread.Sleep(3000);

        // write the output we got from python app 

    }
}

}

Я знаю, что это ошибка импорта, но я недостаточно разбираюсь в C-Sharp, чтобы знать, где возникает эта ошибка.

Пространство имен не «Excel» .. вы добавили библиотеку взаимодействия? что поможет вам найти имя пространства имен


— BugFinder

27.07.2018 10:37

&quot;DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04

CSS text-wrap: balance

CSS text-wrap: balance

CSS text-wrap: balance — это классическая типографская техника ручного переноса строк для сбалансированных текстовых блоков. При этом браузеру…

Умерло ли Create-React-App?

Умерло ли Create-React-App?

В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.

Веб-разработка - термины

Оптимизация производительности модели: Руководство по настройке гиперпараметров в Python с Keras

Strapi: Пользовательские маршруты и слизни


Ответы
1

Ответ принят как подходящий

Вы используете Office Interop Objects, но используемое пространство имен неверно.

Я думаю, вы хотите использовать в коде слово Excel, поэтому вы должны создать псевдоним для пространства имен:

using Excel = Microsoft.Office.Interop.Excel;

Тогда это должно работать

Excel.Application excelApp = new Excel.Application();

И убедитесь, что вы добавили в свой проект сборку Microsoft.Office.Interop.Excel. Как добавить эту сборку

Другие вопросы по теме

Понравилась статья? Поделить с друзьями:
  • Нет программы word на компьютер бесплатно
  • Нет проверки правописания word 2010
  • Нет проверки орфографии word 2010
  • Нет проверки орфографии word 2007
  • Нет пробелов в тексте word между словами