5

我希望能够从 C# 中的特定列中检索数据行作为列表。因此,如果有一列人的身高,它将在列表中列出这些身高。可能还列出 x,y 值表示特定日期的苹果数。

我查看了有关 API 信息的示例,但找不到任何有关如何执行此操作的示例 - 它们主要包括创建文件夹、用户或列出文件夹或工作表或在 smartsheets 上输入信息等,但没有实际获取数据。

这是我看过的代码: https ://github.com/smartsheet-platform/samples/tree/master/c%23 https://github.com/smartsheet-platform/smartsheet-csharp-sdk

但我实际上想将数据作为列表提取出来,然后在 C# 中为最终用户进行一些处理,所以我不想将它放回智能表中。

这样做的唯一方法是使用 API 将文件下载为 Excel 表格并从那里开始?如果可能的话,我真的想跳过这一步吗?

我应该补充一点,我想使用 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(long id, IEnumerable 包括)

这是 ObjectInclusion 枚举的链接 - http://smartsheet-platform.github.io/smartsheet-csharp-sdk/html/T_Smartsheet_Api_Models_ObjectInclusion.htm

4

1 回答 1

5

这是一个在每张纸上打印单元格数据的示例。

        // 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();
            }
        }

要回答您的其他一些问题:

这样做的唯一方法是使用 API 将文件下载为 Excel 表格并从那里开始?如果可能的话,我真的想跳过这一步吗?

C# SDKAPI都支持检索部分或全部工作表数据的能力。您无需将工作表下载为 Excel 文件即可使用工作表中的数据。

我不确定他们需要什么。它在 GetSheet 方法中说:Sheet GetSheet (long id, IEnumerable<ObjectInclusion>)

IEnumerable只是一个可迭代的集合。您可以将任何集合用于实现此接口的第二个参数。该集合应在其列表中包含ObjectInclusion项目。在我的示例中,我使用了一个数组,因为它实现了一个实现 IEnumerable的IList 。

于 2014-12-04T22:57:13.617 回答