RxFPC: RxDBGridExportSpreadSheet support merged cells

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5935 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2017-06-13 11:29:31 +00:00
parent 75aaf4e32b
commit 024c39833a
13 changed files with 241 additions and 118 deletions

View File

@ -21,16 +21,19 @@
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
</local> </local>
</RunParams> </RunParams>
<RequiredPackages Count="3"> <RequiredPackages Count="4">
<Item1> <Item1>
<PackageName Value="FCL"/> <PackageName Value="rxdbgrid_export_spreadsheet"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="rxnew"/> <PackageName Value="FCL"/>
</Item2> </Item2>
<Item3> <Item3>
<PackageName Value="LCL"/> <PackageName Value="rxnew"/>
</Item3> </Item3>
<Item4>
<PackageName Value="LCL"/>
</Item4>
</RequiredPackages> </RequiredPackages>
<Units Count="2"> <Units Count="2">
<Unit0> <Unit0>

View File

@ -3,7 +3,7 @@
<ProjectSession> <ProjectSession>
<Version Value="10"/> <Version Value="10"/>
<BuildModes Active="Default"/> <BuildModes Active="Default"/>
<Units Count="20"> <Units Count="23">
<Unit0> <Unit0>
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
@ -11,7 +11,7 @@
<WindowIndex Value="-1"/> <WindowIndex Value="-1"/>
<TopLine Value="-1"/> <TopLine Value="-1"/>
<CursorPos X="-1" Y="-1"/> <CursorPos X="-1" Y="-1"/>
<UsageCount Value="24"/> <UsageCount Value="25"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
@ -21,17 +21,17 @@
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/> <UnitName Value="Unit1"/>
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<TopLine Value="43"/> <TopLine Value="7"/>
<CursorPos Y="46"/> <CursorPos X="5" Y="25"/>
<UsageCount Value="24"/> <UsageCount Value="25"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<EditorIndex Value="1"/> <EditorIndex Value="4"/>
<TopLine Value="1106"/> <TopLine Value="6312"/>
<CursorPos Y="1142"/> <CursorPos Y="6333"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="54" Y="6391" ID="1"/> <Item0 X="54" Y="6391" ID="1"/>
@ -41,7 +41,7 @@
<Unit3> <Unit3>
<Filename Value="../../../../../lcl/grids.pas"/> <Filename Value="../../../../../lcl/grids.pas"/>
<UnitName Value="Grids"/> <UnitName Value="Grids"/>
<EditorIndex Value="5"/> <EditorIndex Value="8"/>
<TopLine Value="116"/> <TopLine Value="116"/>
<CursorPos X="3" Y="134"/> <CursorPos X="3" Y="134"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
@ -50,7 +50,7 @@
<Unit4> <Unit4>
<Filename Value="../../../../../lcl/dbgrids.pas"/> <Filename Value="../../../../../lcl/dbgrids.pas"/>
<UnitName Value="DBGrids"/> <UnitName Value="DBGrids"/>
<EditorIndex Value="4"/> <EditorIndex Value="7"/>
<TopLine Value="475"/> <TopLine Value="475"/>
<CursorPos X="14" Y="491"/> <CursorPos X="14" Y="491"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
@ -72,7 +72,7 @@
</Unit6> </Unit6>
<Unit7> <Unit7>
<Filename Value="../../../rxtools/rxutils.pas"/> <Filename Value="../../../rxtools/rxutils.pas"/>
<EditorIndex Value="2"/> <EditorIndex Value="5"/>
<TopLine Value="64"/> <TopLine Value="64"/>
<CursorPos X="2" Y="91"/> <CursorPos X="2" Y="91"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
@ -80,7 +80,7 @@
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="../../../rxtools/rxstrutils.pas"/> <Filename Value="../../../rxtools/rxstrutils.pas"/>
<EditorIndex Value="3"/> <EditorIndex Value="6"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit8> </Unit8>
@ -163,127 +163,157 @@
<CursorPos X="3" Y="2395"/> <CursorPos X="3" Y="2395"/>
<UsageCount Value="10"/> <UsageCount Value="10"/>
</Unit19> </Unit19>
<Unit20>
<Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<UnitName Value="RxDBGridExportSpreadSheet"/>
<EditorIndex Value="1"/>
<TopLine Value="564"/>
<CursorPos X="5" Y="594"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas"/>
<ComponentName Value="RxDBGridExportSpreadSheet_ParamsForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="RxDBGridExportSpreadSheet_ParamsUnit"/>
<EditorIndex Value="2"/>
<TopLine Value="58"/>
<CursorPos X="25" Y="89"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit21>
<Unit22>
<Filename Value="../../../rxtools/rxdconst.pas"/>
<EditorIndex Value="3"/>
<TopLine Value="172"/>
<CursorPos X="44" Y="192"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit22>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="4412" Column="7" TopLine="4378"/> <Caret Line="219" Column="5" TopLine="151"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="4371" Column="28" TopLine="4356"/> <Caret Line="141" TopLine="123"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="5219" Column="3" TopLine="5197"/> <Caret Line="142" TopLine="123"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="6300" TopLine="6278"/> <Caret Line="143" TopLine="123"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="6305" Column="22" TopLine="6290"/> <Caret Line="146" Column="34" TopLine="123"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="6308" Column="34" TopLine="6288"/> <Caret Line="144" Column="30" TopLine="130"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6340" Column="3" TopLine="6318"/> <Caret Line="957" Column="14" TopLine="940"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6339" Column="22" TopLine="6318"/> <Caret Line="6319" Column="3" TopLine="6314"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="6355" Column="22" TopLine="6334"/> <Caret Line="6326" TopLine="6314"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="6370" Column="19" TopLine="6350"/> <Caret Line="203" Column="7" TopLine="126"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="6371" Column="24" TopLine="6353"/> <Caret Line="144" TopLine="126"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="1104" Column="14" TopLine="1089"/> <Caret Line="6319" TopLine="6312"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="64" Column="55" TopLine="40"/> <Caret Line="6320" TopLine="6312"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="81" Column="49" TopLine="52"/> <Caret Line="6321" TopLine="6312"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="90" Column="9" TopLine="56"/> <Caret Line="6322" TopLine="6312"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="71" Column="5" TopLine="55"/> <Caret Line="6324" TopLine="6312"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="72" TopLine="55"/> <Caret Line="6326" TopLine="6312"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4368" Column="45" TopLine="4338"/> <Caret Line="6327" TopLine="6312"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4374" TopLine="4345"/> <Caret Line="6328" TopLine="6312"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="76" Column="37" TopLine="55"/> <Caret Line="6330" TopLine="6312"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="4406" TopLine="4387"/> <Caret Line="6331" TopLine="6312"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="1142" TopLine="1118"/> <Caret Line="6333" TopLine="6312"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="79" Column="35" TopLine="54"/> <Caret Line="146" TopLine="126"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="105" Column="28" TopLine="71"/> <Caret Line="136" Column="30" TopLine="126"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="34" Column="44" TopLine="33"/> <Caret Line="144" Column="69" TopLine="136"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="104" TopLine="70"/> <Caret Line="83" Column="15" TopLine="65"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas"/>
<Caret Line="101" TopLine="71"/> <Caret Line="555" Column="3" TopLine="550"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas"/>
<Caret Line="35" Column="3" TopLine="8"/> <Caret Line="55" Column="5" TopLine="38"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas"/>
<Caret Line="47" TopLine="44"/> <Caret Line="62" Column="17" TopLine="38"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="unit1.pas"/> <Filename Value="../../../rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas"/>
<Caret Line="46" TopLine="43"/> <Caret Line="89" Column="25" TopLine="58"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectSession> </ProjectSession>

