You've already forked lazarus-ccr
fpspreadsheet: Add meta data reader for Excel XML.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7582 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -84,7 +84,10 @@ begin
|
|||||||
|
|
||||||
book := TsWorkbook.Create;
|
book := TsWorkbook.Create;
|
||||||
try
|
try
|
||||||
|
// Select one of these
|
||||||
book.ReadFromFile('test.ods');
|
book.ReadFromFile('test.ods');
|
||||||
|
// book.ReadFromFile('test.xlsx');
|
||||||
|
// book.ReadFromFile('test.xml');
|
||||||
WriteLn('Created by : ', book.MetaData.CreatedBy);
|
WriteLn('Created by : ', book.MetaData.CreatedBy);
|
||||||
WriteLn('Date created : ', DateTimeToStr(book.MetaData.DateCreated));
|
WriteLn('Date created : ', DateTimeToStr(book.MetaData.DateCreated));
|
||||||
WriteLn('Modified by : ', book.MetaData.LastModifiedBy);
|
WriteLn('Modified by : ', book.MetaData.LastModifiedBy);
|
||||||
|
@ -45,6 +45,7 @@ type
|
|||||||
procedure ReadCellProtection(ANode: TDOMNode; var AFormat: TsCellFormat);
|
procedure ReadCellProtection(ANode: TDOMNode; var AFormat: TsCellFormat);
|
||||||
procedure ReadComment(ANode: TDOMNode; AWorksheet: TsBasicWorksheet; ACell: PCell);
|
procedure ReadComment(ANode: TDOMNode; AWorksheet: TsBasicWorksheet; ACell: PCell);
|
||||||
procedure ReadConditionalFormatting(ANode: TDOMNode; AWorksheet: TsBasicWorksheet);
|
procedure ReadConditionalFormatting(ANode: TDOMNode; AWorksheet: TsBasicWorksheet);
|
||||||
|
procedure ReadDocumentProperties(ANode: TDOMNode);
|
||||||
procedure ReadExcelWorkbook(ANode: TDOMNode);
|
procedure ReadExcelWorkbook(ANode: TDOMNode);
|
||||||
procedure ReadFont(ANode: TDOMNode; var AFormat: TsCellFormat);
|
procedure ReadFont(ANode: TDOMNode; var AFormat: TsCellFormat);
|
||||||
procedure ReadInterior(ANode: TDOMNode; var AFormat: TsCellFormat);
|
procedure ReadInterior(ANode: TDOMNode; var AFormat: TsCellFormat);
|
||||||
@ -1082,6 +1083,42 @@ begin
|
|||||||
sheet.WriteConditionalCellFormat(range, TsCFCondition(condition), op1, op2, fmtIndex);
|
sheet.WriteConditionalCellFormat(range, TsCFCondition(condition), op1, op2, fmtIndex);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{@@ ----------------------------------------------------------------------------
|
||||||
|
Reads the meta data etc.
|
||||||
|
-------------------------------------------------------------------------------}
|
||||||
|
procedure TsSpreadExcelXMLReader.ReadDocumentProperties(ANode: TDOMNode);
|
||||||
|
var
|
||||||
|
book: TsWorkbook;
|
||||||
|
nodeName: String;
|
||||||
|
s: String;
|
||||||
|
begin
|
||||||
|
if ANode = nil then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
book := TsWorkbook(FWorkbook);
|
||||||
|
ANode := ANode.FirstChild;
|
||||||
|
while ANode <> nil do
|
||||||
|
begin
|
||||||
|
nodeName := ANode.NodeName;
|
||||||
|
s := GetNodeValue(ANode);
|
||||||
|
case nodeName of
|
||||||
|
'Title':
|
||||||
|
book.MetaData.Title := s;
|
||||||
|
'Author':
|
||||||
|
book.MetaData.CreatedBy := s;
|
||||||
|
'LastAuthor':
|
||||||
|
book.MetaData.LastModifiedBy := s;
|
||||||
|
'Created':
|
||||||
|
if s <> '' then
|
||||||
|
book.MetaData.DateCreated := ISO8601StrToDateTime(s);
|
||||||
|
'LastSaved':
|
||||||
|
if s <> '' then
|
||||||
|
book.MetaData.DateLastModified := ISO8601StrToDateTime(s);
|
||||||
|
end;
|
||||||
|
ANode := ANode.NextSibling;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Reads the "ExcelWorkbook" node
|
Reads the "ExcelWorkbook" node
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
@ -2011,6 +2048,9 @@ begin
|
|||||||
try
|
try
|
||||||
ReadXMLStream(doc, AStream);
|
ReadXMLStream(doc, AStream);
|
||||||
|
|
||||||
|
// Read meta data
|
||||||
|
ReadDocumentProperties(doc.DocumentElement.FindNode('DocumentProperties'));
|
||||||
|
|
||||||
// Read style list
|
// Read style list
|
||||||
ReadStyles(doc.DocumentElement.FindNode('Styles'));
|
ReadStyles(doc.DocumentElement.FindNode('Styles'));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user