// https://en.wikipedia.org/wiki/Microsoft_Office_XML_formats
// http://www.delphipraxis.net/185583-xml-file-erstellen-2.html
program ExcelXMLOutputDemo;
uses
SysUtils,
DOM,
XMLWrite;
procedure CreateXML(
const AFilename:
string);
var
doc: TXMLDocument;
function AddTextNode(AParentNode: TDOMNode; ANodeName, ATextValue: DOMString): TDOMNode;
begin
Result := doc.CreateElement(ANodeName);
AParentNode.AppendChild(Result);
Result.AppendChild(doc.CreateTextNode(ATextValue));
end;
var
nRoot, nDocProperties, nDocSettings: TDOMNode;
begin
doc := TXMLDocument.Create;
try
doc.XMLVersion := '
1.0';
doc.AppendChild(doc.CreateProcessingInstruction('
mso-application', '
progid="Excel.Sheet"'));
nRoot := doc.CreateElement('
Workbook');
TDOMElement(nRoot).SetAttribute('
xmlns', '
urn:schemas-microsoft-com:office:spreadsheet');
TDOMElement(nRoot).SetAttribute('
xmlns:o', '
urn:schemas-microsoft-com:office:office');
TDOMElement(nRoot).SetAttribute('
xmlns:x', '
urn:schemas-microsoft-com:office:excel');
TDOMElement(nRoot).SetAttribute('
xmlns:ss', '
urn:schemas-microsoft-com:office:spreadsheet');
TDOMElement(nRoot).SetAttribute('
xmlns:html', '
http://www.w3.org/TR/REC-html40');
doc.AppendChild(nRoot);
nDocProperties := doc.CreateElement('
DocumentProperties');
TDOMElement(nDocProperties).SetAttribute('
xmlns', '
urn:schemas-microsoft-com:office:office');
nRoot.AppendChild(nDocProperties);
AddTextNode(nDocProperties, '
Author', '
CCRDude');
AddTextNode(nDocProperties, '
LastAuthor', '
CCRDude');
AddTextNode(nDocProperties, '
Created', FormatDateTime('
yyyy-mm-dd', Now) + '
T' + FormatDateTime('
hh:nn:ss', Now) + '
Z');
AddTextNode(nDocProperties, '
Version', '
15.0');
nDocSettings := doc.CreateElement('
OfficeDocumentSettings');
TDOMElement(nDocSettings).SetAttribute('
xmlns', '
urn:schemas-microsoft-com:office:office');
nRoot.AppendChild(nDocSettings);
nDocSettings.AppendChild(doc.CreateElement('
AllowPNG'));
WriteXML(doc, AFilename);
finally
doc.Free;
end;
end;
begin
CreateXML('
C:\Tests\excel.xml');
end.