Beispiel #1
0
        /// <summary>
        /// ワークシートを追加する
        /// </summary>
        /// <param name="name">ワークシート名</param>
        /// <param name="columns">追加するカラム数</param>
        /// <returns>作成されたワークシート</returns>
        public static WorksheetEntry CreateWorksheet(this WorksheetFeed feed,
                                                     string name, int columns)
        {
            //現状、どっちでも動く
            WorksheetEntry worksheet = (WorksheetEntry)feed.CreateFeedEntry();

            //            WorksheetEntry worksheet = new WorksheetEntry();
            worksheet.Title.Text = name;

            ///columnsは規定数ないとCellFeed.Insertで死ぬ
            worksheet.Cols = (uint)columns;

            //rowsは勝手にListFeed.Insertで増えてく
            worksheet.Rows = 1;

            //追加する。追加された結果Entryを使って次の処理を行う
            return(feed.Insert(worksheet));
        }
        public void InsertWorksheetTest()
        {
            Tracing.TraceMsg("Entering InsertWorksheetTest");

            SpreadsheetQuery    query   = new SpreadsheetQuery();
            SpreadsheetsService service = new SpreadsheetsService(this.ApplicationName);

            if (this.userName != null)
            {
                service.Credentials = new GDataCredentials(this.userName, this.passWord);
            }
            service.RequestFactory = this.factory;

            SpreadsheetFeed feed = service.Query(query);

            Assert.IsTrue(feed != null, "Need to have a spreadsheet feed");
            Assert.IsTrue(feed.Entries != null && feed.Entries.Count > 0, "Need to have one spreadsheet in there");

            SpreadsheetEntry entry = feed.Entries[0] as SpreadsheetEntry;

            string wUri = entry.WorksheetsLink;

            Assert.IsTrue(wUri != null, "Need to have a worksheet feed in the spreadsheet entry");

            WorksheetFeed sheets = entry.Worksheets;


            // kill all but the default before we start
            foreach (WorksheetEntry w in sheets.Entries)
            {
                if (w.Title.Text != "DefaultSheet")
                {
                    w.Delete();
                }
            }

            WorksheetEntry defEntry = sheets.Entries[0] as WorksheetEntry;

            Assert.IsTrue(defEntry != null, "There should be one default entry in this account/sheet");
            Assert.IsTrue(defEntry.Title.Text == "DefaultSheet", "it should be the default sheet");
            CellFeed defCells = defEntry.QueryCellFeed();

            Assert.IsTrue(defCells != null, "There should be a cell feed for the worksheet");


            CellEntry header = null;

            foreach (CellEntry cell in defCells.Entries)
            {
                if (cell.Title.Text == "A1")
                {
                    cell.Cell.InputValue = string.Empty;
                    cell.Update();
                    header = cell;
                }
            }



            if (header != null)
            {
                header.InputValue = "HeaderA";
                header.Update();
            }


            WorksheetEntry newEntry = sheets.Insert(new WorksheetEntry(10, 20, "New Worksheet"));

            Assert.IsTrue(newEntry.ColCount.Count == 20, "Column count should be equal 20");
            Assert.IsTrue(newEntry.RowCount.Count == 10, "Row count should be equal 10");
            Assert.IsTrue(newEntry.Title.Text == "New Worksheet", "Titles should be identical");

            CellFeed cells = newEntry.QueryCellFeed(ReturnEmptyCells.yes);

            Assert.IsTrue(cells != null, "There should be a cell feed for the new worksheet");
            Assert.IsTrue(cells.Entries.Count == 200, "There should be 200 cells");
            for (uint row = 1; row <= 10; row++)
            {
                for (uint col = 1; col <= 20; col++)
                {
                    cells[row, col].InputValue = "R" + row + "C" + col;
                }
            }
            cells.Publish();

            // try to update just one cell
            cells[1, 1].InputValue = string.Empty;
            cells[1, 1].Update();

            for (uint row = 1; row <= 10; row++)
            {
                for (uint col = 1; col <= 20; col++)
                {
                    cells[row, col].InputValue = string.Empty;
                }
            }
            cells.Publish();
            // cleanup the new worksheet at the end
            newEntry.Delete();
        }