View File

@ -10,8 +10,8 @@ object Form1: TForm1
LCLVersion = '1.9.0.0' LCLVersion = '1.9.0.0'
object RxDBGrid1: TRxDBGrid object RxDBGrid1: TRxDBGrid
Left = 0 Left = 0
Height = 570 Height = 566
Top = 50 Top = 54
Width = 770 Width = 770
ColumnDefValues.BlobText = '(данные)' ColumnDefValues.BlobText = '(данные)'
TitleButtons = False TitleButtons = False
@ -135,11 +135,12 @@ object Form1: TForm1
end end
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Height = 50 Height = 54
Top = 0 Top = 0
Width = 770 Width = 770
Align = alTop Align = alTop
ClientHeight = 50 AutoSize = True
ClientHeight = 54
ClientWidth = 770 ClientWidth = 770
TabOrder = 1 TabOrder = 1
object CheckBox1: TCheckBox object CheckBox1: TCheckBox
@ -154,6 +155,21 @@ object Form1: TForm1
OnChange = CheckBox1Change OnChange = CheckBox1Change
TabOrder = 0 TabOrder = 0
end end
object Button1: TButton
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 690
Height = 36
Top = 7
Width = 69
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'Export...'
OnClick = Button1Click
TabOrder = 1
end
end end
object rxData: TRxMemoryData object rxData: TRxMemoryData
FieldDefs = < FieldDefs = <
@ -208,4 +224,15 @@ object Form1: TForm1
Left = 256 Left = 256
Top = 165 Top = 165
end end
object RxDBGridExportSpreadSheet1: TRxDBGridExportSpreadSheet
RxDBGrid = RxDBGrid1
Caption = 'Экспорт в электронную таблицу'
ShowSetupForm = True
FileName = 'aaa.ods'
PageName = 'Test1'
Options = [ressExportTitle, ressExportColors, ressExportFooter, ressExportFormula, ressOverwriteExisting, ressExportSelectedRows, ressHideZeroValues, ressColSpanning]
OpenAfterExport = True
Left = 336
Top = 165
end
end end

