Строка массива взаимодействия с Excel для диапазона, не показывается в виде формул - PullRequest
0 голосов
/ 14 января 2020

Я использую Excel Interop, у меня есть функция, в которой я устанавливаю 2d строковый массив для диапазона, диапазон - это набор формул, таких как

{"=COUNT(A12:A300)","=COUNT(B12:B300)","=COUNT(C12:C300)"}

, и у меня есть простая функция, которая записывает массив в диапазоне

    private void WriteStringRangeToExcel(string[,] s, int rowNumber, int cellStart)
    {
        Excel.Range c1 = (Excel.Range)ws.Cells[rowNumber, cellStart];
        Excel.Range c2 = (Excel.Range)ws.Cells[rowNumber + s.GetLength(0) - 1, s.GetLength(1)];
        Excel.Range range = ws.get_Range(c1, c2);
        range.Formula = s;            
    }

странно то, что когда я открываю Excel, они отображаются не в виде формул, а в виде строк (я имею в виду, что на листе нет вычислений, а есть только строки, сохраненные в массив) что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

давайте попробуем:

 range.Formula = "=COUNT(A12:A300)"; //The formula will automatically transform accordingly

или я думаю, что вам нужно конвертировать {"=COUNT(A12:A300)","=COUNT(B12:B300)","=COUNT(C12:C300)"} в 2d массив, используя

range.value= s; //but this may take few seconds to show results
0 голосов
/ 14 января 2020

Необходимо вставить данные в значение, а затем установить значение в виде формулы

    private void WriteStringRangeToExcel(string[,] s, int rowNumber, int cellStart)
    {
        Excel.Range c1 = (Excel.Range)ws.Cells[rowNumber, cellStart];
        Excel.Range c2 = (Excel.Range)ws.Cells[rowNumber + s.GetLength(0) - 1, s.GetLength(1)];
        Excel.Range range = ws.get_Range(c1, c2);
        range.Value = s;
        range.Value = range.Formula;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...