Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с текущей книгой Excel в С# / 14 сообщений из 14, страница 1 из 1
14.08.2015, 10:37
    #39029263
Работа с текущей книгой Excel в С#
Здравствуйте, я новичок в С#, поэтому просьба не судить строго.
Возникла идея упростить себе жизнь посредством создания надстройки в Excel 2010 с помощью Visual C#.
Надстройку создал, но возникли проблемы:
Как с помощью си шарпа работать с текущей книгой Excel (с открытой в данный момент)?
То есть мне надо получить доступ к методам C#, с помощью которых можно будет работать с ячейками открытой книги.
В интернете куча примеров, но там все начинается с создания пустой книги, а мне надо чтобы надстройка работала с готовой экзелевской таблицей.
...
Рейтинг: 0 / 0
14.08.2015, 11:29
    #39029302
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
activeworkbook.name 'имя активной книги
thisworkbook.name 'имя книги, в которой находится код
...
Рейтинг: 0 / 0
14.08.2015, 11:43
    #39029315
Работа с текущей книгой Excel в С#
Спасибо, но к сожалению Ваш ответ мне не дал никакой информации. Я скорее всего неясно поставил вопрос.
В прилагаемой картинке, есть надстройка "ФКУ", в этой надстройке есть кнопка "Сгенерировать № каб".
Мне надо чтобы при нажатии на кнопку "Сгенерировать № каб", из столбца "Комментарии" был извлечен номер кабинета и вставлен в
столбец "кабинет". Алгоритм извлечения номера кабинета из строки прост и мне понятен, я не могу понять как это реализовать в C# для Excelя, так как не знаю ни одного метода для работы с эл. таблицами в с#. Дайте пожалуйста толчок?
...
Рейтинг: 0 / 0
14.08.2015, 11:58
    #39029330
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
я к тому, что после создания книги все обращения внутри идут по activeworkbook, Листу, ячейке и тд., т.е. вы вполне можете пользоваться:

В интернете куча примеров, но там все начинается с создания пустой книги, а мне надо чтобы надстройка работала с готовой экзелевской таблицей.
...
Рейтинг: 0 / 0
14.08.2015, 12:08
    #39029342
Работа с текущей книгой Excel в С#
T1gRa_NT, можете привести простейший пример, только с самого начала , к примеру в книге при событии btn_GenerateRoomNumber_Click заменить ячейку [1,1] листа 1 текстом "abc"?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using Microsoft.Office.Tools.Ribbon;
using Excel=Microsoft.Office.Interop.Excel;

namespace ExcelAddIn1
{
    public partial class rbn_FKU
    {

        
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {
         
        }

        private void btn_GenerateRoomNumber_Click(object sender, RibbonControlEventArgs e)
        {
           


        }
    }
}
...
Рейтинг: 0 / 0
14.08.2015, 12:41
    #39029381
Работа с текущей книгой Excel в С#
Написал по быстрому код, но при нажатии на кнопку, выходит ошибка отладки на строчке MessageBox.Show: "Ссылка на объект не указывает на экземпляр объекта". Подскажите пожалуйста, где ошибка?

Код: 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.
using System.Windows.Forms;
using Microsoft.Office.Tools.Ribbon;
using Excel=Microsoft.Office.Interop.Excel;

namespace ExcelAddIn1
{
    public partial class rbn_FKU
    {

        
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {
         
        }

        private void btn_GenerateRoomNumber_Click(object sender, RibbonControlEventArgs e)
        {
            Excel.Application app = new Excel.Application();
            Excel._Workbook book = app.ActiveWorkbook;
            Excel.Worksheet sheet = app.ActiveSheet;
            MessageBox.Show(string.Format("{0}",sheet.Cells[1, 1].ToString()));
        }
    }
}
...
Рейтинг: 0 / 0
14.08.2015, 13:44
    #39029438
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
К сожаление C# не изучал, но по правилам VBA
MessageBox.Show(string.Format("{0}" , sheet.Cells[1, 1].ToString()));

На месте выделенной запятой, должна быть точка.
...
Рейтинг: 0 / 0
14.08.2015, 13:47
    #39029441
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
...
Рейтинг: 0 / 0
14.08.2015, 14:19
    #39029484
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
T1gRa_NTНа месте выделенной запятой, должна быть точка.это что еще за бред?

Карманов ИгорьПодскажите пожалуйста, где ошибка?В свежесозданном экземпляре экселя активная книга и активный лист отсутствует естественно, потому sheet==null. Стоит немножко освоить отладку в Visual Studio
...
Рейтинг: 0 / 0
14.08.2015, 16:25
    #39029614
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с текущей книгой Excel в С#
Автор, видимо, немножно завис... погуглил для него
http://www.cyberforum.ru/blogs/100536/blog1471.html
...
Рейтинг: 0 / 0
14.08.2015, 16:43
    #39029639
Работа с текущей книгой Excel в С#
Нет, не завис))) Просто от компа под конец рабочей недели уже тошнит)))
Спасибо всем за советы! Завтра с утра буду пробовать ваши решения и отпишусь! ))
...
Рейтинг: 0 / 0
15.08.2015, 07:37
    #39029892
Работа с текущей книгой Excel в С#
Shocker.Pro, не подскажите как работать с текущим экземпляром?
...
Рейтинг: 0 / 0
15.08.2015, 08:33
    #39029900
Работа с текущей книгой Excel в С#
То есть с текущей книгой, с той которая открыта. В поиске много примеров, но везде код начинается с создания нового экземпляра, новых листов. Мне же надо открыть экзелевский файл и по нажатию кнопки производить действия с данными открытого файла.
...
Рейтинг: 0 / 0
15.08.2015, 08:44
    #39029901
Работа с текущей книгой Excel в С#
Shocker.Pro, всё, благодаря Вашей ссылке нашел решение! Спасибо!
Может кому будет интересно:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private void btn_GenerateRoomsNumbers_Click(object sender, RibbonControlEventArgs e)
        {
            Excel.Application app = null;
            
                app = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
                    as Excel.Application;
           
            app.Visible = true;
            Excel.Worksheet sheet = app.ActiveSheet;
            sheet.Cells[1, 1] = "vfdgfd";


        }
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с текущей книгой Excel в С# / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]