fpspreadsheet: Fix line breaks in header/footer lines for xls and xlsx.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4123 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2015-05-10 22:04:09 +00:00
parent 770ff0d4f1
commit c42a8fdedb
3 changed files with 19 additions and 6 deletions

View File

@ -394,6 +394,9 @@ end;
procedure TsHeaderFooterParser.ScanNewLine; procedure TsHeaderFooterParser.ScanNewLine;
begin begin
if FCurrText <> '' then
AddCurrTextElement;
case FToken of case FToken of
#13: begin #13: begin
AddElement(hftNewLine); AddElement(hftNewLine);

View File

@ -2217,6 +2217,10 @@ begin
'>': WrkStr:=WrkStr + '&gt;'; '>': WrkStr:=WrkStr + '&gt;';
'"': WrkStr:=WrkStr + '&quot;'; '"': WrkStr:=WrkStr + '&quot;';
'''':WrkStr:=WrkStr + '&apos;'; '''':WrkStr:=WrkStr + '&apos;';
{
#10: WrkStr := WrkStr + '&#10;';
#13: WrkStr := WrkStr + '&#13;';
}
else else
WrkStr:=WrkStr + AText[Idx]; WrkStr:=WrkStr + AText[Idx];
end; end;

View File

@ -1192,6 +1192,12 @@ var
node: TDOMNode; node: TDOMNode;
nodeName: String; nodeName: String;
s: String; s: String;
function FixLineEnding(AString: String): String;
begin
Result := StringReplace(AString, #10, LineEnding, [rfReplaceAll]);
end;
begin begin
if ANode = nil then if ANode = nil then
exit; exit;
@ -1209,12 +1215,12 @@ begin
begin begin
nodeName := node.NodeName; nodeName := node.NodeName;
case nodeName of case nodeName of
'firstHeader': AWorksheet.PageLayout.Headers[0] := GetNodeValue(node); 'firstHeader': AWorksheet.PageLayout.Headers[0] := FixLineEnding(GetNodeValue(node));
'oddHeader' : AWorksheet.PageLayout.Headers[1] := GetNodeValue(node); 'oddHeader' : AWorksheet.PageLayout.Headers[1] := FixLineEnding(GetNodeValue(node));
'evenHeader' : AWorksheet.PageLayout.Headers[2] := GetNodeValue(node); 'evenHeader' : AWorksheet.PageLayout.Headers[2] := FixLineEnding(GetNodeValue(node));
'firstFooter': AWorksheet.PageLayout.Footers[0] := GetNodeValue(node); 'firstFooter': AWorksheet.PageLayout.Footers[0] := FixLineEnding(GetNodeValue(node));
'oddFooter' : AWorksheet.PageLayout.Footers[1] := GetNodeValue(node); 'oddFooter' : AWorksheet.PageLayout.Footers[1] := FixLineEnding(GetNodeValue(node));
'evenFooter' : AWorksheet.PageLayout.Footers[2] := GetNodeValue(node); 'evenFooter' : AWorksheet.PageLayout.Footers[2] := FixLineEnding(GetNodeValue(node));
end; end;
node := node.NextSibling; node := node.NextSibling;
end; end;