View File

@ -5,14 +5,15 @@ unit Unit1;
interface interface
uses uses
Classes, SysUtils, FileUtil, rxdbgrid, rxmemds, Forms, Controls, Graphics, Classes, SysUtils, FileUtil, rxdbgrid, rxmemds, RxDBGridExportSpreadSheet,
Dialogs, ExtCtrls, StdCtrls, db, Grids, DBGrids; Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, db, Grids, DBGrids;
type type
{ TForm1 } { TForm1 }
TForm1 = class(TForm) TForm1 = class(TForm)
Button1: TButton;
CheckBox1: TCheckBox; CheckBox1: TCheckBox;
dsData: TDataSource; dsData: TDataSource;
Panel1: TPanel; Panel1: TPanel;
@ -21,6 +22,8 @@ type
rxDataNAME: TStringField; rxDataNAME: TStringField;
RxDBGrid1: TRxDBGrid; RxDBGrid1: TRxDBGrid;
rxData: TRxMemoryData; rxData: TRxMemoryData;
RxDBGridExportSpreadSheet1: TRxDBGridExportSpreadSheet;
procedure Button1Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject); procedure CheckBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure RxDBGrid1Columns0DrawColumnCell(Sender: TObject; procedure RxDBGrid1Columns0DrawColumnCell(Sender: TObject;
@ -89,5 +92,10 @@ begin
RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx - [rdgColSpanning]; RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx - [rdgColSpanning];
end; end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RxDBGridExportSpreadSheet1.Execute;
end;
end. end.

View File

@ -317,6 +317,10 @@ msgstr "No se puede completar esta operación en el conjunto de datos local"
msgid "No data found" msgid "No data found"
msgstr "No hay datos" msgstr "No hay datos"
#: rxdconst.smergecells
msgid "Merge cell's"
msgstr ""
#: rxdconst.smore1 #: rxdconst.smore1
msgid "&More >>" msgid "&More >>"
msgstr "&Mas >>" msgstr "&Mas >>"

View File

@ -301,6 +301,10 @@ msgstr ""
msgid "No data found" msgid "No data found"
msgstr "" msgstr ""
#: rxdconst.smergecells
msgid "Merge cell's"
msgstr ""
#: rxdconst.smore1 #: rxdconst.smore1
msgid "&More >>" msgid "&More >>"
msgstr "" msgstr ""

View File

@ -312,6 +312,10 @@ msgstr "Невозможно произвести эту операцию с л
msgid "No data found" msgid "No data found"
msgstr "Данных не найдено" msgstr "Данных не найдено"
#: rxdconst.smergecells
msgid "Merge cell's"
msgstr "Объединять ячейки"
#: rxdconst.smore1 #: rxdconst.smore1
msgid "&More >>" msgid "&More >>"
msgstr "&Больше >>" msgstr "&Больше >>"

View File

@ -314,6 +314,10 @@ msgstr "Неможливо провести цю операцію з локал
msgid "No data found" msgid "No data found"
msgstr "Даних не знайдено" msgstr "Даних не знайдено"
#: rxdconst.smergecells
msgid "Merge cell's"
msgstr ""
#: rxdconst.smore1 #: rxdconst.smore1
msgid "&More >>" msgid "&More >>"
msgstr "&Більше >>" msgstr "&Більше >>"

View File

@ -917,10 +917,6 @@ type
procedure DoEditorShow; override; procedure DoEditorShow; override;
procedure CheckNewCachedSizes(var AGCache:TGridDataCache); override; procedure CheckNewCachedSizes(var AGCache:TGridDataCache); override;
procedure CalcCellExtent(ACol, ARow: Integer; var ARect: TRect);
function IsMerged(ACol : Integer): Boolean; overload;
function IsMerged(ACol : Integer; out ALeft, ARight: Integer; out AColumn: TRxColumn): Boolean; overload;
function GetEditMask(aCol, aRow: Longint): string; override; function GetEditMask(aCol, aRow: Longint): string; override;
function GetEditText(aCol, aRow: Longint): string; override; function GetEditText(aCol, aRow: Longint): string; override;
function GetDefaultEditor(Column: Integer): TWinControl; override; function GetDefaultEditor(Column: Integer): TWinControl; override;
@ -956,6 +952,10 @@ type
function CreateToolMenuItem(ShortCut: char; const ACaption: string; MenuAction: TNotifyEvent):TMenuItem; function CreateToolMenuItem(ShortCut: char; const ACaption: string; MenuAction: TNotifyEvent):TMenuItem;
procedure RemoveToolMenuItem(MenuAction: TNotifyEvent); procedure RemoveToolMenuItem(MenuAction: TNotifyEvent);
procedure CalcCellExtent(ACol, ARow: Integer; var ARect: TRect);
function IsMerged(ACol : Integer): Boolean; overload;
function IsMerged(ACol : Integer; out ALeft, ARight: Integer; out AColumn: TRxColumn): Boolean; overload;
procedure SetSort(AFields: array of String; ASortMarkers: array of TSortMarker; PreformSort: Boolean = False); procedure SetSort(AFields: array of String; ASortMarkers: array of TSortMarker; PreformSort: Boolean = False);
property Canvas; property Canvas;

View File

@ -45,7 +45,8 @@ type
ressExportFormula, ressExportFormula,
ressOverwriteExisting, ressOverwriteExisting,
ressExportSelectedRows, ressExportSelectedRows,
ressHideZeroValues ressHideZeroValues,
ressColSpanning
); );
TRxDBGridExportSpreadSheetOptions = set of TRxDBGridExportSpreadSheetOption; TRxDBGridExportSpreadSheetOptions = set of TRxDBGridExportSpreadSheetOption;
@ -126,16 +127,27 @@ end;
procedure TRxDBGridExportSpreadSheet.ExpCurRow(AFont:TFont); procedure TRxDBGridExportSpreadSheet.ExpCurRow(AFont:TFont);
var var
i, J: Integer; i, J, L, R: Integer;
C: TRxColumn; C: TRxColumn;
CT: TRxColumnTitle; CT: TRxColumnTitle;
S: String; S: String;
CC: TColor; CC: TColor;
begin begin
FCurCol:=0; FCurCol:=0;
for i:=0 to FRxDBGrid.Columns.Count - 1 do
i:=0;
while i<FRxDBGrid.Columns.Count do
begin begin
C:=FRxDBGrid.Columns[i] as TRxColumn; C:=nil;
R:=-1;
if (rdgColSpanning in FRxDBGrid.OptionsRx) and (ressColSpanning in Options) then
if FRxDBGrid.IsMerged(I + 1, L, R, C) then
FWorksheet.MergeCells(FCurRow, FCurCol, FCurRow, R-1);
if not Assigned(C) then
C:=FRxDBGrid.Columns[i] as TRxColumn;
CT:=C.Title as TRxColumnTitle; CT:=C.Title as TRxColumnTitle;
if C.Visible then if C.Visible then
begin begin
@ -199,6 +211,14 @@ begin
FWorksheet.WriteHorAlignment(FCurRow, FCurCol, ssAligns[C.Alignment]); FWorksheet.WriteHorAlignment(FCurRow, FCurCol, ssAligns[C.Alignment]);
inc(FCurCol); inc(FCurCol);
end; end;
if R > -1 then
begin
i:=R-1;
FCurCol:=R;
end;
Inc(i);
end; end;
end; end;
@ -543,6 +563,7 @@ begin
F.cbExportSelectedRows.Checked:=ressExportSelectedRows in FOptions; F.cbExportSelectedRows.Checked:=ressExportSelectedRows in FOptions;
F.cbExportSelectedRows.Enabled:=(dgMultiselect in RxDBGrid.Options) and (RxDBGrid.SelectedRows.Count > 0); F.cbExportSelectedRows.Enabled:=(dgMultiselect in RxDBGrid.Options) and (RxDBGrid.SelectedRows.Count > 0);
F.cbHideZeroValues.Checked:=ressHideZeroValues in FOptions; F.cbHideZeroValues.Checked:=ressHideZeroValues in FOptions;
F.cbMergeCells.Checked:=ressColSpanning in FOptions;
F.edtPageName.Text:=FPageName; F.edtPageName.Text:=FPageName;
@ -569,6 +590,9 @@ begin
FOptions :=FOptions + [ressExportSelectedRows]; FOptions :=FOptions + [ressExportSelectedRows];
if F.cbHideZeroValues.Checked then if F.cbHideZeroValues.Checked then
FOptions:=FOptions + [ressHideZeroValues]; FOptions:=FOptions + [ressHideZeroValues];
if F.cbMergeCells.Checked then
FOptions:=FOptions + [ressColSpanning];
end; end;
F.Free; F.Free;
end; end;

