You've already forked lazarus-ccr
FPSpreadsheet: Adds a custom pallete so that we can have more commonly used colors instead of the default excel ones
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1649 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -20,11 +20,9 @@ var
|
||||
MyWorksheet: TsWorksheet;
|
||||
MyDir: string;
|
||||
MyCell: PCell;
|
||||
begin
|
||||
MyDir := ExtractFilePath(ParamStr(0));
|
||||
|
||||
// Create the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
procedure WriteFirstWorksheet();
|
||||
begin
|
||||
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
|
||||
|
||||
// Write some cells
|
||||
@ -110,6 +108,47 @@ begin
|
||||
MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
|
||||
MyCell^.BackgroundColor := scGreen;
|
||||
MyCell^.UsedFormattingFields := [uffBorder, uffBold, uffBackgroundColor];
|
||||
end;
|
||||
|
||||
procedure WriteSecondWorksheet();
|
||||
begin
|
||||
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet2');
|
||||
|
||||
// Write some cells
|
||||
MyWorksheet.WriteUTF8Text(1, 1, ' ');
|
||||
MyCell := MyWorksheet.GetCell(1, 1);
|
||||
MyCell^.Border := [cbNorth, cbWest];
|
||||
MyCell^.BackgroundColor := scGrey10pct;
|
||||
MyCell^.UsedFormattingFields := [uffBorder, uffBackgroundColor];
|
||||
|
||||
MyWorksheet.WriteUTF8Text(1, 2, ' ');
|
||||
MyCell := MyWorksheet.GetCell(1, 2);
|
||||
MyCell^.Border := [cbNorth, cbEast];
|
||||
MyCell^.BackgroundColor := scGrey10pct;
|
||||
MyCell^.UsedFormattingFields := [uffBorder, uffBackgroundColor];
|
||||
|
||||
MyWorksheet.WriteUTF8Text(2, 1, ' ');
|
||||
MyCell := MyWorksheet.GetCell(2, 1);
|
||||
MyCell^.Border := [cbWest, cbSouth];
|
||||
MyCell^.BackgroundColor := scGrey10pct;
|
||||
MyCell^.UsedFormattingFields := [uffBorder, uffBackgroundColor];
|
||||
|
||||
MyWorksheet.WriteUTF8Text(2, 2, ' ');
|
||||
MyCell := MyWorksheet.GetCell(2, 2);
|
||||
MyCell^.Border := [cbEast, cbSouth];
|
||||
MyCell^.BackgroundColor := scGrey10pct;
|
||||
MyCell^.UsedFormattingFields := [uffBorder, uffBackgroundColor];
|
||||
end;
|
||||
|
||||
begin
|
||||
MyDir := ExtractFilePath(ParamStr(0));
|
||||
|
||||
// Create the spreadsheet
|
||||
MyWorkbook := TsWorkbook.Create;
|
||||
|
||||
WriteFirstWorksheet();
|
||||
|
||||
WriteSecondWorksheet();
|
||||
|
||||
// Save the spreadsheet to a file
|
||||
MyWorkbook.WriteToFile(MyDir + 'test3.xls', sfExcel8, False);
|
||||
|
@ -139,7 +139,10 @@ type
|
||||
scPURPLE, // 800080H
|
||||
scTEAL, // 008080H
|
||||
scSilver, // C0C0C0H
|
||||
scGrey // 808080H
|
||||
scGrey, // 808080H
|
||||
//
|
||||
scGrey10pct,// E6E6E6H
|
||||
scGrey20pct // CCCCCCH
|
||||
);
|
||||
|
||||
{@@ Cell structure for TsWorksheet
|
||||
|
@ -124,6 +124,7 @@ type
|
||||
procedure WriteIndex(AStream: TStream);
|
||||
procedure WriteLabel(AStream: TStream; const ARow, ACol: Word; const AValue: string; ACell: PCell); override;
|
||||
procedure WriteNumber(AStream: TStream; const ARow, ACol: Cardinal; const AValue: double; ACell: PCell); override;
|
||||
procedure WritePalette(AStream: TStream);
|
||||
procedure WriteStyle(AStream: TStream);
|
||||
procedure WriteWindow1(AStream: TStream);
|
||||
procedure WriteWindow2(AStream: TStream; ASheetSelected: Boolean);
|
||||
@ -155,6 +156,7 @@ const
|
||||
INT_EXCEL_ID_SST = $00FC; //BIFF8 only
|
||||
INT_EXCEL_ID_CONTINUE = $003C;
|
||||
INT_EXCEL_ID_LABELSST = $00FD; //BIFF8 only
|
||||
INT_EXCEL_ID_PALETTE = $0092;
|
||||
|
||||
{ Cell Addresses constants }
|
||||
MASK_EXCEL_ROW = $3FFF;
|
||||
@ -443,6 +445,9 @@ begin
|
||||
FontData.Free;
|
||||
end;
|
||||
|
||||
// PALETTE
|
||||
WritePalette(AStream);
|
||||
|
||||
// XF0
|
||||
WriteXF(AStream, 0, MASK_XF_TYPE_PROT_STYLE_XF, XF_ROTATION_HORIZONTAL, []);
|
||||
// XF1
|
||||
@ -899,6 +904,83 @@ begin
|
||||
AStream.WriteBuffer(AValue, 8);
|
||||
end;
|
||||
|
||||
procedure TsSpreadBIFF8Writer.WritePalette(AStream: TStream);
|
||||
begin
|
||||
{ BIFF Record header }
|
||||
AStream.WriteWord(WordToLE(INT_EXCEL_ID_PALETTE));
|
||||
AStream.WriteWord(WordToLE(2+4*56));
|
||||
|
||||
{ Number of colors }
|
||||
AStream.WriteWord(WordToLE(56));
|
||||
|
||||
{ Now the colors, first the standard 16 from Excel }
|
||||
AStream.WriteDWord(DWordToLE($000000)); // $08
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FF0000));
|
||||
AStream.WriteDWord(DWordToLE($00FF00));
|
||||
AStream.WriteDWord(DWordToLE($0000FF));
|
||||
AStream.WriteDWord(DWordToLE($FFFF00));
|
||||
AStream.WriteDWord(DWordToLE($FF00FF));
|
||||
AStream.WriteDWord(DWordToLE($00FFFF));
|
||||
AStream.WriteDWord(DWordToLE($800000));
|
||||
AStream.WriteDWord(DWordToLE($008000));
|
||||
AStream.WriteDWord(DWordToLE($000080));
|
||||
AStream.WriteDWord(DWordToLE($808000));
|
||||
AStream.WriteDWord(DWordToLE($800080));
|
||||
AStream.WriteDWord(DWordToLE($008080));
|
||||
AStream.WriteDWord(DWordToLE($C0C0C0));
|
||||
AStream.WriteDWord(DWordToLE($808080)); //$17
|
||||
|
||||
{ Now some colors which we define ourselves }
|
||||
|
||||
AStream.WriteDWord(DWordToLE($E6E6E6)); //$18
|
||||
AStream.WriteDWord(DWordToLE($CCCCCC)); //$19
|
||||
|
||||
{ And padding }
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF)); //$20
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF)); //$30
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
AStream.WriteDWord(DWordToLE($FFFFFF));
|
||||
end;
|
||||
|
||||
{*******************************************************************
|
||||
* TsSpreadBIFF8Writer.WriteStyle ()
|
||||
*
|
||||
|
@ -31,6 +31,9 @@ const
|
||||
BUILT_IN_COLOR_PALLETE_SILVER = $16; // C0C0C0H
|
||||
BUILT_IN_COLOR_PALLETE_GREY = $17; // 808080H
|
||||
|
||||
EXTRA_COLOR_PALETTE_GREY10PCT = $18; // E6E6E6H
|
||||
EXTRA_COLOR_PALETTE_GREY20PCT = $19; // E6E6E6H
|
||||
|
||||
type
|
||||
|
||||
{ TsSpreadBIFFReader }
|
||||
@ -77,6 +80,9 @@ begin
|
||||
scTEAL: Result := BUILT_IN_COLOR_PALLETE_TEAL;
|
||||
scSilver: Result := BUILT_IN_COLOR_PALLETE_SILVER;
|
||||
scGrey: Result := BUILT_IN_COLOR_PALLETE_GREY;
|
||||
//
|
||||
scGrey10pct: Result := EXTRA_COLOR_PALETTE_GREY10PCT;
|
||||
scGrey20pct: Result := EXTRA_COLOR_PALETTE_GREY20PCT;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Reference in New Issue
Block a user