Я использую библиотеку .NET, Excel-DNA, которая предоставляет C-API Excel для кода C#. Использование xlfGetDocument
функции, как это (я специально хочу ints
):Запрашивая «последнюю использованную строку/столбец» с функцией Excel C-API «xlfGetDocument» возвращает значения за «фактический использованный диапазон»
int rowLast = ((int)(double)XlCall.Excel(XlCall.xlfGetDocument, 10, sheetName) > 0) ? (int)(double)XlCall.Excel(XlCall.xlfGetDocument, 10, sheetName) - 1 : 0;
int colLast = ((int)(double)XlCall.Excel(XlCall.xlfGetDocument, 12, sheetName) > 0) ? (int)(double)XlCall.Excel(XlCall.xlfGetDocument, 12, sheetName) - 1 : 0;
возвращает мне rowLast
и rowFirst
, который несколько выше моего диапазона данных. Согласно книге Стив Далтона «Финансовые приложения с использованием расширения надстроек Excel в C/C++» аргументы «10» и «12» для этой функции должны возвращать последние USED col/row. Но это не так.
Почему это?
После получения от использованного-диапазона с выше листом, я использую Excel-ДНК, чтобы получить фактическое содержание:
contentReference = new ExcelReference(0, rowLast, 0, colLast);
contents = (object[,])contentReference.GetValue();
Как я могу получить фактический используемый диапазон без применения фильтра к содержимому (похоже, это должно быть просто лишними накладными расходами)?