When you download the source code from

[caption id=“attachment_10266” align=“alignnone” width=“610” caption=“Export GridView Data to Excel using OpenXml”][/caption]

http://www.codeproject.com/Tips/366446/Export-GridView-Data-to-Excel-using-OpenXml

and try to transfer it to Excel from a single cell to another Excel file,  it is not easy.

I have broken a big chunk into a smaller unit to just output one value to an Excel workbook using OpenXML SDK. Below is the part of code segments that doing this.

//Simple

private void CreateExcelParts(SpreadsheetDocument spreadsheetDoc, string str)

{

//Create a Workbook

WorkbookPart workbookPart = spreadsheetDoc.AddWorkbookPart(); CreateWorkbookPart(workbookPart);

//Create a worksheet

Worksheet worksheet = new Worksheet() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = “x14ac” } }; worksheet.AddNamespaceDeclaration(“r”, “http://schemas.openxmlformats.org/officeDocument/2006/relationships"); worksheet.AddNamespaceDeclaration(“mc”, “http://schemas.openxmlformats.org/markup-compatibility/2006"); worksheet.AddNamespaceDeclaration(“x14ac”, “http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac");

 

//Create sheetviews

SheetViews sheetViews = new SheetViews();

SheetView sheetView = new SheetView() { WorkbookViewId = (UInt32Value)0U };

//Create a cell or range

Selection selection = new Selection() { ActiveCell = “A1” };

//Append range to sheetview sheetView.Append(selection);

//Append sheetview to sheetviews sheetViews.Append(sheetView);

 

int columnIndex = 0;

 

SheetData sheetData = new SheetData();

 

UInt32Value rowIndex = 1U;

//Create a row

Row row1 = new Row()

{

RowIndex = rowIndex++,

Spans = new ListValue<StringValue>() { InnerText = “1:3” },

DyDescent = 0.25D

};

//Create a cell and put the value in it

Cell cell = new Cell() { CellReference = ExcelHelper.ColumnCaption.Instance.Get((Convert.ToInt32((UInt32)rowIndex)

  • 2), columnIndex), DataType = CellValues.String };

CellValue cellValue = new CellValue();

//Create a CellValue to store the value

//Assign the value to new cell cellValue.Text = str;

//Append the cellValue into cell cell.Append(cellValue);

//Append the cell to row row1.Append(cell);

//Append the row to sheetdata sheetData.Append(row1);

//Append the sheetData to worksheet worksheet.Append(sheetData);

WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(“rId” + (101).ToString());

//Append the worksheet into workbook workbookPart.WorksheetParts.ElementAt(0).Worksheet = worksheet;

//Save the workbook workbookPart.Workbook.Save();

}

 

/// <summary>

/// Creates the workbook part.

/// </summary>

/// <param name=“workbookPart”>The workbook part.</param>

private void CreateWorkbookPart(WorkbookPart workbookPart)

{

Workbook workbook = new Workbook();

Sheets sheets = new Sheets();

 

Sheet sheet = new Sheet()

{

Name = “Book” + 1, SheetId = Convert.ToUInt32(101),

Id = “rId” + (101).ToString()

}; sheets.Append(sheet);

 

CalculationProperties calculationProperties = new CalculationProperties()

{ CalculationId = (UInt32Value)123456U  // some default Int32Value

}; workbook.Append(sheets); workbook.Append(calculationProperties); workbookPart.Workbook = workbook;

}

 

The code segment is pretty much self-explanatory.

You can also download a single solution from http://skydrive.live.com. The sample file name is GridToExcelNew.rar

If you have any questions, feel free to ping me. My  MSN ID is chanmmn@hotmail.com.