private XmlDocument CreateExcelXML(string partType)
{
switch (partType)
{
case "workbook":
//Create a new XML document for the workbook.
XmlDocument workbookDoc = new XmlDocument();
//Obtain a reference to the root node, and then add
//the XML declaration.
XmlElement wbRoot = workbookDoc.DocumentElement;
XmlDeclaration wbxmldecl =
workbookDoc.CreateXmlDeclaration
("1.0", "UTF-8", "yes");
workbookDoc.InsertBefore(wbxmldecl, wbRoot);
//Create and append the workbook node
//to the document.
XmlElement workBook =
workbookDoc.CreateElement("workbook");
workBook.SetAttribute("xmlns",
"http://schemas.openxmlformats.org/" +
"spreadsheetml/2006/main");
workBook.SetAttribute("xmlns:r",
"http://schemas.openxmlformats.org/officeDocument/" +
"2006/relationships");
workbookDoc.AppendChild(workBook);
//Create and append the sheets node to the
//workBook node.
XmlElement sheets = workbookDoc.CreateElement("sheets");
workBook.AppendChild(sheets);
//Create and append the sheet node to the
//sheets node.
XmlElement sheet = workbookDoc.CreateElement("sheet");
sheet.SetAttribute("name", "Sheet1");
sheet.SetAttribute("sheetId", "1");
sheet.SetAttribute("id",
"http://schemas.openxmlformats.org/" +
"officeDocument/2006/relationships","rId1");
sheets.AppendChild(sheet);
return workbookDoc;
case "worksheet":
//Create a new XML document for the worksheet.
XmlDocument worksheetDoc = new XmlDocument();
//Get a reference to the root node, and then add
//the XML declaration.
XmlElement wsRoot = worksheetDoc.DocumentElement;
XmlDeclaration wsxmldecl =
worksheetDoc.CreateXmlDeclaration("1.0",
"UTF-8", "yes");
worksheetDoc.InsertBefore(wsxmldecl, wsRoot);
//Create and append the worksheet node
//to the document.
XmlElement workSheet =
worksheetDoc.CreateElement("worksheet");
workSheet.SetAttribute("xmlns",
"http://schemas.openxmlformats.org/" +
"spreadsheetml/2006/main");
workSheet.SetAttribute("xmlns:r",
"http://schemas.openxmlformats.org/" +
"officeDocument/2006/relationships");
worksheetDoc.AppendChild(workSheet);
//Create and add the sheetData node.
XmlElement sheetData =
worksheetDoc.CreateElement("sheetData");
workSheet.AppendChild(sheetData);
//Create and add the row node.
XmlElement rNode = worksheetDoc.CreateElement("row");
rNode.SetAttribute("r", (1).ToString());
rNode.SetAttribute("spans", "1:1");
sheetData.AppendChild(rNode);
//Create and add the column node.
XmlElement cNode = worksheetDoc.CreateElement("c");
cNode.SetAttribute("r", "A1");
cNode.SetAttribute("t", "s");
rNode.AppendChild(cNode);
//Add the "Hello World" text to the worksheet.
XmlElement vNode = worksheetDoc.CreateElement("v");
vNode.InnerText = "0";
cNode.AppendChild(vNode);
return worksheetDoc;
case "sharedstrings":
//Create a new XML document for the sharedStrings.
XmlDocument sharedStringsDoc = new XmlDocument();
//Get a reference to the root node, and then add
//the XML declaration.
XmlElement ssRoot = sharedStringsDoc.DocumentElement;
XmlDeclaration ssxmldecl =
sharedStringsDoc.CreateXmlDeclaration("1.0",
"UTF-8", "yes");
sharedStringsDoc.InsertBefore(ssxmldecl, ssRoot);
//Create and append the sst node.
XmlElement sstNode =
sharedStringsDoc.CreateElement("sst");
sstNode.SetAttribute("xmlns",
"http://schemas.openxmlformats.org/" +
"spreadsheetml/2006/main");
sstNode.SetAttribute("count", "1");
sstNode.SetAttribute("uniqueCount", "1");
sharedStringsDoc.AppendChild(sstNode);
//Create and append the si node.
XmlElement siNode = sharedStringsDoc.CreateElement("si");
sstNode.AppendChild(siNode);
//Create and append the t node.
XmlElement tNode = sharedStringsDoc.CreateElement("t");
tNode.InnerText = "Hello World";
siNode.AppendChild(tNode);
return sharedStringsDoc;
default:
return null;
}
}
private Package CreateExcelWorkbookPackage(string fileName)
{
//Create a new Excel workbook package on the
//desktop of the user by using the specified name.
string desktopDir = System.Environment.GetFolderPath(
Environment.SpecialFolder.DesktopDirectory);
Package xlPackage = Package.Open(desktopDir + "\\" + fileName,
FileMode.Create, FileAccess.ReadWrite);
return xlPackage;
}
private void AddExcelPart(Package fPackage, string part,
XmlDocument xDoc)
{
switch (part)
{
case "workbook":
string nsWorkbook = "application/vnd.openxmlformats-" +
"officedocument.spreadsheetml.sheet.main+xml";
string workbookRelationshipType =
"http://schemas.openxmlformats.org/" + "officeDocument/2006/relationships/" +
"officeDocument";
Uri workBookUri = PackUriHelper.CreatePartUri(new
Uri("xl/workbook.xml",UriKind.Relative));
//Create the workbook part.
PackagePart wbPart =
fPackage.CreatePart(workBookUri, nsWorkbook);
//Write the workbook XML to the workbook part.
Stream workbookStream =
wbPart.GetStream(FileMode.Create,
FileAccess.Write);
xDoc.Save(workbookStream);
//Create the relationship for the workbook part.
fPackage.CreateRelationship(workBookUri,
TargetMode.Internal,
workbookRelationshipType,"rId1");
break;
case "worksheet":
string nsWorksheet = "application/vnd.openxmlformats-" +
"officedocument.spreadsheetml.worksheet+xml";
string worksheetRelationshipType =
"http://schemas.openxmlformats.org/" +
"officeDocument/2006/relationships/worksheet";
Uri workSheetUri = PackUriHelper.CreatePartUri(new
Uri("xl/worksheets/sheet1.xml",UriKind.Relative));
//Create the workbook part.
PackagePart wsPart =
fPackage.CreatePart(workSheetUri, nsWorksheet);
//Write the workbook XML to the workbook part.
Stream worksheetStream =
wsPart.GetStream(FileMode.Create,
FileAccess.Write);
xDoc.Save(worksheetStream);
//Create the relationship for the workbook part.
Uri wsworkbookPartUri = PackUriHelper.CreatePartUri(new
Uri("xl/workbook.xml",UriKind.Relative));
PackagePart wsworkbookPart =
fPackage.GetPart(wsworkbookPartUri);
wsworkbookPart.CreateRelationship(workSheetUri,
TargetMode.Internal,
worksheetRelationshipType,"rId1");
break;
case "sharedstrings":
string nsSharedStrings =
"application/vnd.openxmlformats-officedocument" +
".spreadsheetml.sharedStrings+xml";
string sharedStringsRelationshipType =
"http://schemas.openxmlformats.org" + "/officeDocument/2006/relationships/sharedStrings";
Uri sharedStringsUri = PackUriHelper.CreatePartUri(new
Uri("xl/sharedStrings.xml", UriKind.Relative));
//Create the workbook part.
PackagePart sharedStringsPart = fPackage.CreatePart(sharedStringsUri,
nsSharedStrings);
//Write the workbook XML to the workbook part.
Stream sharedStringsStream =
sharedStringsPart.GetStream(FileMode.Create,
FileAccess.Write);
xDoc.Save(sharedStringsStream);
//Create the relationship for the workbook part.
Uri ssworkbookPartUri = PackUriHelper.CreatePartUri(new
Uri("xl/workbook.xml", UriKind.Relative));
PackagePart ssworkbookPart =
fPackage.GetPart(ssworkbookPartUri);
ssworkbookPart.CreateRelationship(sharedStringsUri,
TargetMode.Internal,
sharedStringsRelationshipType,"rId2");
break;
}
}