Значение в ячейке из CellReference в C # - PullRequest
2 голосов
/ 09 ноября 2010

Я использую Office Excel VSTO.У меня есть справочная информация о ячейке в моей книге.скажем, Sheet1! $ A $ 5 .Я хочу получить информацию в этой ячейке и ее тип.Возможно ли это каким-либо образом в VSTO?
Сейчас я разрываю ссылку на эту ячейку, переходя к листу, и ячейка получает значения.Я полагаю, возможны более простые способы.

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Я не уверен, что это то, что вам нужно, но следующее дает вам прямой доступ к ячейке:

     var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"];
     var cellContent = range.Value2;
0 голосов
/ 31 декабря 2010

Хорошо, я думаю, что ваш вопрос выяснен.
Вы хотите использовать VSTO для замены ссылки на рабочую книгу, которую вы используете для обновления значения в текущей рабочей книге.
Для меня подсказки ....
1. хотите получить информацию в этой ячейке и ее тип
2. используйте VSTO, чтобы сделать это
3. теперь я ломаю ссылку на эту ячейку
кстати, если мое предположение выше верное, топожалуйста, отредактируйте свой вопрос, чтобы иметь больше смысла для будущих читателей.

Пример кода

//get workbook link cell ref  
var range = (Range)Globals.ThisAddIn.Application.Range["Sheet1!$a$5"];  
//determine type  
// if straight linking a value this step is unnecessary unless using the type info to format the cell   
// or because you are doing a transformation or aggregation on the data prior to putting it somewhere.  
// if needed... do some try/catchs on casting it to oledate, bool, double, string in that order.  
// get value
 var value = range.Value2;  
// update "active" sheet  
var sht = (Excel.WorkSheet)Globals.ThisAddIn.Application.ActiveSheet;  
sht.Range["A1"].Value2 = value;  
// don't forget to call FinalReleaseCOMObject and GC.WaitForPendingFinalizers/GC.Collect block!!

Также обратите внимание, что да, вы будете «ломать ссылку на ячейку», если будете использовать код INSTEAD.Обратите внимание, что вы можете сохранить ссылку на книгу, но тогда нет смысла использовать кодовый подход.Мой совет заключается в общем использовании кода, так как он более гибкий, но пользуйтесь ссылками, когда вам нужна скорость (конфигурации), а данные не требуют больше, чем базовые манипуляции (SUM, IF, базовые математические операторы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...