Используя смарт-таблицу C # SDK, я написал метод setCellValue для записи значения в ячейку с учетом индекса строки, индекса столбца и значения.Метод работает нормально, когда в ячейке уже есть значение, но не работает, когда ячейка пуста.
public void setCellValue(int rowIndex, int columnIndex, String value, Boolean setCellDisplayValue = true)
{
Cell cellOld = getCell(rowIndex, columnIndex);
Cell cellNew = new Cell
{
Value = value,
DisplayValue = value
};
if (true == setCellDisplayValue) {
cellNew.DisplayValue = value;
}
if (null != cellOld)
{
cellNew.ColumnId = cellOld.ColumnId;
}
var listOfNewCells = new List<Cell>();
listOfNewCells.Add(cellNew);
Row rowNew = new Row
{
Cells = listOfNewCells
};
Row rowOld = sheetAPITest.GetRowByRowNumber(rowIndex);
if (null != rowOld)
{
rowNew.Id = rowOld.Id;
}
var listOfNewRows = new List<Row>();
listOfNewRows.Add(rowNew);
smartsheetClient.SheetResources.RowResources.UpdateRows(sheetIdAPITest, listOfNewRows);
}
Я также написал вспомогательный метод getCell.
public Cell getCell(int rowIndex, int columnIndex)
{
Row row = sheetAPITest.GetRowByRowNumber(rowIndex);
if (null == row)
{
return null;
}
Column column = sheetAPITest.GetColumnByIndex(columnIndex);
if (null == column)
{
return null;
}
return row.Cells.First(c => c.ColumnId == column.Id);
}
Кажется, проблема в том, что sheetAPITest.GetRowByRowNumber (rowIndex) возвращает ноль, если в строке нет значения.Мне нужна строка, потому что мне нужен идентификатор строки, чтобы создать новую строку с содержимым.
Чего мне не хватает?Любые идеи, как я могу решить проблему?Может быть, есть лучший подход?Заранее спасибо.