NOOSL Ответов: 2

Worksheetfunction в Excel.итого, методом исключения ошибок в C#


//Referencing
    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    Microsoft.Office.Interop.Excel.WorksheetFunction xlWsf;

    //declaring a range

    xlRangeDB = sheet.get_Range("A1", "A1000");

    //declaring a double variable
    double numVal = 0;

    //using subtoal function but throws error!!!
    numVal = xlWsf.Subtotal(3,xlRangeDB);


Что я уже пробовал:

Поискал в google, на сайте codeproject.

ZurdoDev

Существует более 42 000 000 возможных ошибок. Пожалуйста, укажите точную ошибку, чтобы мы могли попытаться помочь.

NOOSL

@RyanDev, спасибо, ошибка, которую я получил, такова
Системы.Исключение NullReferenceException не обработано
Значение HRESULT=-2147467261
Message=ссылка на объект не установлена на экземпляр объекта.

Я подозреваю, что не заполняю все параметры функции промежуточного итога, что может быть возможной причиной.
На веб-сайте Microsoft функция промежуточного итога записывается следующим образом:
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheetfunction.subtotal.aspx


двойной промежуточный итог(
двойной Arg1,
Диапазон Arg2,
Объект Значение Arg3,
Объект Аргументе Arg4,
Объект Arg5 Не Равны,
Объект Arg6,
Объект Arg7,
Объект Arg8,
Объект Arg9,
Объект Arg10,
Объект Arg11,
Объект Arg12,
Объект Arg13,
Объект Arg14,
Объект Arg15,
Объект Arg16,
Объект Arg17,
Объект Arg18,
Объект Arg19,
Объект Arg20,
Объект Arg21,
Объект Arg22,
Объект Arg23,
Объект Сайт Arg24,
Объект Arg25,
Объект Arg26,
Объект Arg27,
Объект Arg28,
Объект Arg29,
Объект Arg30
)

ZurdoDev

Ошибка говорит, что что-то равно нулю. Из кода, который вы выложили, что бы xlWsf.

NOOSL

Вы имеете в виду объявление для использования (xlWsf) xlWorksheetfunction
Microsoft.Офис.Взаимодействие.Превосходить.WorksheetFunction xlWsf;

ZurdoDev

Да, вы только объявили его, вы не установили его ни на что, так что он все еще равен нулю.

NOOSL

Я не знал, как установить. Можете вы пожалуйста помочь мне.

ZurdoDev

Я никогда раньше не использовал этот код, поэтому просто поищите примеры в интернете. Я могу только сказать вам, почему вы получили эту ошибку.

NOOSL

О, я думаю вот так.
Microsoft.Офис.Взаимодействие.Превосходить.WorksheetFunction xlWsf = xlApp.WorksheetFunction;

2 Ответов

Рейтинг:
4

NOOSL

Microsoft.Office.Interop.Excel.WorksheetFunction xlWsf = xlApp.WorksheetFunction;


Единственной проблемой была не инициирующая переменная.
Я вам очень благодарен, ребята.
Спасибо гений Райан :-)
Спасибо Мадхаву : -) ваше альтернативное решение тоже работает.


Рейтинг:
18

madhav_jain

Попробуйте ниже код, чтобы вычислить сумму

xlRangeDB = sheet. get_Range("A1", " A1000");
double numVal = 0;
int rCnt = 0;
int cCnt = 0;
для (ГК "Роснанотех" совместно = 1; корпорации &ЛТ;= xlRangeDB.Строк.Граф; ГК "Роснанотех" совместно++)
{
для (cCnt = 1; cCnt <= xlRangeDB.Columns.Count; cCnt++)
{
numVal = numVal + (double) (xlRangeDB.Cells[rCnt, cCnt] as Excel.Диапазон).Значение2;

}
}