title: OpenXML library save excel file
body: <p>I  have the following code and its not saving the values to cell and also in file. It shows value in <code>cell.cellvalue</code> field but its not writing it to excel. I have no idea how to save the file. I used <em>OpenXml-SDK</em> and I am writing <code>datatable</code> values to each <code>cell/row</code> of created spreadsheet document.</p>
  
  <pre><code> using (SpreadsheetDocument ssd=SpreadsheetDocument.Open(Server.MapPath(@"\ExcelPackageTemplate.xlsx"),true))
          {
              WorkbookPart wbPart = ssd.WorkbookPart;
              WorksheetPart worksheetPart = wbPart.WorksheetParts.First();
  
              SheetData sheetdata = worksheetPart.Worksheet.GetFirstChild&lt;SheetData&gt;();
              string[] headerColumns = new string[] { dt.Columns[0].ColumnName, dt.Columns[1].ColumnName,dt.Columns[2].ColumnName };
              DocumentFormat.OpenXml.Spreadsheet.Row r = new DocumentFormat.OpenXml.Spreadsheet.Row();
              int RowIndexer = 1;
              //int colInd=0;
              r.RowIndex = (UInt32)RowIndexer;
  
              string test = ColumnName(RowIndexer);
  
              foreach (DataColumn dc in dt.Columns)
              {
  
                  DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
                  cell.CellReference = test+RowIndexer;
                  cell.DataType = CellValues.InlineString;
                  cell.InlineString = new InlineString(new Text(dc.ColumnName.ToString()));
                  DocumentFormat.OpenXml.Spreadsheet.CellValue value = new DocumentFormat.OpenXml.Spreadsheet.CellValue();
  
                  r.AppendChild(cell);
  
                  // colInd++;
              }
  
              //r.RowIndex = (UInt32)RowIndexer;
              RowIndexer = 2;
              foreach (DataRow dr in dt.Rows)
              {
                  DocumentFormat.OpenXml.Spreadsheet.Row Row = new DocumentFormat.OpenXml.Spreadsheet.Row();
                  string Index = ColumnName(RowIndexer);
                  Row.RowIndex = (UInt32)RowIndexer;
                  foreach (object value in dr.ItemArray)
                  {
                      DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
                      cell.DataType = CellValues.InlineString;
                      cell.InlineString =  new InlineString(new Text(value.ToString()));
                      cell.CellReference = Index+RowIndexer;
                     // cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(value.ToString());
                      Row.AppendChild(cell);
  
                  }
                  RowIndexer++;
  
              }
  
              worksheetPart.Worksheet.Save();
              wbPart.Workbook.Save();
              ssd.Close();
  </code></pre>