fpspreadsheet: Move hyperlinkdemo to "others" folder. Make sure that "other" demos write their output in the project directory.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7995 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-04-15 12:58:58 +00:00
parent 78348da3ef
commit 1cc0c3b66c
14 changed files with 81 additions and 42 deletions

View File

@ -13,6 +13,8 @@ var
row: Integer; row: Integer;
i: Integer; i: Integer;
lastCol: Integer; lastCol: Integer;
dir: String;
begin begin
wb := TsWorkbook.Create; wb := TsWorkbook.Create;
try try
@ -397,9 +399,10 @@ begin
sh.WriteIconSet(Range(Row, 2, row, 12), is3Flags); sh.WriteIconSet(Range(Row, 2, row, 12), is3Flags);
{ ------ Save workbook to file-------------------------------------------- } { ------ Save workbook to file-------------------------------------------- }
wb.WriteToFile('test.xlsx', true); dir := ExtractFilePath(ParamStr(0));
wb.WriteToFile('test.ods', true); wb.WriteToFile(dir + 'test.xlsx', true);
wb.WriteToFile('test.xml', true); wb.WriteToFile(dir + 'test.ods', true);
wb.WriteToFile(dir + 'test.xml', true);
if wb.ErrorMsg <> '' then if wb.ErrorMsg <> '' then
WriteLn(wb.ErrorMsg); WriteLn(wb.ErrorMsg);

View File

