Как вы получаете размеры листа в Microsoft.Office.Interop.Excel? - PullRequest
0 голосов
/ 05 апреля 2020

Я пытался использовать Microsoft.Office.Interop.Excel для изменения некоторых таблиц, но я не могу понять, как заставить его делать некоторые простые вещи. До сих пор мне удалось загрузить рабочий лист и PrettyPrint выбрать диапазон, который я выбрал. Хорошо. Но как мне получить размер листа?

Часть кода здесь.

class Excel
{
    string path = "";
    _Application excel = new _Excel.Application();
    Workbook wb;
    Worksheet ws;
     public Excel(string path, int Sheet)
    {
        this.path = path;
        wb = excel.Workbooks.Open(path);
        ws = wb.Worksheets[Sheet];

    }        
     public string MakeStringLength(string str, int Length)
    {
        if (string.IsNullOrEmpty(str))
            return str.PadRight(Length);
        return str.Substring(0, Math.Min(str.Length, Length)).PadRight(Length);
    }

     public XlCellType[,] GetCellRange (int I, int J, int w, int h)
    {

        I++;
        J++;
        if (I < 1 || J < 1 || w < 1 || h < 1)
        {
            throw new Exception($"Cell Range Error: i,j,w,h not valid {I},{J},{w},{h}");
        }

        XlCellType[,] ans = new XlCellType[w, h];

        for (int i = I, endx = I + w; i < endx; i++)
        {
            for (int j = J, endy = J + h; j < endy; j++)
            {
                var test = ws.Cells[i, j];
                ans[i, j] = ws.Cells[i, j];
            }
        }
        return ans;
    }
     public void PrintCells(int I, int J, int w, int h, int l)
    {
        I++;
        J++;
        if (I < 1 || J < 1 || w < 1 || h < 1)
        {
            throw new Exception($"Cell Range Error: i,j,w,h not valid {I},{J},{w},{h}");
        }


        for (int i = I, endx = I + w; i < endx; i++)
        {
            for (int j = J, endy = J + h; j < endy; j++)
            {
                if(ws.Cells[i, j].Value2 != null)
                {
                    Console.Write($"{MakeStringLength(ws.Cells[i, j].Value2.ToString(), l)}  \t");
                }
                else
                {
                    Console.Write($"{MakeStringLength("", l)}  \t");
                }


            }
            Console.WriteLine();
        }
    }

}

В основном у меня есть рабочий лист с бессмысленным текстом вверху, а затем в нескольких строках внизу есть таблица данных неизвестного размера.

Мне нужен способ выяснить этот размер, чтобы я мог выбрать его и, таким образом, выполнить итерацию по нему, а также изменить некоторые формулы ячеек

Существует свойство Worksheet.Cells.Width / height, но оно имеет двойное значение и, по-видимому, представляет фактическую ширину / высоту столбца / строки в Excel, а не количество столбцов / строк

Я несколько новичок в этом, так что любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...