View File

@ -1,10 +1,10 @@
object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsForm object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsForm
Left = 483 Left = 483
Height = 294 Height = 317
Top = 235 Top = 235
Width = 548 Width = 548
Caption = 'Export params' Caption = 'Export params'
ClientHeight = 294 ClientHeight = 317
ClientWidth = 548 ClientWidth = 548
OnCreate = FormCreate OnCreate = FormCreate
Position = poScreenCenter Position = poScreenCenter
@ -13,9 +13,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
Left = 6 Left = 6
Height = 17 Height = 20
Top = 6 Top = 6
Width = 95 Width = 104
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export file name' Caption = 'Export file name'
FocusControl = FileNameEdit1 FocusControl = FileNameEdit1
@ -28,8 +28,8 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 12 Left = 12
Height = 34 Height = 37
Top = 29 Top = 32
Width = 530 Width = 530
Filter = 'All files (*.*)|*.*|LibreOffice/OpenOffice (*.ods)|*.ods|Excel 97-2003|*.xls|Excel 2007-2013|*.xlsx' Filter = 'All files (*.*)|*.*|LibreOffice/OpenOffice (*.ods)|*.ods|Excel 97-2003|*.xls|Excel 2007-2013|*.xlsx'
FilterIndex = 0 FilterIndex = 0
@ -47,9 +47,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbHideZeroValues AnchorSideTop.Control = cbHideZeroValues
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 17 Height = 20
Top = 156 Top = 165
Width = 62 Width = 70
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Page name' Caption = 'Page name'
FocusControl = edtPageName FocusControl = edtPageName
@ -62,8 +62,8 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 286 Left = 286
Height = 34 Height = 37
Top = 179 Top = 191
Width = 256 Width = 256
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6 BorderSpacing.Around = 6
@ -74,9 +74,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportColumnHeader AnchorSideTop.Control = cbExportColumnHeader
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 24
Top = 127 Top = 135
Width = 152 Width = 161
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export column footer' Caption = 'Export column footer'
TabOrder = 3 TabOrder = 3
@ -86,9 +86,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = FileNameEdit1 AnchorSideTop.Control = FileNameEdit1
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 24
Top = 69 Top = 75
Width = 131 Width = 140
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Open after export' Caption = 'Open after export'
TabOrder = 1 TabOrder = 1
@ -96,7 +96,7 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
object ButtonPanel1: TButtonPanel object ButtonPanel1: TButtonPanel
Left = 6 Left = 6
Height = 46 Height = 46
Top = 242 Top = 265
Width = 536 Width = 536
OKButton.Name = 'OKButton' OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True OKButton.DefaultCaption = True
@ -114,9 +114,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbOpenAfterExport AnchorSideTop.Control = cbOpenAfterExport
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 24
Top = 98 Top = 105
Width = 153 Width = 166
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export column header' Caption = 'Export column header'
TabOrder = 2 TabOrder = 2
@ -126,9 +126,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportColumnFooter AnchorSideTop.Control = cbExportColumnFooter
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 24
Top = 156 Top = 165
Width = 127 Width = 137
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export cell colors' Caption = 'Export cell colors'
TabOrder = 4 TabOrder = 4
@ -148,9 +148,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportFormula AnchorSideTop.Control = cbExportFormula
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 23 Height = 24
Top = 98 Top = 105
Width = 154 Width = 166
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Overwrite existing file' Caption = 'Overwrite existing file'
TabOrder = 6 TabOrder = 6
@ -160,9 +160,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = FileNameEdit1 AnchorSideTop.Control = FileNameEdit1
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 23 Height = 24
Top = 69 Top = 75
Width = 113 Width = 120
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export formula' Caption = 'Export formula'
TabOrder = 5 TabOrder = 5
@ -172,9 +172,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportCellColors AnchorSideTop.Control = cbExportCellColors
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 23 Height = 24
Top = 185 Top = 195
Width = 149 Width = 161
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export selected rows' Caption = 'Export selected rows'
TabOrder = 9 TabOrder = 9
@ -184,11 +184,23 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbOverwriteExisting AnchorSideTop.Control = cbOverwriteExisting
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 23 Height = 24
Top = 127 Top = 135
Width = 122 Width = 133
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Hide zero values' Caption = 'Hide zero values'
TabOrder = 10 TabOrder = 10
end end
object cbMergeCells: TCheckBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = cbExportSelectedRows
AnchorSideTop.Side = asrBottom
Left = 6
Height = 24
Top = 225
Width = 103
BorderSpacing.Around = 6
Caption = 'Merge cell''s'
TabOrder = 11
end
end end