@ -28,21 +28,24 @@ var
sheetFormat: TsSpreadsheetFormat; sheetFormat: TsSpreadsheetFormat;
sheetName: String; sheetName: String;
r, c: Cardinal; r, c: Cardinal;
dir: String;
begin begin
// Just for the demo: create the file "source.xls". It contains hyperlinks to // Just for the demo: create the file "source.xls". It contains hyperlinks to
// some of the "test" files created in the XXXXdemo projects // some of the "test" files created in the XXXXdemo projects
Write('Creating source workbook...'); Write('Creating source workbook...');
dir := ExtractFilePath(ParamStr(0));
srcWorkbook := TsWorkbook.Create; srcWorkbook := TsWorkbook.Create;
try try
sheet := srcWorkbook.AddWorksheet('Sheet'); sheet := srcWorkbook.AddWorksheet('Sheet');
sheet.WriteText(0, 0, 'Link to biff8 test file'); sheet.WriteText(0, 0, 'Link to biff8 test file');
sheet.WriteHyperlink(0, 0, '../excel8demo/test.xls#''My Worksheet 2''!A1'); sheet.WriteHyperlink(0, 0, '../../read_write/excel8demo/test.xls#''My Worksheet 2''!A1');
//sheet.WriteHyperlink(0, 0, '../excel8demo/test.xls#''Meu Relatório''!A1'); //sheet.WriteHyperlink(0, 0, '../excel8demo/test.xls#''Meu Relatório''!A1');
sheet.WriteText(1, 0, 'Link to ods test file'); sheet.WriteText(1, 0, 'Link to ods test file');
sheet.WriteHyperlink(1, 0, '..\opendocdemo\test.ods'); sheet.WriteHyperlink(1, 0, '../../read_write/opendocdemo/test.ods');
sheet.WriteText(2, 0, 'E-Mail Link'); sheet.WriteText(2, 0, 'E-Mail Link');
sheet.WriteHyperlink(2, 0, 'mailto:someone@mail.com;someoneelse@mail.com?Subject=This is a test'); sheet.WriteHyperlink(2, 0, 'mailto:someone@mail.com;someoneelse@mail.com?Subject=This is a test');
@ -51,7 +54,7 @@ begin
sheet.WriteHyperlink(3, 0, 'http://www.lazarus-ide.org/'); sheet.WriteHyperlink(3, 0, 'http://www.lazarus-ide.org/');
sheet.WriteText(4, 0, 'File-Link (absolute path)'); sheet.WriteText(4, 0, 'File-Link (absolute path)');
sheet.WriteHyperlink(4, 0, 'file:///'+ExpandFilename('..\..\..\tests\testooxml_1899.xlsx')); sheet.WriteHyperlink(4, 0, 'file:///'+ExpandFilename('../../../tests/testooxml_1899.xlsx'));
// This creates the URI such as "file:///D:\Prog_Lazarus\svn\lazarus-ccr\components\fpspreadsheet\tests\testooxml_1899.xlsx" // This creates the URI such as "file:///D:\Prog_Lazarus\svn\lazarus-ccr\components\fpspreadsheet\tests\testooxml_1899.xlsx"
// but makes sure that the file exists on your system. // but makes sure that the file exists on your system.
@ -60,7 +63,7 @@ begin
sheet.WriteColWidth(0, 40, suChars); sheet.WriteColWidth(0, 40, suChars);
srcWorkbook.WriteToFile(srcFile, true); srcWorkbook.WriteToFile(dir + srcFile, true);
finally finally
srcWorkbook.Free; srcWorkbook.Free;
end; end;
@ -73,7 +76,7 @@ begin
Write('Reading source workbook, sheet '); Write('Reading source workbook, sheet ');
srcWorkbook := TsWorkbook.Create; srcWorkbook := TsWorkbook.Create;
try try
srcWorkbook.ReadFromFile(srcFile); srcWorkbook.ReadFromFile(dir + srcFile);
sheet := srcWorkbook.GetWorksheetByIndex(0); sheet := srcWorkbook.GetWorksheetByIndex(0);
WriteLn(sheet.Name, '...'); WriteLn(sheet.Name, '...');
@ -125,7 +128,7 @@ begin
continue; continue;
end; end;
// Copy linked worksheet to new sheet in destination workbook // Copy linked worksheet to new sheet in destination workbook
destSheet := destWorkbook.CopyWorksheetFrom(linkedSheet); destSheet := destWorkbook.CopyWorksheetFrom(linkedSheet, true);
// Create sheet name // Create sheet name
sheetName := ExtractFileName(fn) + '#' +linkedSheet.Name; sheetName := ExtractFileName(fn) + '#' +linkedSheet.Name;
destWorkbook.ValidWorksheetName(sheetName, true); destWorkbook.ValidWorksheetName(sheetName, true);
@ -144,24 +147,27 @@ begin
WriteLn; WriteLn;
if destWorkbook <> nil then if destWorkbook <> nil then
begin begin
destworkbook.WriteToFile(destFile+'.xls', true); destworkbook.WriteToFile(dir + destFile+'.xls', true);
destworkbook.WriteToFile(destFile+'.xlsx', true); destworkbook.WriteToFile(dir + destFile+'.xlsx', true);
destworkbook.WriteToFile(destFile+'.ods', true); destworkbook.WriteToFile(dir + destFile+'.ods', true);
WriteLn('All hyperlinks to spreadsheets are collected in files ' + destFile + '.*'); WriteLn('All hyperlinks to spreadsheets are collected in files ' + destFile + '.*');
end else end else
WriteLn('No hyperlinks found.'); WriteLn('No hyperlinks found.');
{$IFDEF Windows}
WriteLn;
WriteLn('Press ENTER to close...');
ReadLn;
{$ENDIF}
finally finally
// Clean up // Clean up
srcWorkbook.Free; srcWorkbook.Free;
if destWorkbook <> nil then destWorkbook.Free; if destWorkbook <> nil then destWorkbook.Free;
end; end;
if ParamCount = 0 then
begin
{$IFDEF MSWindows}
WriteLn;
WriteLn('Press ENTER to close...');
ReadLn;
{$ENDIF}
end;
end. end.

View File

