Учитывая адрес ячейки как = Sheet1: A1, как получить значение - PullRequest
2 голосов
/ 17 января 2011

У меня есть адрес как = Sheet1: A1 или = Sheet1: A1: B5 (Inputs)

У него есть некоторые значения.Как я могу получить его с помощью Excel VSTO и C #

Ответы [ 2 ]

1 голос
/ 28 января 2011

Я не уверен, что полностью понимаю, но обычно вам не нужно использовать префикс имени листа в VSTO. Тем не менее, вам нужна ссылка на рабочий лист. Вроде как это:

Excel.Worksheet ws;

//... get a reference to the worksheet

// you can get the value of a single cell into an object variable.
var rangeA1 = ws.get_Range("A1", Type.Missing);
var myValue = rangeA1.Value2;

// you can also pull out the value of a multicell range into a 2D array.
var rangeA1B5 = ws.get_Range("A1", "B5");
var myArrayOfValues = (object[,])rangeA1B5.Value2;
0 голосов
/ 29 января 2011

Я бы просто проанализировал строку:

using System.Text.RegularExpressions;

object _ = Type.Missing;
Excel.Workbook wb = ...; // get reference to workbook
string addr = "=Sheet1!A1:B5";
Match m = Regex.Match(addr, "^\=(?<sheet>[^!]+)!(?<cell>.+)$");
object value = wb.Worksheets[m.Groups["sheet"].Value].get_Range(m.Groups["cell"].Value, _).get_Value(_);

Может быть, не хватает нескольких приведений.

...