From f7a7054930be0f68f302534ec30db8270db7988c Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Fri, 20 Oct 2023 16:56:49 +0000 Subject: [PATCH] fpspreadsheet: Initial commit of writing support of charts for OpenDocument. Very experimental and buggy... git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8969 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../examples/other/chart/write_chart_demo.lpi | 73 +++++++++++++++++++ .../examples/other/chart/write_chart_demo.lpr | 71 ++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 components/fpspreadsheet/examples/other/chart/write_chart_demo.lpi create mode 100644 components/fpspreadsheet/examples/other/chart/write_chart_demo.lpr diff --git a/components/fpspreadsheet/examples/other/chart/write_chart_demo.lpi b/components/fpspreadsheet/examples/other/chart/write_chart_demo.lpi new file mode 100644 index 000000000..a23537506 --- /dev/null +++ b/components/fpspreadsheet/examples/other/chart/write_chart_demo.lpi @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + <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"/> + </Item> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="write_chart_demo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="write_chart_demo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + </Debugging> + </Linking> + <Other> + <ConfigFile> + <WriteConfigFilePath Value=""/> + </ConfigFile> + </Other> + </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/chart/write_chart_demo.lpr b/components/fpspreadsheet/examples/other/chart/write_chart_demo.lpr new file mode 100644 index 000000000..2bf0e3352 --- /dev/null +++ b/components/fpspreadsheet/examples/other/chart/write_chart_demo.lpr @@ -0,0 +1,71 @@ +program write_chart_demo; + +uses + SysUtils, fpspreadsheet, fpstypes, fpschart, xlsxooxml, fpsopendocument; +var + b: TsWorkbook; + sh1, sh2, sh3: TsWorksheet; + ch: TsChart; + ser: TsChartSeries; + i: Integer; +begin + b := TsWorkbook.Create; + try + // 1st sheet + sh1 := b.AddWorksheet('test1'); + sh1.WriteText(0, 1, 'sin(x)'); + for i := 1 to 7 do + begin + sh1.WriteNumber(i, 0, i-1); + sh1.WriteNumber(i, 1, sin(i-1)); + end; + + ch := b.AddChart(sh1, 4, 4, 125, 95); + ser := TsLineSeries.Create(ch); + ser.SetTitleAddr(0, 1); + ser.SetLabelRange(1, 0, 7, 0); + ser.SetYRange(1, 1, 7, 1); + ch.Title.Caption := 'HALLO'; + ch.Title.Visible := true; + ch.SubTitle.Caption := 'hallo'; + ch.SubTitle.Visible := true; + ch.YAxis.ShowMajorGridLines := true; + ch.YAxis.ShowMinorGridLines := true; + + // 2nd sheet + sh2 := b.AddWorksheet('test2'); + + // 3rd sheet + sh3 := b.AddWorksheet('test3'); + sh3.WriteText(0, 1, 'cos(x)'); + sh3.WriteText(0, 2, 'sin(x)'); + for i := 1 to 7 do + begin + sh3.WriteNumber(i, 0, i-1); + sh3.WriteNumber(i, 1, cos(i-1), nfFixed, 2); + sh3.WriteNumber(i, 2, sin(i-1), nfFixed, 2); + end; + + ch := b.AddChart(sh3, 1, 3, 125, 95); + ser := TsLineSeries.Create(ch); + ser.SetTitleAddr(0, 1); + ser.SetLabelRange(1, 0, 7, 0); + ser.SetYRange(1, 1, 7, 1); + ser := TsLineSeries.Create(ch); + ser.SetTitleAddr(0, 2); + ser.SetLabelRange(1, 0, 7, 0); + ser.SetYRange(1, 2, 7, 2); + ch.Title.Caption := 'HALLO'; + ch.Title.Visible := true; + ch.SubTitle.Caption := 'hallo'; + ch.Subtitle.Visible := true; + ch.XAxis.ShowMajorGridLines := true; + ch.XAxis.ShowMinorGridLines := true; + + b.WriteToFile('test.xlsx', true); // Excel fails to open the file + b.WriteToFile('test.ods', true); + finally + b.Free; + end; +end. +