@ -40,6 +40,7 @@ var
book: TsWorkbook; book: TsWorkbook;
sheet: TsWorksheet; sheet: TsWorksheet;
cell: PCell; cell: PCell;
dir: String;
// example for an external ods reference: // example for an external ods reference:
// ='file:///D:/fpspreadsheet/examples/other/external.ods'#$Sheet.A1 // ='file:///D:/fpspreadsheet/examples/other/external.ods'#$Sheet.A1
@ -79,6 +80,8 @@ var
end; end;
begin begin
dir := ExtractFilePath(ParamStr(0));
// Write external file // Write external file
book := TsWorkbook.Create; book := TsWorkbook.Create;
try try
@ -90,7 +93,7 @@ begin
cell := sheet.GetCell(CELL2); cell := sheet.GetCell(CELL2);
sheet.WriteText(cell, 'Hallo'); sheet.WriteText(cell, 'Hallo');
book.WriteToFile(EXTERNAL_FILE, FILE_FORMAT, true); book.WriteToFile(dir+EXTERNAL_FILE, FILE_FORMAT, true);
finally finally
book.Free; book.Free;
end; end;
@ -103,9 +106,9 @@ begin
sheet := book.AddWorksheet('Sheet'); sheet := book.AddWorksheet('Sheet');
// Write external references // Write external references
sheet.WriteFormula(0, 0, ExtRef(EXTERNAL_FILE, EXTERNAL_SHEET, CELL1)); sheet.WriteFormula(0, 0, ExtRef(dir + EXTERNAL_FILE, EXTERNAL_SHEET, CELL1));
sheet.WriteFormula(1, 0, ExtRef(EXTERNAL_FILE, EXTERNAL_SHEET, CELL2)); sheet.WriteFormula(1, 0, ExtRef(dir + EXTERNAL_FILE, EXTERNAL_SHEET, CELL2));
book.WriteToFile(MASTER_FILE, FILE_FORMAT, true); book.WriteToFile(dir + MASTER_FILE, FILE_FORMAT, true);
finally finally
book.Free; book.Free;

View File

@ -59,7 +59,10 @@ var
book: TsWorkbook; book: TsWorkbook;
sheet: TsWorksheet; sheet: TsWorksheet;
i: Integer; i: Integer;
dir: String;
begin begin
dir := ExtractFilePath(ParamStr(0));
book := TsWorkbook.Create; book := TsWorkbook.Create;
try try
book.MetaData.CreatedBy := 'Donald Duck & Dagobert Duck'; book.MetaData.CreatedBy := 'Donald Duck & Dagobert Duck';
@ -80,9 +83,9 @@ begin
sheet := book.AddWorksheet('Test'); sheet := book.AddWorksheet('Test');
sheet.WriteText(2, 3, 'abc'); sheet.WriteText(2, 3, 'abc');
sheet.WriteBackgroundColor(2, 3, scYellow); sheet.WriteBackgroundColor(2, 3, scYellow);
book.WriteToFile('test.xlsx', true); book.WriteToFile(dir + 'test.xlsx', true);
book.WriteToFile('test.ods', true); book.WriteToFile(dir + 'test.ods', true);
book.WriteToFile('test.xml', true) book.WriteToFile(dir + 'test.xml', true)
finally finally
book.Free; book.Free;
end; end;

View File

@ -27,6 +27,11 @@
<Mode Name="default"/> <Mode Name="default"/>
</BuildModes> </BuildModes>
</Target> </Target>
<Target FileName="hyperlinkdemo\collectlinks.lpi">
<BuildModes>
<Mode Name="Default"/>
</BuildModes>
</Target>
<Target FileName="ignore_formulas\demo_ignore_formula.lpi"> <Target FileName="ignore_formulas\demo_ignore_formula.lpi">
<BuildModes> <BuildModes>
<Mode Name="Default"/> <Mode Name="Default"/>

View File

