Почему функция C # Match не работает с форматами даты в Excel? - PullRequest
0 голосов
/ 14 февраля 2019

При попытке использовать WorksheetFunction.Match(Value,Range,0) в даты я получаю следующее исключение:

System.Runtime.InteropServices.COMException:
'Unable to get the Match property of the WorksheetFunction class'

Приведенный ниже код работает, если числовой формат в Excel установлен на общий (даты хранятся в виде чисел).

Мое текущее решение состоит в том, чтобы отформатировать столбцы даты в общем и вернуться к формату даты (Великобритания) после завершения.

// using Microsoft.Office.Interop.Excel;
Microsoft.Office.Interop.Excel.Application xlApp = 
    new Microsoft.Office.Interop.Excel.Application();
xlApp.Application.Visible = true;

Workbook xlworkbook;
Worksheet xlWorkSheet;

string filepath = "C:/test.xlsx";

xlworkbook = xlApp.Workbooks.Open(filepath);
xlWorkSheet = xlworkbook.Worksheets["Sheet1"];

//xlWorkSheet.Range["C:C"].NumberFormat = "0";
//xlWorkSheet.Range["A:A"].NumberFormat = "0";

double foo = xlApp.WorksheetFunction.Match(xlWorkSheet.Range["C1"].Value,
    xlWorkSheet.Range["A:A"], 0);

//xlWorkSheet.Range["C:C"].NumberFormat = "dd/mm/yyyy";
//xlWorkSheet.Range["A:A"].NumberFormat = "dd/mm/yyyy";

Console.Write(foo);
Console.ReadKey();
xlworkbook.Close(false);
xlApp.Quit();
...