From 51984ba3b19e6a72f54dc8b9e85b924ae3ec8899 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 2 Aug 2023 21:28:45 +0000 Subject: [PATCH] fpspreadsheet: Add demo for reading encrypted xlsx file. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8908 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/other/crypto/pwd 123.xlsx | Bin 0 -> 7680 bytes .../other/crypto/read_encrypted_xlsx.lpi | 72 ++++++++++++++++++ .../other/crypto/read_encrypted_xlsx.lpr | 34 +++++++++ 3 files changed, 106 insertions(+) create mode 100644 components/fpspreadsheet/examples/other/crypto/pwd 123.xlsx create mode 100644 components/fpspreadsheet/examples/other/crypto/read_encrypted_xlsx.lpi create mode 100644 components/fpspreadsheet/examples/other/crypto/read_encrypted_xlsx.lpr diff --git a/components/fpspreadsheet/examples/other/crypto/pwd 123.xlsx b/components/fpspreadsheet/examples/other/crypto/pwd 123.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..832ab43e5a6b70ce0c07f278c09b2085ae3e4596 GIT binary patch literal 7680 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 VudKQDng3PCU-0{%#{V<_|1TRt + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + </RunParams> + <RequiredPackages> + <Item> + <PackageName Value="laz_fpspreadsheet_crypto"/> + </Item> + <Item> + <PackageName Value="laz_fpspreadsheet"/> + </Item> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="read_encrypted_xlsx.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="read_encrypted_xlsx"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + <UseHeaptrc Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions> + <Item> + <Name Value="EAbort"/> + </Item> + <Item> + <Name Value="ECodetoolError"/> + </Item> + <Item> + <Name Value="EFOpenError"/> + </Item> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/fpspreadsheet/examples/other/crypto/read_encrypted_xlsx.lpr b/components/fpspreadsheet/examples/other/crypto/read_encrypted_xlsx.lpr new file mode 100644 index 000000000..623fd1216 --- /dev/null +++ b/components/fpspreadsheet/examples/other/crypto/read_encrypted_xlsx.lpr @@ -0,0 +1,34 @@ +program read_encrypted_xlsx; + +uses + SysUtils, + fpSpreadsheet, fpsTypes, fpsUtils, xlsxOOXML_Crypto; + +const + FILENAME = 'pwd 123.xlsx'; + PASSWORD = '123'; + +var + wb: TsWorkbook; + ws: TsWorksheet; + cell: PCell; + t: TDateTime; +begin + t := Now; + wb := TsWorkbook.Create; + try + wb.ReadFromFile(FILENAME, sfidOOXML_Crypto, PASSWORD, []); + ws := wb.GetFirstWorksheet; + if ws <> nil then + for cell in ws.Cells do + WriteLn('cell ', GetCellString(cell^.Row, cell^.Col), ' = "', ws.ReadAsText(cell), '"'); + finally + wb.Free; + end; + t := Now - t; + WriteLn('Time to decrypt and load: ', FormatDateTime('nn:ss.zzz', t), ' seconds'); + WriteLn; + Write('Press ENTER to close...'); + ReadLn; +end. +