@ -14,6 +14,8 @@ var
sheet: TsWorksheet; sheet: TsWorksheet;
cell: PCell; cell: PCell;
c: TsCryptoInfo; c: TsCryptoInfo;
dir: String;
begin begin
book := TsWorkbook.Create; book := TsWorkbook.Create;
try try
@ -35,10 +37,11 @@ begin
sheet.Protection := [spDeleteRows, spDeleteColumns, spInsertRows, spInsertColumns]; sheet.Protection := [spDeleteRows, spDeleteColumns, spInsertRows, spInsertColumns];
sheet.Protect(true); sheet.Protect(true);
book.WriteToFile('protected.xls', sfExcel8, true); dir := ExtractFilePath(ParamStr(0));
book.WriteToFile('protected.xlsx', sfOOXML, true); book.WriteToFile(dir + 'protected.xls', sfExcel8, true);
book.WriteToFile(dir + 'protected.xlsx', sfOOXML, true);
// Note ODS does not write the excel password correctly, yet. --> protection cannot be removed. // Note ODS does not write the excel password correctly, yet. --> protection cannot be removed.
book.WriteToFile('protected.ods', sfOpenDocument, true); book.WriteToFile(dir + 'protected.ods', sfOpenDocument, true);
finally finally
book.Free; book.Free;

View File

@ -14,17 +14,21 @@ uses
cthreads, cthreads,
{$ENDIF} {$ENDIF}
{$ENDIF} {$ENDIF}
Classes, Math, SysUtils, Classes, Math,
fpstypes, fpspreadsheet, fpsfunc, xlsbiff8; fpstypes, fpspreadsheet, fpsfunc, xlsbiff8;
var var
workbook: TsWorkbook; workbook: TsWorkbook;
worksheet: TsWorksheet; worksheet: TsWorksheet;
dir: String;
const const
OutputFile='test_recursive.xls'; OutputFile = 'test_recursive.xls';
begin begin
writeln('Starting program.'); writeln('Starting program.');
dir := ExtractFilePath(ParamStr(0));
workbook := TsWorkbook.Create; workbook := TsWorkbook.Create;
try try
workbook.Options := workbook.Options + [boCalcBeforeSaving]; workbook.Options := workbook.Options + [boCalcBeforeSaving];
@ -39,10 +43,10 @@ begin
worksheet.WriteUTF8Text(2, 0, '(not dependent)'); // A3 worksheet.WriteUTF8Text(2, 0, '(not dependent)'); // A3
worksheet.WriteNumber(2, 1, 1); // B3 worksheet.WriteNumber(2, 1, 1); // B3
workbook.WriteToFile(OutputFile, sfExcel8, true); workbook.WriteToFile(dir + OutputFile, sfExcel8, true);
writeln('Finished.'); writeln('Finished.');
writeln; writeln;
writeln('Please open "'+OutputFile+'" in "fpsgrid".'); writeln('Please open "'+dir+OutputFile+'" in "fpsgrid".');
writeLn('It must show correct calculation results in cells B1 and B2.'); writeLn('It must show correct calculation results in cells B1 and B2.');
finally finally

View File

@ -3,6 +3,7 @@ colors\demo_write_colors -quit
conditional_formatting\demo_conditional_formatting -quit conditional_formatting\demo_conditional_formatting -quit
expression_parser\demo_expression_parser -quit expression_parser\demo_expression_parser -quit
header_footer_images\demo_write_headerfooter_images -quit header_footer_images\demo_write_headerfooter_images -quit
hyperlinkdemo\collectlinks -quit
ignore_formulas\demo_ignore_formula -quit ignore_formulas\demo_ignore_formula -quit
images\demo_write_images -quit images\demo_write_images -quit
metadata\demo_metadata -quit metadata\demo_metadata -quit

View File

