title: Excel file with openxml with multiple sheets in single workbook
body: <p>I am trying to insert data to multiple sheets. For my excel, I have two sheets which are "charts" and "ChartData". I'm able to update the data in sheet2, chartdata sheet, but I'm unable to insert data to sheet1. Here is code which I have tried to insert data into excel sheets. Here data is coming from database.</p>
  
  <pre><code>           double ticks = DateTime.Now.Ticks;
           // MarketAnalysis ms = new MarketAnalysis();
           //ms.Marketanalysis();
  
          File.Copy(Srcpath, @"E:\Works\OpenXML\DownloadTemplates\ExcelGenerated" + ticks + ".xlsx", true);
           using (SpreadsheetDocument myworkbok = SpreadsheetDocument.Open(@"E:\Works\OpenXML\DownloadTemplates\ExcelGenerated" + ticks + ".xlsx", true))
           {
               //Acess the main workbook which contain all the references
  
              WorkbookPart workbookpart = myworkbok.WorkbookPart;
               //Get sheet by name
               Sheet sheet = workbookpart.Workbook.Descendants&lt;Sheet&gt;().Where(s =&gt; s.Name == "ChartData").FirstOrDefault();
  
              //Worksheet Part by ID
               WorksheetPart worksheetpart = workbookpart.GetPartById(sheet.Id) as WorksheetPart;
  
              //Sheet data contains all the data
               SheetData sheetdata = worksheetpart.Worksheet.GetFirstChild&lt;SheetData&gt;();
               DataSet ds = db.Chart1Data();
  
                for (int i = 0; i &lt; ds.Tables[0].Rows.Count; i++)
               {
                   //  if (ds.Tables[0].Rows !=DBNull)
                   //{
  
                  string Rowlabel = ds.Tables[0].Rows[i][0].ToString();
                   // float? FY13Actuval = Convert.ToInt32(ds.Tables[0].Rows[i][1]);
  
                  if (!string.IsNullOrEmpty(ds.Tables[0].Rows[i][1].ToString()))
                   {
                       // string s = ds.Tables[0].Rows[i][1].ToString();
                       //FY13Actuval=float.Parse(ds.Tables[0].Rows[i][1].ToString());
  
                      FY13Actuval = Convert.ToDouble(ds.Tables[0].Rows[i][1].ToString());
                   }
                   else
                   {
  
                      FY13Actuval = null;
                   }
  
                  double? Budget = Convert.ToDouble(ds.Tables[0].Rows[i][2].ToString());
                   double? Actuval = Convert.ToDouble(ds.Tables[0].Rows[i][3].ToString());
                   Row contentrow = CreateContentRow(index, Product, Actual, Budget, Forecast);
  
                  index++;
                   sheetdata.AppendChild(contentrow);
  
                  // }
               }
   .......Same code for the other 3 charts
   Sheet sheet1 = workbookpart.Workbook.Descendants&lt;Sheet&gt;().Where(s =&gt; s.Name == "Charts").FirstOrDefault();
  
              WorksheetPart worksheetpart1 = workbookpart.GetPartById(sheet1.Id) as WorksheetPart;
  
              //Sheet data contains all the data
               SheetData sheetdata1 = worksheetpart1.Worksheet.GetFirstChild&lt;SheetData&gt;();
  
              DataSet dsTbl = db.Table();
               int SCMTblIndex=5;
               for (int i = 0; i &lt; dsTbl.Tables[0].Rows.Count; i++)
               {
                   Row tblRow = CreateScorecardMetricTblRow(SCMTblIndex, dsTbl.Tables[0].Rows[i][0].ToString(),
                                                                      dsTbl.Tables[0].Rows[i][1].ToString(),
                                                                      dsTbl.Tables[0].Rows[i][2].ToString());
                   SCMTblIndex++;
                   sheetdata1.AppendChild(tblRow);
               }
  
                  myworkbok.WorkbookPart.Workbook.Save();
           }
  </code></pre>
  
  <p>and the Methods to create the cells: </p>
  
  <pre><code>public static string[] headerColumns = new string[]{ "A", "B", "C", "D", "E", "F", "G", "I", "J" };
  public static string[] header = new string[] { "D", "E", "F" };
  
  private static Row CreateContentRow(int index, string Product, double? Actual, double? Budget, double? Forecast)
       {
  
          //Create New ROw
           Row r = new Row();
           r.RowIndex = (UInt32)index;
  
  
          //Begin colums
           Cell c0 = new Cell();
           c0.CellReference = headerColumns[0] + index;
           CellValue v0 = new CellValue();
           v0.Text = Product;
           c0.AppendChild(v0);
           r.AppendChild(c0);
  
          Cell c1 = new Cell();
           c1.CellReference = headerColumns[1] + index;
           CellValue v1 = new CellValue();
           v1.Text = Actual.ToString();
           c1.AppendChild(v1);
           r.AppendChild(c1);
  
          Cell c2 = new Cell();
           c2.CellReference = headerColumns[2] + index;
           CellValue v2 = new CellValue();
           v2.Text = Budget.ToString();
           c2.AppendChild(v2);
           r.AppendChild(c2);
  
          Cell c3 = new Cell();
           c3.CellReference = headerColumns[3] + index;
           CellValue v3 = new CellValue();
           v3.Text = Forecast.ToString();
           c3.AppendChild(v3);
           r.AppendChild(c3);
  
  
          return r;
  
  
      }
  public static Row CreateScorecardMetricTblRow(int index, string Act_Data, string Bud_Data, string VarPr_Data)
       {
           Row r = new Row();
           r.RowIndex = (UInt32)index;
           //Begin Colums
  
          Cell c0 = new Cell();
           c0.CellReference = header[0] + index;
           CellValue v0 = new CellValue();
           v0.Text = Act_Data;
           c0.AppendChild(v0);
           r.AppendChild(c0);
  
          Cell c1 = new Cell();
           c1.CellReference = header[1] + index;
           CellValue v1 = new CellValue();
           v1.Text = Bud_Data;
           c1.AppendChild(v1);
           r.AppendChild(c1);
  
          Cell c2 = new Cell();
           c2.CellReference = header[2] + index;
           CellValue v2 = new CellValue();
           v2.Text = VarPr_Data;
           c2.AppendChild(v2);
           r.AppendChild(c2);
            return r;
       }
  </code></pre>