You've already forked lazarus-ccr
fpspreadsheet: Adds bold support to ooxml
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1883 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -18,6 +18,7 @@ var
|
|||||||
MyDir: string;
|
MyDir: string;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
a: TStringList;
|
a: TStringList;
|
||||||
|
MyCell: PCell;
|
||||||
begin
|
begin
|
||||||
// Open the output file
|
// Open the output file
|
||||||
MyDir := ExtractFilePath(ParamStr(0));
|
MyDir := ExtractFilePath(ParamStr(0));
|
||||||
@ -32,15 +33,24 @@ begin
|
|||||||
MyWorksheet.WriteNumber(0, 2, 3.0);
|
MyWorksheet.WriteNumber(0, 2, 3.0);
|
||||||
MyWorksheet.WriteNumber(0, 3, 4.0);
|
MyWorksheet.WriteNumber(0, 3, 4.0);
|
||||||
|
|
||||||
{ Uncommend this to test large XLS files
|
// Uncommend this to test large XLS files
|
||||||
for i := 2 to 20 do
|
for i := 2 to 2{20} do
|
||||||
begin
|
begin
|
||||||
MyWorksheet.WriteAnsiText(i, 0, ParamStr(0));
|
MyWorksheet.WriteUTF8Text(i, 0, ParamStr(0));
|
||||||
MyWorksheet.WriteAnsiText(i, 1, ParamStr(0));
|
MyWorksheet.WriteUTF8Text(i, 1, ParamStr(0));
|
||||||
MyWorksheet.WriteAnsiText(i, 2, ParamStr(0));
|
MyWorksheet.WriteUTF8Text(i, 2, ParamStr(0));
|
||||||
MyWorksheet.WriteAnsiText(i, 3, ParamStr(0));
|
MyWorksheet.WriteUTF8Text(i, 3, ParamStr(0));
|
||||||
end;
|
end;
|
||||||
}
|
|
||||||
|
// Test for Bold
|
||||||
|
MyCell := MyWorksheet.GetCell(2, 0);
|
||||||
|
MyCell^.UsedFormattingFields := [uffBold];
|
||||||
|
MyCell := MyWorksheet.GetCell(2, 1);
|
||||||
|
MyCell^.UsedFormattingFields := [uffBold];
|
||||||
|
MyCell := MyWorksheet.GetCell(2, 2);
|
||||||
|
MyCell^.UsedFormattingFields := [uffBold];
|
||||||
|
MyCell := MyWorksheet.GetCell(2, 3);
|
||||||
|
MyCell^.UsedFormattingFields := [uffBold];
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
||||||
|
@ -57,6 +57,7 @@ type
|
|||||||
procedure WriteGlobalFiles(AData: TsWorkbook);
|
procedure WriteGlobalFiles(AData: TsWorkbook);
|
||||||
procedure WriteContent(AData: TsWorkbook);
|
procedure WriteContent(AData: TsWorkbook);
|
||||||
procedure WriteWorksheet(CurSheet: TsWorksheet);
|
procedure WriteWorksheet(CurSheet: TsWorksheet);
|
||||||
|
function GetStyleIndex(ACell: PCell): Cardinal;
|
||||||
public
|
public
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
{ General writing methods }
|
{ General writing methods }
|
||||||
@ -143,11 +144,9 @@ begin
|
|||||||
FStyles :=
|
FStyles :=
|
||||||
XML_HEADER + LineEnding +
|
XML_HEADER + LineEnding +
|
||||||
'<styleSheet xmlns="' + SCHEMAS_SPREADML + '">' + LineEnding +
|
'<styleSheet xmlns="' + SCHEMAS_SPREADML + '">' + LineEnding +
|
||||||
' <fonts count="1">' + LineEnding +
|
' <fonts count="2">' + LineEnding +
|
||||||
' <font>' + LineEnding +
|
' <font><sz val="10" /><name val="Arial" /></font>' + LineEnding +
|
||||||
' <sz val="10" />' + LineEnding +
|
' <font><sz val="10" /><name val="Arial" /><b val="true"/></font>' + LineEnding +
|
||||||
' <name val="Arial" />' + LineEnding +
|
|
||||||
' </font>' + LineEnding +
|
|
||||||
' </fonts>' + LineEnding +
|
' </fonts>' + LineEnding +
|
||||||
' <fills count="2">' + LineEnding +
|
' <fills count="2">' + LineEnding +
|
||||||
' <fill>' + LineEnding +
|
' <fill>' + LineEnding +
|
||||||
@ -166,11 +165,13 @@ begin
|
|||||||
' <diagonal />' + LineEnding +
|
' <diagonal />' + LineEnding +
|
||||||
' </border>' + LineEnding +
|
' </border>' + LineEnding +
|
||||||
' </borders>' + LineEnding +
|
' </borders>' + LineEnding +
|
||||||
' <cellStyleXfs count="1">' + LineEnding +
|
' <cellStyleXfs count="2">' + LineEnding +
|
||||||
' <xf numFmtId="0" fontId="0" fillId="0" borderId="0" />' + LineEnding +
|
' <xf numFmtId="0" fontId="0" fillId="0" borderId="0" />' + LineEnding +
|
||||||
|
' <xf numFmtId="0" fontId="1" fillId="0" borderId="0" />' + LineEnding +
|
||||||
' </cellStyleXfs>' + LineEnding +
|
' </cellStyleXfs>' + LineEnding +
|
||||||
' <cellXfs count="1">' + LineEnding +
|
' <cellXfs count="2">' + LineEnding +
|
||||||
' <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />' + LineEnding +
|
' <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />' + LineEnding +
|
||||||
|
' <xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" />' + LineEnding +
|
||||||
' </cellXfs>' + LineEnding +
|
' </cellXfs>' + LineEnding +
|
||||||
' <cellStyles count="1">' + LineEnding +
|
' <cellStyles count="1">' + LineEnding +
|
||||||
' <cellStyle name="Normal" xfId="0" builtinId="0" />' + LineEnding +
|
' <cellStyle name="Normal" xfId="0" builtinId="0" />' + LineEnding +
|
||||||
@ -340,6 +341,13 @@ begin
|
|||||||
'</worksheet>';
|
'</worksheet>';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// This is an index to the section cellXfs from the styles.xml file
|
||||||
|
function TsSpreadOOXMLWriter.GetStyleIndex(ACell: PCell): Cardinal;
|
||||||
|
begin
|
||||||
|
if uffBold in ACell^.UsedFormattingFields then Result := 1
|
||||||
|
else Result := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
destructor TsSpreadOOXMLWriter.Destroy;
|
destructor TsSpreadOOXMLWriter.Destroy;
|
||||||
begin
|
begin
|
||||||
SetLength(FSheets, 0);
|
SetLength(FSheets, 0);
|
||||||
@ -439,6 +447,7 @@ procedure TsSpreadOOXMLWriter.WriteLabel(AStream: TStream; const ARow,
|
|||||||
ACol: Word; const AValue: string; ACell: PCell);
|
ACol: Word; const AValue: string; ACell: PCell);
|
||||||
var
|
var
|
||||||
CellPosText: string;
|
CellPosText: string;
|
||||||
|
lStyleIndex: Cardinal;
|
||||||
begin
|
begin
|
||||||
FSharedStrings := FSharedStrings +
|
FSharedStrings := FSharedStrings +
|
||||||
' <si>' + LineEnding +
|
' <si>' + LineEnding +
|
||||||
@ -446,8 +455,9 @@ begin
|
|||||||
' </si>' + LineEnding;
|
' </si>' + LineEnding;
|
||||||
|
|
||||||
CellPosText := TsWorksheet.CellPosToText(ARow, ACol);
|
CellPosText := TsWorksheet.CellPosToText(ARow, ACol);
|
||||||
|
lStyleIndex := GetStyleIndex(ACell);
|
||||||
FSheets[FCurSheetNum] := FSheets[FCurSheetNum] +
|
FSheets[FCurSheetNum] := FSheets[FCurSheetNum] +
|
||||||
Format(' <c r="%s" s="0" t="s"><v>%d</v></c>', [CellPosText, FSharedStringsCount]) + LineEnding;
|
Format(' <c r="%s" s="%d" t="s"><v>%d</v></c>', [CellPosText, lStyleIndex, FSharedStringsCount]) + LineEnding;
|
||||||
|
|
||||||
Inc(FSharedStringsCount);
|
Inc(FSharedStringsCount);
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user