@ -295,13 +295,17 @@ const
TestFile='test_user_formula.xlsx'; // Format depends on extension selected TestFile='test_user_formula.xlsx'; // Format depends on extension selected
// !!!! ods not working yet !!!! // !!!! ods not working yet !!!!
var
dir: String;
begin begin
WriteLn('This demo registers user-defined functions for financial calculations'); WriteLn('This demo registers user-defined functions for financial calculations');
WriteLn('and writes and reads the corresponding spreadsheet file.'); WriteLn('and writes and reads the corresponding spreadsheet file.');
WriteLn; WriteLn;
WriteFile(TestFile); dir := ExtractFilePath(ParamStr(0));
ReadFile(TestFile); WriteFile(dir + TestFile);
ReadFile(dir + TestFile);
WriteLn; WriteLn;
WriteLn('Open the file in Excel or OpenOffice/LibreOffice.'); WriteLn('Open the file in Excel or OpenOffice/LibreOffice.');

View File

@ -27,6 +27,7 @@ var
worksheet: TsWorksheet; worksheet: TsWorksheet;
dataAnalyzer: TDataAnalyzer; dataAnalyzer: TDataAnalyzer;
t: TTime; t: TTime;
dir: String;
procedure TDataAnalyzer.ReadCellDataHandler(Sender: TObject; procedure TDataAnalyzer.ReadCellDataHandler(Sender: TObject;
ARow, ACol: Cardinal; const ADataCell: PCell); ARow, ACol: Cardinal; const ADataCell: PCell);
@ -47,7 +48,9 @@ var
end; end;
begin begin
if not FileExists(TestFileName) then begin dir := ExtractFilePath(ParamStr(0));
if not FileExists(dir + TestFileName) then begin
WriteLn('The test file does not exist. Please run demo_virtual_write first.'); WriteLn('The test file does not exist. Please run demo_virtual_write first.');
Halt; Halt;
end; end;
@ -68,7 +71,7 @@ begin
workbook.OnReadCellData := @dataAnalyzer.ReadCellDataHandler; workbook.OnReadCellData := @dataAnalyzer.ReadCellDataHandler;
t := Now; t := Now;
workbook.ReadFromFile(TestFileName); workbook.ReadFromFile(dir + TestFileName);
t := Now - t; t := Now - t;
WriteLn(Format('The workbook containes %d number and %d label cells, total %d.', [ WriteLn(Format('The workbook containes %d number and %d label cells, total %d.', [

View File

@ -57,7 +57,11 @@ var
WriteLn('Writing row ', ARow, '...'); WriteLn('Writing row ', ARow, '...');
end; end;
var
dir: String;
begin begin
dir := ExtractFilePath(ParamStr(0));
dataprovider := TDataProvider.Create; dataprovider := TDataProvider.Create;
try try
workbook := TsWorkbook.Create; workbook := TsWorkbook.Create;
@ -98,11 +102,11 @@ begin
{ In case of a database, you would open the dataset before calling this: } { In case of a database, you would open the dataset before calling this: }
t := Now; t := Now;
//workbook.WriteToFile('test_virtual.ods', sfOpenDocument, true); //workbook.WriteToFile(dir + 'test_virtual.ods', sfOpenDocument, true);
//workbook.WriteToFile('test_virtual.xlsx', sfOOXML, true); //workbook.WriteToFile(dir + 'test_virtual.xlsx', sfOOXML, true);
workbook.WriteToFile('test_virtual.xls', sfExcel8, true); workbook.WriteToFile(dir + 'test_virtual.xls', sfExcel8, true);
//workbook.WriteToFile('test_virtual.xls', sfExcel5, true); //workbook.WriteToFile(dir + 'test_virtual.xls', sfExcel5, true);
//workbook.WriteToFile('test_virtual.xls', sfExcel2, true); //workbook.WriteToFile(dir + 'test_virtual.xls', sfExcel2, true);
t := Now - t; t := Now - t;
finally finally

View File

@ -282,7 +282,7 @@ begin
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2'); MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
// Save the spreadsheet to a file // Save the spreadsheet to a file
MyWorkbook.WriteToFile(MyDir + 'test1.ods', sfOpenDocument, true); MyWorkbook.WriteToFile(MyDir + 'test.ods', sfOpenDocument, true);
MyWorkbook.Free; MyWorkbook.Free;
end. end.