You've already forked lazarus-ccr
fpspreadsheet: Fix show/hide gridlines/headers issue of BIFF2 by adding WINDOW1 record. Move WINDOW1 record of BIFF5-BIFF8 to xlscommon. Add test cases for BIFF2. ok.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3008 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -31,6 +31,9 @@ begin
|
|||||||
//MyWorksheet.WriteColWidth(0, 5);
|
//MyWorksheet.WriteColWidth(0, 5);
|
||||||
//MyWorksheet.WriteColWidth(1, 30);
|
//MyWorksheet.WriteColWidth(1, 30);
|
||||||
|
|
||||||
|
// Turn off grid lines and hide headers
|
||||||
|
MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
|
||||||
|
|
||||||
{ -- currently not working
|
{ -- currently not working
|
||||||
MyWorksheet.Options := MyWorksheet.Options + [soHasFrozenPanes];
|
MyWorksheet.Options := MyWorksheet.Options + [soHasFrozenPanes];
|
||||||
MyWorksheet.LeftPaneWidth := 1;
|
MyWorksheet.LeftPaneWidth := 1;
|
||||||
|
@ -15,7 +15,7 @@ uses
|
|||||||
testsutility;
|
testsutility;
|
||||||
|
|
||||||
type
|
type
|
||||||
{ TSpreadWriteReadColorTests }
|
{ TSpreadWriteReadOptionTests }
|
||||||
//Write to xls/xml file and read back
|
//Write to xls/xml file and read back
|
||||||
TSpreadWriteReadOptionsTests = class(TTestCase)
|
TSpreadWriteReadOptionsTests = class(TTestCase)
|
||||||
private
|
private
|
||||||
@ -29,27 +29,30 @@ type
|
|||||||
AShowGridLines, AShowHeaders: Boolean);
|
AShowGridLines, AShowHeaders: Boolean);
|
||||||
|
|
||||||
published
|
published
|
||||||
// Writes out colors & reads back.
|
// Writes out sheet options & reads back.
|
||||||
|
|
||||||
{ BIFF2 file format tests }
|
{ BIFF2 tests }
|
||||||
// procedure TestWriteReadBIFF2_Font_InternalPal; // internal palette for BIFF2 file format
|
procedure TestWriteReadBIFF2_ShowGridLines_ShowHeaders;
|
||||||
|
procedure TestWriteReadBIFF2_ShowGridLines_HideHeaders;
|
||||||
|
procedure TestWriteReadBIFF2_HideGridLines_ShowHeaders;
|
||||||
|
procedure TestWriteReadBIFF2_HideGridLines_HideHeaders;
|
||||||
|
|
||||||
{ BIFF5 file format tests }
|
{ BIFF5 tests }
|
||||||
procedure TestWriteReadBIFF5_GridLines_Headers;
|
procedure TestWriteReadBIFF5_ShowGridLines_ShowHeaders;
|
||||||
procedure TestWriteReadBIFF5_GridLines;
|
procedure TestWriteReadBIFF5_ShowGridLines_HideHeaders;
|
||||||
procedure TestWriteReadBIFF5_Headers;
|
procedure TestWriteReadBIFF5_HideGridLines_ShowHeaders;
|
||||||
procedure TestWriteReadBIFF5_NoGridLines_NoHeaders;
|
procedure TestWriteReadBIFF5_HideGridLines_HideHeaders;
|
||||||
|
|
||||||
procedure TestWriteReadBIFF5_Panes_HorVert;
|
procedure TestWriteReadBIFF5_Panes_HorVert;
|
||||||
procedure TestWriteReadBIFF5_Panes_Hor;
|
procedure TestWriteReadBIFF5_Panes_Hor;
|
||||||
procedure TestWriteReadBIFF5_Panes_Vert;
|
procedure TestWriteReadBIFF5_Panes_Vert;
|
||||||
procedure TestWriteReadBIFF5_Panes_None;
|
procedure TestWriteReadBIFF5_Panes_None;
|
||||||
|
|
||||||
{ BIFF8 file format tests }
|
{ BIFF8 tests }
|
||||||
procedure TestWriteReadBIFF8_GridLines_Headers;
|
procedure TestWriteReadBIFF8_ShowGridLines_ShowHeaders;
|
||||||
procedure TestWriteReadBIFF8_GridLines;
|
procedure TestWriteReadBIFF8_ShowGridLines_HideHeaders;
|
||||||
procedure TestWriteReadBIFF8_Headers;
|
procedure TestWriteReadBIFF8_HideGridLines_ShowHeaders;
|
||||||
procedure TestWriteReadBIFF8_NoGridLines_NoHeaders;
|
procedure TestWriteReadBIFF8_HideGridLines_HideHeaders;
|
||||||
|
|
||||||
procedure TestWriteReadBIFF8_Panes_HorVert;
|
procedure TestWriteReadBIFF8_Panes_HorVert;
|
||||||
procedure TestWriteReadBIFF8_Panes_Hor;
|
procedure TestWriteReadBIFF8_Panes_Hor;
|
||||||
@ -122,44 +125,65 @@ begin
|
|||||||
DeleteFile(TempFile);
|
DeleteFile(TempFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Tests for BIFF2 grid lines and/or headers }
|
||||||
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF2_ShowGridLines_ShowHeaders;
|
||||||
|
begin
|
||||||
|
TestWriteReadGridHeaders(sfExcel2, true, true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF2_ShowGridLines_HideHeaders;
|
||||||
|
begin
|
||||||
|
TestWriteReadGridHeaders(sfExcel2, true, false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF2_HideGridLines_ShowHeaders;
|
||||||
|
begin
|
||||||
|
TestWriteReadGridHeaders(sfExcel2, false, true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF2_HideGridLines_HideHeaders;
|
||||||
|
begin
|
||||||
|
TestWriteReadGridHeaders(sfExcel2, false, false);
|
||||||
|
end;
|
||||||
|
|
||||||
{ Tests for BIFF5 grid lines and/or headers }
|
{ Tests for BIFF5 grid lines and/or headers }
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_GridLines_Headers;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_ShowGridLines_ShowHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel5, true, true);
|
TestWriteReadGridHeaders(sfExcel5, true, true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_GridLines;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_ShowGridLines_HideHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel5, true, false);
|
TestWriteReadGridHeaders(sfExcel5, true, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_Headers;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_HideGridLines_ShowHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel5, false, true);
|
TestWriteReadGridHeaders(sfExcel5, false, true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_NoGridLines_NoHeaders;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF5_HideGridLines_HideHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel5, false, false);
|
TestWriteReadGridHeaders(sfExcel5, false, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Tests for BIFF8 grid lines and/or headers }
|
{ Tests for BIFF8 grid lines and/or headers }
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_GridLines_Headers;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_ShowGridLines_ShowHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel8, true, true);
|
TestWriteReadGridHeaders(sfExcel8, true, true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_GridLines;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_ShowGridLines_HideHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel8, true, false);
|
TestWriteReadGridHeaders(sfExcel8, true, false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_Headers;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_HideGridLines_ShowHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel8, false, true);
|
TestWriteReadGridHeaders(sfExcel8, false, true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_NoGridLines_NoHeaders;
|
procedure TSpreadWriteReadOptionsTests.TestWriteReadBIFF8_HideGridLines_HideHeaders;
|
||||||
begin
|
begin
|
||||||
TestWriteReadGridHeaders(sfExcel8, false, false);
|
TestWriteReadGridHeaders(sfExcel8, false, false);
|
||||||
end;
|
end;
|
||||||
|
@ -89,6 +89,7 @@ type
|
|||||||
AddBackground: Boolean = false);
|
AddBackground: Boolean = false);
|
||||||
procedure WriteXFFieldsForFormattingStyles(AStream: TStream);
|
procedure WriteXFFieldsForFormattingStyles(AStream: TStream);
|
||||||
procedure WriteXFRecords(AStream: TStream);
|
procedure WriteXFRecords(AStream: TStream);
|
||||||
|
procedure WriteWindow1(AStream: TStream); override;
|
||||||
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
||||||
protected
|
protected
|
||||||
procedure WriteBlank(AStream: TStream; const ARow, ACol: Cardinal; ACell: PCell); override;
|
procedure WriteBlank(AStream: TStream; const ARow, ACol: Cardinal; ACell: PCell); override;
|
||||||
@ -827,14 +828,41 @@ begin
|
|||||||
WriteFormats(AStream);
|
WriteFormats(AStream);
|
||||||
WriteXFRecords(AStream);
|
WriteXFRecords(AStream);
|
||||||
WriteColWidths(AStream);
|
WriteColWidths(AStream);
|
||||||
{ -- currently not working
|
WriteCellsToStream(AStream, sheet.Cells);
|
||||||
|
|
||||||
|
WriteWindow1(AStream);
|
||||||
|
// { -- currently not working
|
||||||
WriteWindow2(AStream, sheet);
|
WriteWindow2(AStream, sheet);
|
||||||
WritePane(AStream, sheet, false); // false for "is not BIFF5 or BIFF8"
|
WritePane(AStream, sheet, false); // false for "is not BIFF5 or BIFF8"
|
||||||
}
|
//}
|
||||||
WriteCellsToStream(AStream, sheet.Cells);
|
|
||||||
WriteEOF(AStream);
|
WriteEOF(AStream);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{
|
||||||
|
Writes an Excel 2 WINDOW1 record
|
||||||
|
}
|
||||||
|
procedure TsSpreadBIFF2Writer.WriteWindow1(AStream: TStream);
|
||||||
|
begin
|
||||||
|
{ BIFF Record header }
|
||||||
|
AStream.WriteWord(WordToLE(INT_EXCEL_ID_WINDOW1));
|
||||||
|
AStream.WriteWord(WordToLE(9));
|
||||||
|
|
||||||
|
{ Horizontal position of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE(0));
|
||||||
|
|
||||||
|
{ Vertical position of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($0069));
|
||||||
|
|
||||||
|
{ Width of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($339F));
|
||||||
|
|
||||||
|
{ Height of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($1B5D));
|
||||||
|
|
||||||
|
{ Window is visible (1) / hidden (0) }
|
||||||
|
AStream.WriteByte(WordToLE(0));
|
||||||
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
Writes an Excel 2 WINDOW2 record
|
Writes an Excel 2 WINDOW2 record
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,6 @@ type
|
|||||||
procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal;
|
procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal;
|
||||||
const AFormula: TsRPNFormula; ACell: PCell); override;
|
const AFormula: TsRPNFormula; ACell: PCell); override;
|
||||||
procedure WriteStyle(AStream: TStream);
|
procedure WriteStyle(AStream: TStream);
|
||||||
procedure WriteWindow1(AStream: TStream);
|
|
||||||
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
||||||
procedure WriteXF(AStream: TStream; AFontIndex: Word;
|
procedure WriteXF(AStream: TStream; AFontIndex: Word;
|
||||||
AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
|
AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
|
||||||
@ -940,66 +939,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{*******************************************************************
|
{*******************************************************************
|
||||||
* TsSpreadBIFF5Writer.WriteWindow1 ()
|
* TsSpreadBIFF5Writer.WriteWindow2 ()
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Writes an Excel 5 WINDOW1 record
|
* DESCRIPTION: Writes an Excel 5 WINDOW2 record
|
||||||
*
|
|
||||||
* This record contains general settings for the
|
|
||||||
* document window and global workbook settings.
|
|
||||||
*
|
|
||||||
* The values written here are reasonable defaults,
|
|
||||||
* which should work for most sheets.
|
|
||||||
*
|
|
||||||
*******************************************************************}
|
|
||||||
procedure TsSpreadBIFF5Writer.WriteWindow1(AStream: TStream);
|
|
||||||
begin
|
|
||||||
{ BIFF Record header }
|
|
||||||
AStream.WriteWord(WordToLE(INT_EXCEL_ID_WINDOW1));
|
|
||||||
AStream.WriteWord(WordToLE(18));
|
|
||||||
|
|
||||||
{ Horizontal position of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(0);
|
|
||||||
|
|
||||||
{ Vertical position of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($0069));
|
|
||||||
|
|
||||||
{ Width of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($339F));
|
|
||||||
|
|
||||||
{ Height of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($1B5D));
|
|
||||||
|
|
||||||
{ Option flags }
|
|
||||||
AStream.WriteWord(WordToLE(
|
|
||||||
MASK_WINDOW1_OPTION_HORZ_SCROLL_VISIBLE or
|
|
||||||
MASK_WINDOW1_OPTION_VERT_SCROLL_VISIBLE or
|
|
||||||
MASK_WINDOW1_OPTION_WORKSHEET_TAB_VISIBLE));
|
|
||||||
|
|
||||||
{ Index to active (displayed) worksheet }
|
|
||||||
AStream.WriteWord($00);
|
|
||||||
|
|
||||||
{ Index of first visible tab in the worksheet tab bar }
|
|
||||||
AStream.WriteWord($00);
|
|
||||||
|
|
||||||
{ Number of selected worksheets }
|
|
||||||
AStream.WriteWord(WordToLE(1));
|
|
||||||
|
|
||||||
{ Width of worksheet tab bar (in 1/1000 of window width).
|
|
||||||
The remaining space is used by the horizontal scroll bar }
|
|
||||||
AStream.WriteWord(WordToLE(600));
|
|
||||||
end;
|
|
||||||
|
|
||||||
{*******************************************************************
|
|
||||||
* TsSpreadBIFF5Writer.WriteWindow1 ()
|
|
||||||
*
|
|
||||||
* DESCRIPTION: Writes an Excel 5 WINDOW1 record
|
|
||||||
*
|
|
||||||
* This record contains aditional settings for the
|
|
||||||
* document window (BIFF2-BIFF4) or for a specific
|
|
||||||
* worksheet (BIFF5-BIFF8).
|
|
||||||
*
|
|
||||||
* The values written here are reasonable defaults,
|
|
||||||
* which should work for most sheets.
|
|
||||||
*
|
*
|
||||||
*******************************************************************}
|
*******************************************************************}
|
||||||
procedure TsSpreadBIFF5Writer.WriteWindow2(AStream: TStream;
|
procedure TsSpreadBIFF5Writer.WriteWindow2(AStream: TStream;
|
||||||
|
@ -126,7 +126,6 @@ type
|
|||||||
procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal;
|
procedure WriteRPNFormula(AStream: TStream; const ARow, ACol: Cardinal;
|
||||||
const AFormula: TsRPNFormula; ACell: PCell); override;
|
const AFormula: TsRPNFormula; ACell: PCell); override;
|
||||||
procedure WriteStyle(AStream: TStream);
|
procedure WriteStyle(AStream: TStream);
|
||||||
procedure WriteWindow1(AStream: TStream);
|
|
||||||
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
procedure WriteWindow2(AStream: TStream; ASheet: TsWorksheet);
|
||||||
procedure WriteXF(AStream: TStream; AFontIndex: Word;
|
procedure WriteXF(AStream: TStream; AFontIndex: Word;
|
||||||
AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
|
AFormatIndex: Word; AXF_TYPE_PROT, ATextRotation: Byte; ABorders: TsCellBorders;
|
||||||
@ -227,7 +226,6 @@ const
|
|||||||
INT_EXCEL_ID_INDEX = $020B;
|
INT_EXCEL_ID_INDEX = $020B;
|
||||||
INT_EXCEL_ID_ROWINFO = $0208;
|
INT_EXCEL_ID_ROWINFO = $0208;
|
||||||
INT_EXCEL_ID_STYLE = $0293;
|
INT_EXCEL_ID_STYLE = $0293;
|
||||||
INT_EXCEL_ID_WINDOW1 = $003D;
|
|
||||||
INT_EXCEL_ID_WINDOW2 = $023E;
|
INT_EXCEL_ID_WINDOW2 = $023E;
|
||||||
INT_EXCEL_ID_RSTRING = $00D6;
|
INT_EXCEL_ID_RSTRING = $00D6;
|
||||||
INT_EXCEL_ID_RK = $027E;
|
INT_EXCEL_ID_RK = $027E;
|
||||||
@ -263,13 +261,6 @@ const
|
|||||||
{ STYLE record constants }
|
{ STYLE record constants }
|
||||||
MASK_STYLE_BUILT_IN = $8000;
|
MASK_STYLE_BUILT_IN = $8000;
|
||||||
|
|
||||||
{ WINDOW1 record constants }
|
|
||||||
MASK_WINDOW1_OPTION_WINDOW_HIDDEN = $0001;
|
|
||||||
MASK_WINDOW1_OPTION_WINDOW_MINIMISED = $0002;
|
|
||||||
MASK_WINDOW1_OPTION_HORZ_SCROLL_VISIBLE = $0008;
|
|
||||||
MASK_WINDOW1_OPTION_VERT_SCROLL_VISIBLE = $0010;
|
|
||||||
MASK_WINDOW1_OPTION_WORKSHEET_TAB_VISIBLE = $0020;
|
|
||||||
|
|
||||||
{ XF substructures }
|
{ XF substructures }
|
||||||
|
|
||||||
{ XF_ROTATION }
|
{ XF_ROTATION }
|
||||||
@ -1109,56 +1100,6 @@ begin
|
|||||||
AStream.WriteByte($FF);
|
AStream.WriteByte($FF);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{*******************************************************************
|
|
||||||
* TsSpreadBIFF8Writer.WriteWindow1 ()
|
|
||||||
*
|
|
||||||
* DESCRIPTION: Writes an Excel 8 WINDOW1 record
|
|
||||||
*
|
|
||||||
* This record contains general settings for the
|
|
||||||
* document window and global workbook settings.
|
|
||||||
*
|
|
||||||
* The values written here are reasonable defaults,
|
|
||||||
* which should work for most sheets.
|
|
||||||
*
|
|
||||||
*******************************************************************}
|
|
||||||
procedure TsSpreadBIFF8Writer.WriteWindow1(AStream: TStream);
|
|
||||||
begin
|
|
||||||
{ BIFF Record header }
|
|
||||||
AStream.WriteWord(WordToLE(INT_EXCEL_ID_WINDOW1));
|
|
||||||
AStream.WriteWord(WordToLE(18));
|
|
||||||
|
|
||||||
{ Horizontal position of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE(0));
|
|
||||||
|
|
||||||
{ Vertical position of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($0069));
|
|
||||||
|
|
||||||
{ Width of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($339F));
|
|
||||||
|
|
||||||
{ Height of the document window, in twips = 1 / 20 of a point }
|
|
||||||
AStream.WriteWord(WordToLE($1B5D));
|
|
||||||
|
|
||||||
{ Option flags }
|
|
||||||
AStream.WriteWord(WordToLE(
|
|
||||||
MASK_WINDOW1_OPTION_HORZ_SCROLL_VISIBLE or
|
|
||||||
MASK_WINDOW1_OPTION_VERT_SCROLL_VISIBLE or
|
|
||||||
MASK_WINDOW1_OPTION_WORKSHEET_TAB_VISIBLE));
|
|
||||||
|
|
||||||
{ Index to active (displayed) worksheet }
|
|
||||||
AStream.WriteWord(WordToLE($00));
|
|
||||||
|
|
||||||
{ Index of first visible tab in the worksheet tab bar }
|
|
||||||
AStream.WriteWord(WordToLE($00));
|
|
||||||
|
|
||||||
{ Number of selected worksheets }
|
|
||||||
AStream.WriteWord(WordToLE(1));
|
|
||||||
|
|
||||||
{ Width of worksheet tab bar (in 1/1000 of window width).
|
|
||||||
The remaining space is used by the horizontal scroll bar }
|
|
||||||
AStream.WriteWord(WordToLE(600));
|
|
||||||
end;
|
|
||||||
|
|
||||||
{*******************************************************************
|
{*******************************************************************
|
||||||
* TsSpreadBIFF8Writer.WriteWindow2 ()
|
* TsSpreadBIFF8Writer.WriteWindow2 ()
|
||||||
*
|
*
|
||||||
|
@ -22,6 +22,7 @@ const
|
|||||||
INT_EXCEL_ID_COLINFO = $007D;
|
INT_EXCEL_ID_COLINFO = $007D;
|
||||||
INT_EXCEL_ID_DATEMODE = $0022;
|
INT_EXCEL_ID_DATEMODE = $0022;
|
||||||
INT_EXCEL_ID_PALETTE = $0092;
|
INT_EXCEL_ID_PALETTE = $0092;
|
||||||
|
INT_EXCEL_ID_WINDOW1 = $003D;
|
||||||
INT_EXCEL_ID_XF = $00E0;
|
INT_EXCEL_ID_XF = $00E0;
|
||||||
|
|
||||||
{ RECORD IDs which did not change across versions 5-8 }
|
{ RECORD IDs which did not change across versions 5-8 }
|
||||||
@ -240,6 +241,13 @@ const
|
|||||||
FORMAT_TIME_MSZ = 47; //time MM:SS.0
|
FORMAT_TIME_MSZ = 47; //time MM:SS.0
|
||||||
FORMAT_SCI_1_DECIMAL = 48; //scientific, 1 decimal
|
FORMAT_SCI_1_DECIMAL = 48; //scientific, 1 decimal
|
||||||
|
|
||||||
|
{ WINDOW1 record constants - BIFF5-BIFF8 }
|
||||||
|
MASK_WINDOW1_OPTION_WINDOW_HIDDEN = $0001;
|
||||||
|
MASK_WINDOW1_OPTION_WINDOW_MINIMISED = $0002;
|
||||||
|
MASK_WINDOW1_OPTION_HORZ_SCROLL_VISIBLE = $0008;
|
||||||
|
MASK_WINDOW1_OPTION_VERT_SCROLL_VISIBLE = $0010;
|
||||||
|
MASK_WINDOW1_OPTION_WORKSHEET_TAB_VISIBLE = $0020;
|
||||||
|
|
||||||
{ WINDOW2 record constants - BIFF3-BIFF8 }
|
{ WINDOW2 record constants - BIFF3-BIFF8 }
|
||||||
MASK_WINDOW2_OPTION_SHOW_FORMULAS = $0001;
|
MASK_WINDOW2_OPTION_SHOW_FORMULAS = $0001;
|
||||||
MASK_WINDOW2_OPTION_SHOW_GRID_LINES = $0002;
|
MASK_WINDOW2_OPTION_SHOW_GRID_LINES = $0002;
|
||||||
@ -416,6 +424,8 @@ type
|
|||||||
procedure WritePalette(AStream: TStream);
|
procedure WritePalette(AStream: TStream);
|
||||||
// Writes out a PANE record
|
// Writes out a PANE record
|
||||||
procedure WritePane(AStream: TStream; ASheet: TsWorksheet; IsBiff58: Boolean);
|
procedure WritePane(AStream: TStream; ASheet: TsWorksheet; IsBiff58: Boolean);
|
||||||
|
// Writes out a WINDOW1 record
|
||||||
|
procedure WriteWindow1(AStream: TStream); virtual;
|
||||||
// Writes the index of the XF record used in the given cell
|
// Writes the index of the XF record used in the given cell
|
||||||
procedure WriteXFIndex(AStream: TStream; ACell: PCell);
|
procedure WriteXFIndex(AStream: TStream; ACell: PCell);
|
||||||
|
|
||||||
@ -1392,6 +1402,50 @@ begin
|
|||||||
{ Not used (BIFF5-BIFF8 only, not written in BIFF2-BIFF4 }
|
{ Not used (BIFF5-BIFF8 only, not written in BIFF2-BIFF4 }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Writes an Excel 5/8 WINDOW1 record
|
||||||
|
This record contains general settings for the document window and
|
||||||
|
global workbook settings.
|
||||||
|
The values written here are reasonable defaults which should work for most
|
||||||
|
sheets.
|
||||||
|
Valid for BIFF5-BIFF8. }
|
||||||
|
procedure TsSpreadBIFFWriter.WriteWindow1(AStream: TStream);
|
||||||
|
begin
|
||||||
|
{ BIFF Record header }
|
||||||
|
AStream.WriteWord(WordToLE(INT_EXCEL_ID_WINDOW1));
|
||||||
|
AStream.WriteWord(WordToLE(18));
|
||||||
|
|
||||||
|
{ Horizontal position of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE(0));
|
||||||
|
|
||||||
|
{ Vertical position of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($0069));
|
||||||
|
|
||||||
|
{ Width of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($339F));
|
||||||
|
|
||||||
|
{ Height of the document window, in twips = 1 / 20 of a point }
|
||||||
|
AStream.WriteWord(WordToLE($1B5D));
|
||||||
|
|
||||||
|
{ Option flags }
|
||||||
|
AStream.WriteWord(WordToLE(
|
||||||
|
MASK_WINDOW1_OPTION_HORZ_SCROLL_VISIBLE or
|
||||||
|
MASK_WINDOW1_OPTION_VERT_SCROLL_VISIBLE or
|
||||||
|
MASK_WINDOW1_OPTION_WORKSHEET_TAB_VISIBLE));
|
||||||
|
|
||||||
|
{ Index to active (displayed) worksheet }
|
||||||
|
AStream.WriteWord(WordToLE($00));
|
||||||
|
|
||||||
|
{ Index of first visible tab in the worksheet tab bar }
|
||||||
|
AStream.WriteWord(WordToLE($00));
|
||||||
|
|
||||||
|
{ Number of selected worksheets }
|
||||||
|
AStream.WriteWord(WordToLE(1));
|
||||||
|
|
||||||
|
{ Width of worksheet tab bar (in 1/1000 of window width).
|
||||||
|
The remaining space is used by the horizontal scroll bar }
|
||||||
|
AStream.WriteWord(WordToLE(600));
|
||||||
|
end;
|
||||||
|
|
||||||
{ Write the index of the XF record, according to formatting of the given cell
|
{ Write the index of the XF record, according to formatting of the given cell
|
||||||
Valid for BIFF5 and BIFF8.
|
Valid for BIFF5 and BIFF8.
|
||||||
BIFF2 is handled differently. }
|
BIFF2 is handled differently. }
|
||||||
|
Reference in New Issue
Block a user