![]() |
XML-File die zweite, Kindeskinder?
Hallo zusammen,
mit
Delphi-Quellcode:
erstelle ich folgendes Fragment:
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', 'ich'); AddTextNode(nDocProperties, 'LastAuthor', 'ich'); 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')); ////////////////////////// nDocSettings := doc.CreateElement('ExcelWorkbook'); TDOMElement(nDocSettings).SetAttribute('xmlns', 'urn:schemas-microsoft-com:office:excel'); nRoot.AppendChild(nDocSettings); AddTextNode(nDocSettings, 'WindowHeight', '12435'); AddTextNode(nDocSettings, 'WindowWidth', '2880'); AddTextNode(nDocSettings, 'WindowTopX', '0'); AddTextNode(nDocSettings, 'WindowTopY', '0'); AddTextNode(nDocSettings, 'ProtectStructure', 'False'); AddTextNode(nDocSettings, 'ProtectWindows', 'False'); //////////////////////////// nDocSettings := doc.CreateElement('Styles'); nChild:= nDocSettings.AppendChild(doc.CreateElement('Style')); TDOMElement(nChild).SetAttribute('ss:ID', 'Default'); TDOMElement(nChild).SetAttribute('ss:Name', 'Normal'); nRoot.AppendChild(nDocSettings); ... ...
Delphi-Quellcode:
dafür vielen Dank an CCRDude
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Author>ich</Author> <LastAuthor>ich</LastAuthor> <Created>2015-06-25T08:50:13Z</Created> <Version>15.0</Version> </DocumentProperties> <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> <AllowPNG/> </OfficeDocumentSettings> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>12435</WindowHeight> <WindowWidth>2880</WindowWidth> <WindowTopX>0</WindowTopX> <WindowTopY>0</WindowTopY> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows> </ExcelWorkbook> <Styles> <Style ss:ID="Default" ss:Name="Normal"/> </Styles> </Workbook> inner halb des Style-Nodes benötige ich weiter Kind-Notes, wie krieg ich das hin? Ich verzweifle gerade, wenn ich mir dazu das ganze XML DOM-Tutorial durcharbeiten muss :-( so soll das Style-Fragment werden:
Delphi-Quellcode:
ich danke euch gewaltig für eure Hilfen
<Styles>
<Style ss:ID="Default" ss:Name="Normal"> <Alignment ss:Vertical="Bottom" /> <Borders /> <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000" /> <Interior /> <NumberFormat /> <Protection /> </Style> <Style ss:ID="s62"> <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="20" ss:Color="#000000" ss:Bold="1" /> </Style> </Styles> |
AW: XML-File die zweite, Kindeskinder?
Die Lösung steht quasi in deinem Quellcode :gruebel:
Du hast doch schon Kindeskinder (Workbook>Styles>Style). Wie hast du denn Style zu Styles hinzugefügt? |
AW: XML-File die zweite, Kindeskinder?
Hallo Robert,
Style hab ich per
Delphi-Quellcode:
hinzugefügt, aber jetzt steh ich irgendwie auf dem Schlauch :-(
nChild:= nDocSettings.AppendChild(doc.CreateElement('Style'));
nDocSettings.AppendChild(nchild.CreateElement('Fon t')); funktioniert nicht |
AW: XML-File die zweite, Kindeskinder?
Zitat:
Du must das Kind schon an den richtigen Knoten anhängen. Vermutlich steht das Element schon in einer Variable ... nur in welcher? Tipp: Du hast schon Attribute zu dem Element hinzugefügt. |
AW: XML-File die zweite, Kindeskinder?
tut mir leid, ich blicks gerade nicht :-(
|
AW: XML-File die zweite, Kindeskinder?
Hallo zusammen, hallo BUG,
danke für den Denkanstoss. Man muss manchmal nur richtig wach sein :oops: so funktionierts:
Delphi-Quellcode:
mit diesem Ergebnis:
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', 'ich'); AddTextNode(nDocProperties, 'LastAuthor', 'ich'); 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')); ////////////////////////// nDocSettings := doc.CreateElement('ExcelWorkbook'); TDOMElement(nDocSettings).SetAttribute('xmlns', 'urn:schemas-microsoft-com:office:excel'); nRoot.AppendChild(nDocSettings); AddTextNode(nDocSettings, 'WindowHeight', '12435'); AddTextNode(nDocSettings, 'WindowWidth', '2880'); AddTextNode(nDocSettings, 'WindowTopX', '0'); AddTextNode(nDocSettings, 'WindowTopY', '0'); AddTextNode(nDocSettings, 'ProtectStructure', 'False'); AddTextNode(nDocSettings, 'ProtectWindows', 'False'); //////////////////////////// nDocSettings := doc.CreateElement('Styles'); nChild:= nDocSettings.AppendChild(doc.CreateElement('Style')); TDOMElement(nChild).SetAttribute('ss:ID', 'Default'); TDOMElement(nChild).SetAttribute('ss:Name', 'Normal'); nRoot.AppendChild(nDocSettings); nChildChild:= nChild.AppendChild(doc.CreateElement('Alignment')); TDOMElement(nChildChild).SetAttribute('ss:Vertical', 'Bottom'); nChildChild:= nChild.AppendChild(doc.CreateElement('Borders')); nChildChild:= nChild.AppendChild(doc.CreateElement('Font')); TDOMElement(nChildChild).SetAttribute('ss:FontName', 'Calibri'); TDOMElement(nChildChild).SetAttribute('ss:Family', 'Swiss'); TDOMElement(nChildChild).SetAttribute('ss:Size', '11'); TDOMElement(nChildChild).SetAttribute('ss:Color', '#000000'); nChildChild:= nChild.AppendChild(doc.CreateElement('Interior')); nChildChild:= nChild.AppendChild(doc.CreateElement('NumberFormat')); nChildChild:= nChild.AppendChild(doc.CreateElement('Protection'));
Delphi-Quellcode:
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Author>ich</Author> <LastAuthor>ich</LastAuthor> <Created>2015-06-27T16:21:35Z</Created> <Version>15.0</Version> </DocumentProperties> <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> <AllowPNG/> </OfficeDocumentSettings> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>12435</WindowHeight> <WindowWidth>2880</WindowWidth> <WindowTopX>0</WindowTopX> <WindowTopY>0</WindowTopY> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows> </ExcelWorkbook> <Styles> <Style ss:ID="Default" ss:Name="Normal"> <Alignment ss:Vertical="Bottom"/> <Borders/> <Font ss:Size="11" ss:Color="#000000" ss:Family="Swiss" ss:FontName="Calibri"/> <Interior/> <NumberFormat/> <Protection/> </Style> </Styles> </Workbook> |
AW: XML-File die zweite, Kindeskinder?
schemas-microsoft-com:office:spreadsheet? Willst du die xte "Ich kann xlsx-Dateien selbst schreiben"-Klasse entwickeln?
|
AW: XML-File die zweite, Kindeskinder?
Zitat:
Ich hab aber keine "fertige" Lösung gefunden :-( Hast du eine ? Gruss KHH |
AW: XML-File die zweite, Kindeskinder?
Zitat:
Darf was Kosten? Darf Excel installiert sein? Delphi und/oder Lazarus? |
AW: XML-File die zweite, Kindeskinder?
Nach ein paar Sekunden Websuche bin ich schon auf folgende Produkte gestoßen:
![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz