fpspreadsheet: some more unit tests for page layout (paper size, page orientation, scaling factor)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4112 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2015-05-04 11:01:06 +00:00
parent 48eaf9d6a0
commit 607585d146
4 changed files with 505 additions and 135 deletions

View File

@ -24,85 +24,138 @@ type
// Set up expected values: // Set up expected values:
procedure SetUp; override; procedure SetUp; override;
procedure TearDown; override; procedure TearDown; override;
procedure TestWriteRead_PageLayout(AFormat: TsSpreadsheetFormat; ANumSheets, ATestMode: Integer);
procedure TestWriteRead_PageMargins(AFormat: TsSpreadsheetFormat; ANumSheets, AHeaderFooterMode: Integer); procedure TestWriteRead_PageMargins(AFormat: TsSpreadsheetFormat; ANumSheets, AHeaderFooterMode: Integer);
published published
{ BIFF2 page layout tests } { BIFF2 page layout tests }
procedure TestWriteRead_PageMargins_BIFF2_1sheet_0; procedure TestWriteRead_BIFF2_PageMargins_1sheet_0;
procedure TestWriteRead_PageMargins_BIFF2_1sheet_1; procedure TestWriteRead_BIFF2_PageMargins_1sheet_1;
procedure TestWriteRead_PageMargins_BIFF2_1sheet_2; procedure TestWriteRead_BIFF2_PageMargins_1sheet_2;
procedure TestWriteRead_PageMargins_BIFF2_1sheet_3; procedure TestWriteRead_BIFF2_PageMargins_1sheet_3;
procedure TestWriteRead_PageMargins_BIFF2_2sheets_0; procedure TestWriteRead_BIFF2_PageMargins_2sheets_0;
procedure TestWriteRead_PageMargins_BIFF2_2sheets_1; procedure TestWriteRead_BIFF2_PageMargins_2sheets_1;
procedure TestWriteRead_PageMargins_BIFF2_2sheets_2; procedure TestWriteRead_BIFF2_PageMargins_2sheets_2;
procedure TestWriteRead_PageMargins_BIFF2_2sheets_3; procedure TestWriteRead_BIFF2_PageMargins_2sheets_3;
procedure TestWriteRead_PageMargins_BIFF2_3sheets_0; procedure TestWriteRead_BIFF2_PageMargins_3sheets_0;
procedure TestWriteRead_PageMargins_BIFF2_3sheets_1; procedure TestWriteRead_BIFF2_PageMargins_3sheets_1;
procedure TestWriteRead_PageMargins_BIFF2_3sheets_2; procedure TestWriteRead_BIFF2_PageMargins_3sheets_2;
procedure TestWriteRead_PageMargins_BIFF2_3sheets_3; procedure TestWriteRead_BIFF2_PageMargins_3sheets_3;
// no BIFF2 page orientation tests because this info is not readily available in the file
{ BIFF5 page layout tests } { BIFF5 page layout tests }
procedure TestWriteRead_PageMargins_BIFF5_1sheet_0; procedure TestWriteRead_BIFF5_PageMargins_1sheet_0;
procedure TestWriteRead_PageMargins_BIFF5_1sheet_1; procedure TestWriteRead_BIFF5_PageMargins_1sheet_1;
procedure TestWriteRead_PageMargins_BIFF5_1sheet_2; procedure TestWriteRead_BIFF5_PageMargins_1sheet_2;
procedure TestWriteRead_PageMargins_BIFF5_1sheet_3; procedure TestWriteRead_BIFF5_PageMargins_1sheet_3;
procedure TestWriteRead_PageMargins_BIFF5_2sheets_0; procedure TestWriteRead_BIFF5_PageMargins_2sheets_0;
procedure TestWriteRead_PageMargins_BIFF5_2sheets_1; procedure TestWriteRead_BIFF5_PageMargins_2sheets_1;
procedure TestWriteRead_PageMargins_BIFF5_2sheets_2; procedure TestWriteRead_BIFF5_PageMargins_2sheets_2;
procedure TestWriteRead_PageMargins_BIFF5_2sheets_3; procedure TestWriteRead_BIFF5_PageMargins_2sheets_3;
procedure TestWriteRead_PageMargins_BIFF5_3sheets_0; procedure TestWriteRead_BIFF5_PageMargins_3sheets_0;
procedure TestWriteRead_PageMargins_BIFF5_3sheets_1; procedure TestWriteRead_BIFF5_PageMargins_3sheets_1;
procedure TestWriteRead_PageMargins_BIFF5_3sheets_2; procedure TestWriteRead_BIFF5_PageMargins_3sheets_2;
procedure TestWriteRead_PageMargins_BIFF5_3sheets_3; procedure TestWriteRead_BIFF5_PageMargins_3sheets_3;
procedure TestWriteRead_BIFF5_PageOrientation_1sheet;
procedure TestWriteRead_BIFF5_PageOrientation_2sheets;
procedure TestWriteRead_BIFF5_PageOrientation_3sheets;
procedure TestWriteRead_BIFF5_PaperSize_1sheet;
procedure TestWriteRead_BIFF5_PaperSize_2sheets;
procedure TestWriteRead_BIFF5_PaperSize_3sheets;
procedure TestWriteRead_BIFF5_ScalingFactor_1sheet;
procedure TestWriteRead_BIFF5_ScalingFactor_2sheets;
procedure TestWriteRead_BIFF5_ScalingFactor_3sheets;
{ BIFF8 page layout tests } { BIFF8 page layout tests }
procedure TestWriteRead_PageMargins_BIFF8_1sheet_0; procedure TestWriteRead_BIFF8_PageMargins_1sheet_0;
procedure TestWriteRead_PageMargins_BIFF8_1sheet_1; procedure TestWriteRead_BIFF8_PageMargins_1sheet_1;
procedure TestWriteRead_PageMargins_BIFF8_1sheet_2; procedure TestWriteRead_BIFF8_PageMargins_1sheet_2;
procedure TestWriteRead_PageMargins_BIFF8_1sheet_3; procedure TestWriteRead_BIFF8_PageMargins_1sheet_3;
procedure TestWriteRead_PageMargins_BIFF8_2sheets_0; procedure TestWriteRead_BIFF8_PageMargins_2sheets_0;
procedure TestWriteRead_PageMargins_BIFF8_2sheets_1; procedure TestWriteRead_BIFF8_PageMargins_2sheets_1;
procedure TestWriteRead_PageMargins_BIFF8_2sheets_2; procedure TestWriteRead_BIFF8_PageMargins_2sheets_2;
procedure TestWriteRead_PageMargins_BIFF8_2sheets_3; procedure TestWriteRead_BIFF8_PageMargins_2sheets_3;
procedure TestWriteRead_PageMargins_BIFF8_3sheets_0; procedure TestWriteRead_BIFF8_PageMargins_3sheets_0;
procedure TestWriteRead_PageMargins_BIFF8_3sheets_1; procedure TestWriteRead_BIFF8_PageMargins_3sheets_1;
procedure TestWriteRead_PageMargins_BIFF8_3sheets_2; procedure TestWriteRead_BIFF8_PageMargins_3sheets_2;
procedure TestWriteRead_PageMargins_BIFF8_3sheets_3; procedure TestWriteRead_BIFF8_PageMargins_3sheets_3;
procedure TestWriteRead_BIFF8_PageOrientation_1sheet;
procedure TestWriteRead_BIFF8_PageOrientation_2sheets;
procedure TestWriteRead_BIFF8_PageOrientation_3sheets;
procedure TestWriteRead_BIFF8_PaperSize_1sheet;
procedure TestWriteRead_BIFF8_PaperSize_2sheets;
procedure TestWriteRead_BIFF8_PaperSize_3sheets;
procedure TestWriteRead_BIFF8_ScalingFactor_1sheet;
procedure TestWriteRead_BIFF8_ScalingFactor_2sheets;
procedure TestWriteRead_BIFF8_ScalingFactor_3sheets;
{ OOXML page layout tests } { OOXML page layout tests }
procedure TestWriteRead_PageMargins_OOXML_1sheet_0; procedure TestWriteRead_OOXML_PageMargins_1sheet_0;
procedure TestWriteRead_PageMargins_OOXML_1sheet_1; procedure TestWriteRead_OOXML_PageMargins_1sheet_1;
procedure TestWriteRead_PageMargins_OOXML_1sheet_2; procedure TestWriteRead_OOXML_PageMargins_1sheet_2;
procedure TestWriteRead_PageMargins_OOXML_1sheet_3; procedure TestWriteRead_OOXML_PageMargins_1sheet_3;
procedure TestWriteRead_PageMargins_OOXML_2sheets_0; procedure TestWriteRead_OOXML_PageMargins_2sheets_0;
procedure TestWriteRead_PageMargins_OOXML_2sheets_1; procedure TestWriteRead_OOXML_PageMargins_2sheets_1;
procedure TestWriteRead_PageMargins_OOXML_2sheets_2; procedure TestWriteRead_OOXML_PageMargins_2sheets_2;
procedure TestWriteRead_PageMargins_OOXML_2sheets_3; procedure TestWriteRead_OOXML_PageMargins_2sheets_3;
procedure TestWriteRead_PageMargins_OOXML_3sheets_0; procedure TestWriteRead_OOXML_PageMargins_3sheets_0;
procedure TestWriteRead_PageMargins_OOXML_3sheets_1; procedure TestWriteRead_OOXML_PageMargins_3sheets_1;
procedure TestWriteRead_PageMargins_OOXML_3sheets_2; procedure TestWriteRead_OOXML_PageMargins_3sheets_2;
procedure TestWriteRead_PageMargins_OOXML_3sheets_3; procedure TestWriteRead_OOXML_PageMargins_3sheets_3;
procedure TestWriteRead_OOXML_PageOrientation_1sheet;
procedure TestWriteRead_OOXML_PageOrientation_2sheets;
procedure TestWriteRead_OOXML_PageOrientation_3sheets;
procedure TestWriteRead_OOXML_PaperSize_1sheet;
procedure TestWriteRead_OOXML_PaperSize_2sheets;
procedure TestWriteRead_OOXML_PaperSize_3sheets;
procedure TestWriteRead_OOXML_ScalingFactor_1sheet;
procedure TestWriteRead_OOXML_ScalingFactor_2sheets;
procedure TestWriteRead_OOXML_ScalingFactor_3sheets;
{ OpenDocument page layout tests } { OpenDocument page layout tests }
procedure TestWriteRead_PageMargins_ODS_1sheet_0; procedure TestWriteRead_ODS_PageMargins_1sheet_0;
procedure TestWriteRead_PageMargins_ODS_1sheet_1; procedure TestWriteRead_ODS_PageMargins_1sheet_1;
procedure TestWriteRead_PageMargins_ODS_1sheet_2; procedure TestWriteRead_ODS_PageMargins_1sheet_2;
procedure TestWriteRead_PageMargins_ODS_1sheet_3; procedure TestWriteRead_ODS_PageMargins_1sheet_3;
procedure TestWriteRead_PageMargins_ODS_2sheets_0; procedure TestWriteRead_ODS_PageMargins_2sheets_0;
procedure TestWriteRead_PageMargins_ODS_2sheets_1; procedure TestWriteRead_ODS_PageMargins_2sheets_1;
procedure TestWriteRead_PageMargins_ODS_2sheets_2; procedure TestWriteRead_ODS_PageMargins_2sheets_2;
procedure TestWriteRead_PageMargins_ODS_2sheets_3; procedure TestWriteRead_ODS_PageMargins_2sheets_3;
procedure TestWriteRead_PageMargins_ODS_3sheets_0; procedure TestWriteRead_ODS_PageMargins_3sheets_0;
procedure TestWriteRead_PageMargins_ODS_3sheets_1; procedure TestWriteRead_ODS_PageMargins_3sheets_1;
procedure TestWriteRead_PageMargins_ODS_3sheets_2; procedure TestWriteRead_ODS_PageMargins_3sheets_2;
procedure TestWriteRead_PageMargins_ODS_3sheets_3; procedure TestWriteRead_ODS_PageMargins_3sheets_3;
procedure TestWriteRead_ODS_PageOrientation_1sheet;
procedure TestWriteRead_ODS_PageOrientation_2sheets;
procedure TestWriteRead_ODS_PageOrientation_3sheets;
procedure TestWriteRead_ODS_PaperSize_1sheet;
procedure TestWriteRead_ODS_PaperSize_2sheets;
procedure TestWriteRead_ODS_PaperSize_3sheets;
procedure TestWriteRead_ODS_ScalingFactor_1sheet;
procedure TestWriteRead_ODS_ScalingFactor_2sheets;
procedure TestWriteRead_ODS_ScalingFactor_3sheets;
end; end;
implementation implementation
uses uses
uriparser, lazfileutils, fpsutils; typinfo, fpsutils;
// uriparser, lazfileutils, fpsutils;
const const
PageLayoutSheet = 'PageLayout'; PageLayoutSheet = 'PageLayout';
@ -122,8 +175,8 @@ end;
{ AHeaderFooterMode = 0 ... no header, no footer { AHeaderFooterMode = 0 ... no header, no footer
1 ... header, no footer 1 ... header, no footer
2 ... no header, footer 2 ... no header, footer
3 ... header, footer } 3 ... header, footer }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins( procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins(
AFormat: TsSpreadsheetFormat; ANumSheets, AHeaderFooterMode: Integer); AFormat: TsSpreadsheetFormat; ANumSheets, AHeaderFooterMode: Integer);
var var
@ -202,331 +255,625 @@ begin
end; end;
end; end;
{ ------------------------------------------------------------------------------
Main page layout test: it writes a file with a specific page layout and reads it
back. The written pagelayout ("Solllayout") must match the read pagelayout.
{ Tests for BIFF8 file format } ATestMode:
0 - Landscape page orientation for sheets 0 und 2, sheet 1 is portrait
1 - Paper size: sheet 1 "Letter" (8.5" x 11"), sheets 0 and 2 "A5" (148 mm x 210 mm)
2 - Scaling factor: sheet 1 50%, sheet 2 200%, sheet 3 100%
-------------------------------------------------------------------------------}
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageLayout(
AFormat: TsSpreadsheetFormat; ANumSheets, ATestMode: Integer);
var
MyWorksheet: TsWorksheet;
MyWorkbook: TsWorkbook;
row, col, p: Integer;
sollPageLayout: Array of TsPageLayout;
actualPageLayout: TsPageLayout;
TempFile: string; //write xls/xml to this file and read back from it
begin
TempFile := GetTempFileName;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_1sheet_0; SetLength(SollPageLayout, ANumSheets);
for p:=0 to High(SollPageLayout) do
begin
InitPageLayout(sollPageLayout[p]);
with SollPageLayout[p] do
begin
case ATestMode of
0: // Page orientation test: sheets 0 and 2 are portrait, sheet 1 is landscape
if p <> 1 then Orientation := spoLandscape;
1: // Paper size test: sheets 0 and 2 are A5, sheet 1 is LETTER
if odd(p) then
begin
PageWidth := 8.5*2.54; PageHeight := 11*2.54;
end else
begin
PageWidth := 148; PageHeight := 210;
end;
2: // Scaling factor: sheet 1 50%, sheet 2 200%, sheet 3 100%
begin
if p = 0 then ScalingFactor := 50 else
if p = 1 then ScalingFactor := 200;
Exclude(Options, poFitPages);
end;
end;
end;
end;
MyWorkbook := TsWorkbook.Create;
try
col := 0;
for p := 0 to ANumSheets-1 do
begin
MyWorkSheet:= MyWorkBook.AddWorksheet(PageLayoutSheet+IntToStr(p+1));
for row := 0 to 99 do
Myworksheet.WriteNumber(row, 0, (row+1)+(col+1)*100+(p+1)*10000 );
MyWorksheet.PageLayout := SollPageLayout[p];
end;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
finally
MyWorkbook.Free;
end;
// Open the spreadsheet
MyWorkbook := TsWorkbook.Create;
try
MyWorkbook.ReadFromFile(TempFile, AFormat);
for p := 0 to MyWorkbook.GetWorksheetCount-1 do
begin
MyWorksheet := MyWorkBook.GetWorksheetByIndex(p);
if MyWorksheet=nil then
fail('Error in test code. Failed to get worksheet by index');
actualPageLayout := MyWorksheet.PageLayout;
case ATestMode of
0: // Page orientation test
CheckEquals(GetEnumName(TypeInfo(TsPageOrientation), ord(sollPageLayout[p].Orientation)),
GetEnumName(TypeInfo(TsPageOrientation), ord(actualPageLayout.Orientation)),
'Page orientation mismatch, sheet "'+MyWorksheet.Name+'"'
);
1: // Paper size test
begin
CheckEquals(sollPagelayout[p].PageHeight, actualPageLayout.PageHeight, 0.1,
'Page height mismatch, sheet "' + MyWorksheet.Name + '"');
CheckEquals(sollPageLayout[p].PageWidth, actualPageLayout.PageWidth, 0.1,
'Page width mismatch, sheet "' + MyWorksheet.name + '"');
end;
2: // Scaling factor
begin
CheckEquals(poFitPages in sollPageLayout[p].Options, poFitPages in actualPageLayout.Options,
'"poFitPages" option mismatch, sheet "' + MyWorksheet.name + '"');
CheckEquals(sollPageLayout[p].ScalingFactor, actualPageLayout.ScalingFactor,
'Scaling factor mismatch, sheet "' + MyWorksheet.Name + '"');
end;
end;
end;
finally
MyWorkbook.Free;
DeleteFile(TempFile);
end;
end;
{ Tests for BIFF2 file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_1sheet_0;
begin begin
TestWriteRead_PageMargins(sfExcel2, 1, 0); TestWriteRead_PageMargins(sfExcel2, 1, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_1sheet_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_1sheet_1;
begin begin
TestWriteRead_PageMargins(sfExcel2, 1, 1); TestWriteRead_PageMargins(sfExcel2, 1, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_1sheet_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_1sheet_2;
begin begin
TestWriteRead_PageMargins(sfExcel2, 1, 2); TestWriteRead_PageMargins(sfExcel2, 1, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_1sheet_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_1sheet_3;
begin begin
TestWriteRead_PageMargins(sfExcel2, 1, 3); TestWriteRead_PageMargins(sfExcel2, 1, 3);
end; end;
procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_PageMargins_BIFF2_2sheets_0; procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_BIFF2_PageMargins_2sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel2, 2, 0); TestWriteRead_PageMargins(sfExcel2, 2, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_2sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_2sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel2, 2, 1); TestWriteRead_PageMargins(sfExcel2, 2, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_2sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_2sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel2, 2, 2); TestWriteRead_PageMargins(sfExcel2, 2, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_2sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_2sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel2, 2, 3); TestWriteRead_PageMargins(sfExcel2, 2, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_3sheets_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_3sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel2, 3, 0); TestWriteRead_PageMargins(sfExcel2, 3, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_3sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_3sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel2, 3, 1); TestWriteRead_PageMargins(sfExcel2, 3, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_3sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_3sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel2, 3, 2); TestWriteRead_PageMargins(sfExcel2, 3, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF2_3sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF2_PageMargins_3sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel2, 3, 3); TestWriteRead_PageMargins(sfExcel2, 3, 3);
end; end;
{ Tests for BIFF8 file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_1sheet_0; { Tests for BIFF5 file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_1sheet_0;
begin begin
TestWriteRead_PageMargins(sfExcel5, 1, 0); TestWriteRead_PageMargins(sfExcel5, 1, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_1sheet_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_1sheet_1;
begin begin
TestWriteRead_PageMargins(sfExcel5, 1, 1); TestWriteRead_PageMargins(sfExcel5, 1, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_1sheet_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_1sheet_2;
begin begin
TestWriteRead_PageMargins(sfExcel5, 1, 2); TestWriteRead_PageMargins(sfExcel5, 1, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_1sheet_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_1sheet_3;
begin begin
TestWriteRead_PageMargins(sfExcel5, 1, 3); TestWriteRead_PageMargins(sfExcel5, 1, 3);
end; end;
procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_PageMargins_BIFF5_2sheets_0; procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_BIFF5_PageMargins_2sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel5, 2, 0); TestWriteRead_PageMargins(sfExcel5, 2, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_2sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_2sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel5, 2, 1); TestWriteRead_PageMargins(sfExcel5, 2, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_2sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_2sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel5, 2, 2); TestWriteRead_PageMargins(sfExcel5, 2, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_2sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_2sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel5, 2, 3); TestWriteRead_PageMargins(sfExcel5, 2, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_3sheets_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_3sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel5, 3, 0); TestWriteRead_PageMargins(sfExcel5, 3, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_3sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_3sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel5, 3, 1); TestWriteRead_PageMargins(sfExcel5, 3, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_3sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_3sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel5, 3, 2); TestWriteRead_PageMargins(sfExcel5, 3, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF5_3sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageMargins_3sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel5, 3, 3); TestWriteRead_PageMargins(sfExcel5, 3, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageOrientation_1sheet;
begin
TestWriteRead_PageLayout(sfExcel5, 1, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageOrientation_2sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 2, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PageOrientation_3sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 3, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PaperSize_1sheet;
begin
TestWriteRead_PageLayout(sfExcel5, 1, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PaperSize_2sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 2, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_PaperSize_3sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 3, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_ScalingFactor_1sheet;
begin
TestWriteRead_PageLayout(sfExcel5, 1, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_ScalingFactor_2sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 2, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF5_ScalingFactor_3sheets;
begin
TestWriteRead_PageLayout(sfExcel5, 3, 2);
end;
{ Tests for BIFF8 file format } { Tests for BIFF8 file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_1sheet_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_1sheet_0;
begin begin
TestWriteRead_PageMargins(sfExcel8, 1, 0); TestWriteRead_PageMargins(sfExcel8, 1, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_1sheet_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_1sheet_1;
begin begin
TestWriteRead_PageMargins(sfExcel8, 1, 1); TestWriteRead_PageMargins(sfExcel8, 1, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_1sheet_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_1sheet_2;
begin begin
TestWriteRead_PageMargins(sfExcel8, 1, 2); TestWriteRead_PageMargins(sfExcel8, 1, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_1sheet_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_1sheet_3;
begin begin
TestWriteRead_PageMargins(sfExcel8, 1, 3); TestWriteRead_PageMargins(sfExcel8, 1, 3);
end; end;
procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_PageMargins_BIFF8_2sheets_0; procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_BIFF8_PageMargins_2sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel8, 2, 0); TestWriteRead_PageMargins(sfExcel8, 2, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_2sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_2sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel8, 2, 1); TestWriteRead_PageMargins(sfExcel8, 2, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_2sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_2sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel8, 2, 2); TestWriteRead_PageMargins(sfExcel8, 2, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_2sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_2sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel8, 2, 3); TestWriteRead_PageMargins(sfExcel8, 2, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_3sheets_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_3sheets_0;
begin begin
TestWriteRead_PageMargins(sfExcel8, 3, 0); TestWriteRead_PageMargins(sfExcel8, 3, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_3sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_3sheets_1;
begin begin
TestWriteRead_PageMargins(sfExcel8, 3, 1); TestWriteRead_PageMargins(sfExcel8, 3, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_3sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_3sheets_2;
begin begin
TestWriteRead_PageMargins(sfExcel8, 3, 2); TestWriteRead_PageMargins(sfExcel8, 3, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_BIFF8_3sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageMargins_3sheets_3;
begin begin
TestWriteRead_PageMargins(sfExcel8, 3, 3); TestWriteRead_PageMargins(sfExcel8, 3, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageOrientation_1sheet;
begin
TestWriteRead_PageLayout(sfExcel8, 1, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageOrientation_2sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 2, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PageOrientation_3sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 3, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PaperSize_1sheet;
begin
TestWriteRead_PageLayout(sfExcel8, 1, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PaperSize_2sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 2, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_PaperSize_3sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 3, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_ScalingFactor_1sheet;
begin
TestWriteRead_PageLayout(sfExcel8, 1, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_ScalingFactor_2sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 2, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_BIFF8_ScalingFactor_3sheets;
begin
TestWriteRead_PageLayout(sfExcel8, 3, 2);
end;
{ Tests for OOXML file format } { Tests for OOXML file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_1sheet_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_1sheet_0;
begin begin
TestWriteRead_PageMargins(sfOOXML, 1, 0); TestWriteRead_PageMargins(sfOOXML, 1, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_1sheet_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_1sheet_1;
begin begin
TestWriteRead_PageMargins(sfOOXML, 1, 1); TestWriteRead_PageMargins(sfOOXML, 1, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_1sheet_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_1sheet_2;
begin begin
TestWriteRead_PageMargins(sfOOXML, 1, 2); TestWriteRead_PageMargins(sfOOXML, 1, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_1sheet_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_1sheet_3;
begin begin
TestWriteRead_PageMargins(sfOOXML, 1, 3); TestWriteRead_PageMargins(sfOOXML, 1, 3);
end; end;
procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_PageMargins_OOXML_2sheets_0; procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_OOXML_PageMargins_2sheets_0;
begin begin
TestWriteRead_PageMargins(sfOOXML, 2, 0); TestWriteRead_PageMargins(sfOOXML, 2, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_2sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_2sheets_1;
begin begin
TestWriteRead_PageMargins(sfOOXML, 2, 1); TestWriteRead_PageMargins(sfOOXML, 2, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_2sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_2sheets_2;
begin begin
TestWriteRead_PageMargins(sfOOXML, 2, 2); TestWriteRead_PageMargins(sfOOXML, 2, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_2sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_2sheets_3;
begin begin
TestWriteRead_PageMargins(sfOOXML, 2, 3); TestWriteRead_PageMargins(sfOOXML, 2, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_3sheets_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_3sheets_0;
begin begin
TestWriteRead_PageMargins(sfOOXML, 3, 0); TestWriteRead_PageMargins(sfOOXML, 3, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_3sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_3sheets_1;
begin begin
TestWriteRead_PageMargins(sfOOXML, 3, 1); TestWriteRead_PageMargins(sfOOXML, 3, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_3sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_3sheets_2;
begin begin
TestWriteRead_PageMargins(sfOOXML, 3, 2); TestWriteRead_PageMargins(sfOOXML, 3, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_OOXML_3sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageMargins_3sheets_3;
begin begin
TestWriteRead_PageMargins(sfOOXML, 3, 3); TestWriteRead_PageMargins(sfOOXML, 3, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageOrientation_1sheet;
begin
TestWriteRead_PageLayout(sfOOXML, 1, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageOrientation_2sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 2, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PageOrientation_3sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 3, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PaperSize_1sheet;
begin
TestWriteRead_PageLayout(sfOOXML, 1, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PaperSize_2sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 2, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_PaperSize_3sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 3, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_ScalingFactor_1sheet;
begin
TestWriteRead_PageLayout(sfOOXML, 1, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_ScalingFactor_2sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 2, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_OOXML_ScalingFactor_3sheets;
begin
TestWriteRead_PageLayout(sfOOXML, 3, 2);
end;
{ Tests for Open Document file format } { Tests for Open Document file format }
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_1sheet_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_1sheet_0;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 1, 0); TestWriteRead_PageMargins(sfOpenDocument, 1, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_1sheet_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_1sheet_1;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 1, 1); TestWriteRead_PageMargins(sfOpenDocument, 1, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_1sheet_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_1sheet_2;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 1, 2); TestWriteRead_PageMargins(sfOpenDocument, 1, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_1sheet_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_1sheet_3;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 1, 3); TestWriteRead_PageMargins(sfOpenDocument, 1, 3);
end; end;
procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_PageMargins_ODS_2sheets_0; procedure TSpreadWriteReadPagelayoutTests.TestWriteRead_ODS_PageMargins_2sheets_0;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 2, 0); TestWriteRead_PageMargins(sfOpenDocument, 2, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_2sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_2sheets_1;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 2, 1); TestWriteRead_PageMargins(sfOpenDocument, 2, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_2sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_2sheets_2;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 2, 2); TestWriteRead_PageMargins(sfOpenDocument, 2, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_2sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_2sheets_3;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 2, 3); TestWriteRead_PageMargins(sfOpenDocument, 2, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_3sheets_0; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_3sheets_0;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 3, 0); TestWriteRead_PageMargins(sfOpenDocument, 3, 0);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_3sheets_1; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_3sheets_1;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 3, 1); TestWriteRead_PageMargins(sfOpenDocument, 3, 1);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_3sheets_2; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_3sheets_2;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 3, 2); TestWriteRead_PageMargins(sfOpenDocument, 3, 2);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_PageMargins_ODS_3sheets_3; procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageMargins_3sheets_3;
begin begin
TestWriteRead_PageMargins(sfOpenDocument, 3, 3); TestWriteRead_PageMargins(sfOpenDocument, 3, 3);
end; end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageOrientation_1sheet;
begin
TestWriteRead_PageLayout(sfOpenDocument, 1, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageOrientation_2sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 2, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PageOrientation_3sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 3, 0);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PaperSize_1sheet;
begin
TestWriteRead_PageLayout(sfOpenDocument, 1, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PaperSize_2sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 2, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_PaperSize_3sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 3, 1);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_ScalingFactor_1sheet;
begin
TestWriteRead_PageLayout(sfOpenDocument, 1, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_ScalingFactor_2sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 2, 2);
end;
procedure TSpreadWriteReadPageLayoutTests.TestWriteRead_ODS_ScalingFactor_3sheets;
begin
TestWriteRead_PageLayout(sfOpenDocument, 3, 2);
end;
initialization initialization
RegisterTest(TSpreadWriteReadPageLayoutTests); RegisterTest(TSpreadWriteReadPageLayoutTests);

View File

@ -415,6 +415,7 @@ begin
INT_EXCEL_ID_ROW : ReadRowInfo(AStream); INT_EXCEL_ID_ROW : ReadRowInfo(AStream);
INT_EXCEL_ID_RSTRING : ReadRichString(AStream); //(RSTRING) This record stores a formatted text cell (Rich-Text). In BIFF8 it is usually replaced by the LABELSST record. Excel still uses this record, if it copies formatted text cells to the clipboard. INT_EXCEL_ID_RSTRING : ReadRichString(AStream); //(RSTRING) This record stores a formatted text cell (Rich-Text). In BIFF8 it is usually replaced by the LABELSST record. Excel still uses this record, if it copies formatted text cells to the clipboard.
INT_EXCEL_ID_SHAREDFMLA : ReadSharedFormula(AStream); INT_EXCEL_ID_SHAREDFMLA : ReadSharedFormula(AStream);
INT_EXCEL_ID_SHEETPR : ReadSHEETPR(AStream);
INT_EXCEL_ID_STANDARDWIDTH : ReadStandardWidth(AStream, FWorksheet); INT_EXCEL_ID_STANDARDWIDTH : ReadStandardWidth(AStream, FWorksheet);
INT_EXCEL_ID_TOPMARGIN : ReadMargin(AStream, 2); INT_EXCEL_ID_TOPMARGIN : ReadMargin(AStream, 2);
INT_EXCEL_ID_STRING : ReadStringRecord(AStream); INT_EXCEL_ID_STRING : ReadStringRecord(AStream);
@ -1044,6 +1045,7 @@ begin
WriteIndex(AStream); WriteIndex(AStream);
WritePrintHeaders(AStream); WritePrintHeaders(AStream);
WritePrintGridLines(AStream); WritePrintGridLines(AStream);
WriteSheetPR(AStream);
// Page settings block // Page settings block
WriteHeaderFooter(AStream, true); WriteHeaderFooter(AStream, true);

View File

@ -720,6 +720,7 @@ begin
INT_EXCEL_ID_RK : ReadRKValue(AStream); INT_EXCEL_ID_RK : ReadRKValue(AStream);
INT_EXCEL_ID_SHAREDFMLA : ReadSharedFormula(AStream); INT_EXCEL_ID_SHAREDFMLA : ReadSharedFormula(AStream);
INT_EXCEL_ID_SHEETPR : ReadSHEETPR(AStream);
INT_EXCEL_ID_STRING : ReadStringRecord(AStream); INT_EXCEL_ID_STRING : ReadStringRecord(AStream);
INT_EXCEL_ID_TOPMARGIN : ReadMargin(AStream, 2); INT_EXCEL_ID_TOPMARGIN : ReadMargin(AStream, 2);
INT_EXCEL_ID_TXO : ReadTXO(AStream); INT_EXCEL_ID_TXO : ReadTXO(AStream);
@ -1749,8 +1750,7 @@ begin
WriteIndex(AStream); WriteIndex(AStream);
WritePrintHeaders(AStream); WritePrintHeaders(AStream);
WritePrintGridLines(AStream); WritePrintGridLines(AStream);
WriteSheetPR(AStream);
//WriteSheetPR(AStream);
// Page setting block // Page setting block
WriteHeaderFooter(AStream, true); WriteHeaderFooter(AStream, true);

View File

@ -421,6 +421,7 @@ type
ASharedFormulaBase: PCell = nil): Boolean; ASharedFormulaBase: PCell = nil): Boolean;
function ReadRPNTokenArraySize(AStream: TStream): word; virtual; function ReadRPNTokenArraySize(AStream: TStream): word; virtual;
procedure ReadSharedFormula(AStream: TStream); procedure ReadSharedFormula(AStream: TStream);
procedure ReadSHEETPR(AStream: TStream);
// Helper function for reading a string with 8-bit length // Helper function for reading a string with 8-bit length
function ReadString_8bitLen(AStream: TStream): String; virtual; function ReadString_8bitLen(AStream: TStream): String; virtual;
@ -1509,8 +1510,8 @@ begin
// Fit worksheet height to this number of pages (0 = use as many as needed) // Fit worksheet height to this number of pages (0 = use as many as needed)
FWorksheet.PageLayout.FitHeightToPages := WordLEToN(AStream.ReadWord); FWorksheet.PageLayout.FitHeightToPages := WordLEToN(AStream.ReadWord);
if (FWorksheet.PageLayout.FitWidthToPages > 0) or (FWorksheet.PageLayout.FitHeightToPages > 0) // Information whether scaling factor or fittopages are used is stored in the
then Include(FWorksheet.PageLayout.Options, poFitPages); // SHEETPR record.
// Option flags // Option flags
w := WordLEToN(AStream.ReadWord); w := WordLEToN(AStream.ReadWord);
@ -2055,6 +2056,19 @@ begin
FWorksheet.CopyFormula(cell, r, c); FWorksheet.CopyFormula(cell, r, c);
end; end;
{@@ ----------------------------------------------------------------------------
Reads an Excel SHEETPR record
-------------------------------------------------------------------------------}
procedure TsSpreadBIFFReader.ReadSheetPR(AStream: TStream);
var
flags: Word;
begin
flags := WordLEToN(AStream.ReadWord);
if flags and $0100 <> 0 then
Include(FWorksheet.PageLayout.Options, poFitPages);
// The other flags are ignored, so far.
end;
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------
Helper function for reading a string with 8-bit length. Here, we implement Helper function for reading a string with 8-bit length. Here, we implement
the version for ansistrings since it is valid for all BIFF versions except the version for ansistrings since it is valid for all BIFF versions except
@ -2739,14 +2753,14 @@ begin
end; end;
AStream.WriteWord(WordToLE(w)); AStream.WriteWord(WordToLE(w));
{ Start page number }
w := FWorksheet.PageLayout.StartPageNumber;
AStream.WriteWord(WordToLE(w));
{ Scaling factor in percent } { Scaling factor in percent }
w := Round(FWorksheet.PageLayout.ScalingFactor); w := Round(FWorksheet.PageLayout.ScalingFactor);
AStream.WriteWord(WordToLE(w)); AStream.WriteWord(WordToLE(w));
{ Start page number }
w := FWorksheet.PageLayout.StartPageNumber;
AStream.WriteWord(WordToLE(w));
{ Fit worksheet width to this number of pages, 0 = use as many as needed } { Fit worksheet width to this number of pages, 0 = use as many as needed }
w := FWorksheet.PageLayout.FitWidthToPages; w := FWorksheet.PageLayout.FitWidthToPages;
AStream.WriteWord(WordToLE(w)); AStream.WriteWord(WordToLE(w));
@ -3540,7 +3554,7 @@ begin
end; *) end; *)
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------
Writes a SHEETPR Record. Writes a SHEETPR record.
Valid for BIFF3-BIFF8. Valid for BIFF3-BIFF8.
-------------------------------------------------------------------------------} -------------------------------------------------------------------------------}
procedure TsSpreadBIFFWriter.WriteSheetPR(AStream: TStream); procedure TsSpreadBIFFWriter.WriteSheetPR(AStream: TStream);
@ -3550,7 +3564,14 @@ begin
{ BIFF Record header } { BIFF Record header }
WriteBIFFHeader(AStream, INT_EXCEL_ID_SHEETPR, 2); WriteBIFFHeader(AStream, INT_EXCEL_ID_SHEETPR, 2);
flags := $04C1; flags := $0001 // show automatic page breaks
or $0040 // Outline buttons below outline groups
or $0080 // Outline buttons right of outline groups
or $0400; // Show outline symbols
if (poFitPages in FWorksheet.PageLayout.Options) then
flags := flags or $0100; // Fit printout to number of pages
AStream.WriteWord(WordToLE(flags)); AStream.WriteWord(WordToLE(flags));
end; end;