Я пытался использовать 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, а не количество столбцов / строк
Я несколько новичок в этом, так что любая помощь приветствуется!