Получить данные строки из смарт-листа в C#
Я надеюсь, что смогу получить строки данных в виде списка из определенных столбцов в C#. Таким образом, если бы была колонка человеческих высот, она перечисляла бы эти высоты в списке. Потенциально также перечислите значения x,y, например, количество яблок на определенную дату.
Я посмотрел примеры, приведенные в информации об API, и не могу найти примеров того, как это сделать - они в основном состоят из создания папок, пользователей или перечисления папок или листов или ввода информации в смарт-листах и т. Д., Но ни одного из них не касается фактического получения данных.
Вот код, который я посмотрел: https://github.com/smartsheet-platform/samples/tree/master/c%23 https://github.com/smartsheet-platform/smartsheet-csharp-sdk
Но на самом деле я хотел бы вытащить данные в виде списка, а затем немного обработать их в C# для конечных пользователей, поэтому я не хочу возвращать их в смарт-таблицы.
Это единственный способ сделать это для загрузки файла в виде листа Excel с использованием API и оттуда? Я действительно хотел пропустить этот шаг, если это вообще возможно?
Я должен добавить, что я хочу использовать C# SDK для этого.
Конкретный код, который я думаю, мне нужно ввести (я думаю), это, чтобы получить лист.
// Set the Access Token
Token token = new Token();
token.AccessToken = "INSERT_YOUR_TOKEN_HERE";
long id = "INSERT SHEET ID HERE";
// Use the Smartsheet Builder to create a Smartsheet
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(
token.AccessToken).Build();
//Code to get sheet
smartsheet.Sheets().GetSheet(long id, **IEnumerable<ObjectInclusion?includes**).Rows();
Это последний параметр, я не уверен, что им нужно. В методе GetSheet говорится:
Sheet GetSheet (длинный идентификатор, IEnumerable включает)
Вот ссылка на перечисление ObjectInclusion - http://smartsheet-platform.github.io/smartsheet-csharp-sdk/html/T_Smartsheet_Api_Models_ObjectInclusion.htm
1 ответ
Вот пример, который печатает данные ячейки на каждом листе.
// Set the Access Token
Token token = new Token();
token.AccessToken = "YOUR_TOKEN";
// Use the Smartsheet Builder to create a Smartsheet
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).Build();
// Gets just a list of sheets (not the actual data in the sheet)
IList<Sheet> homeSheets = smartsheet.Sheets().ListSheets();
foreach (Sheet tmpSheet in homeSheets)
{
Console.WriteLine("========== New Sheet: " + tmpSheet.Name);
// Get the sheet with the data
Sheet sheet = smartsheet.Sheets().GetSheet((long)tmpSheet.ID, new ObjectInclusion[] { ObjectInclusion.DATA, ObjectInclusion.COLUMNS });
int rowCount = 0;
foreach (Row tmpRow in sheet.Rows)
{
Console.Write(rowCount++ + ": ");
foreach (Cell tmpCell in tmpRow.Cells)
{
Console.Write(tmpCell.Value + "|");
}
Console.WriteLine();
}
}
Чтобы ответить на некоторые другие ваши вопросы:
Это единственный способ сделать это для загрузки файла в виде листа Excel с использованием API и оттуда? Я действительно хотел пропустить этот шаг, если это вообще возможно?
C# SDK и API поддерживают возможность извлечения частей или всех данных листа. Вы не обязаны загружать лист как файл Excel для работы с данными в листе.
Я не уверен, что им нужно. В методе GetSheet говорится: Sheet GetSheet(длинный идентификатор, IEnumerable
)
IEnumerable - это просто итеративная коллекция. Вы можете использовать любую коллекцию для второго параметра, который реализует этот интерфейс. Коллекция должна содержать элементы ObjectInclusion в своем списке. В моем примере я использовал массив, поскольку он реализует IList, который реализует IEnumerable.