View File

@ -48,6 +48,7 @@ type
cbExportSelectedRows: TCheckBox; cbExportSelectedRows: TCheckBox;
cbExportFormula: TCheckBox; cbExportFormula: TCheckBox;
cbExportColumnFooter: TCheckBox; cbExportColumnFooter: TCheckBox;
cbMergeCells: TCheckBox;
cbOpenAfterExport: TCheckBox; cbOpenAfterExport: TCheckBox;
cbExportColumnHeader: TCheckBox; cbExportColumnHeader: TCheckBox;
cbExportCellColors: TCheckBox; cbExportCellColors: TCheckBox;
@ -85,6 +86,7 @@ begin
cbExportFormula.Caption:=sExportFormula; cbExportFormula.Caption:=sExportFormula;
cbExportSelectedRows.Caption:=sExportSelectedRows; cbExportSelectedRows.Caption:=sExportSelectedRows;
cbHideZeroValues.Caption:=sExportHideZeroValues; cbHideZeroValues.Caption:=sExportHideZeroValues;
cbMergeCells.Caption:=sMergeCells;
end; end;
end. end.

View File

@ -187,6 +187,7 @@ resourcestring
sExportImages = 'Export images'; sExportImages = 'Export images';
sExportSelectedRows = 'Export only selected rows'; sExportSelectedRows = 'Export only selected rows';
sExportHideZeroValues = 'Hide zero values'; sExportHideZeroValues = 'Hide zero values';
sMergeCells = 'Merge cell''s';
sOverwriteExisting = 'Overwrite existing'; sOverwriteExisting = 'Overwrite existing';
sShowColumnHeaderOnAllPage = 'Show column header on all pages'; sShowColumnHeaderOnAllPage = 'Show column header on all pages';
sPageMargins = 'Page margins'; sPageMargins = 'Page margins';