You've already forked lazarus-ccr
fpspreadsheet: Extend db_export_import demo to show explicit conversion of a column to text format.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7315 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectOptions>
|
<ProjectOptions>
|
||||||
<Version Value="11"/>
|
<Version Value="12"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<General>
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<CompatibilityMode Value="True"/>
|
||||||
|
</Flags>
|
||||||
<SessionStorage Value="InProjectDir"/>
|
<SessionStorage Value="InProjectDir"/>
|
||||||
<MainUnit Value="0"/>
|
|
||||||
<Title Value="db_export_import"/>
|
<Title Value="db_export_import"/>
|
||||||
<ResourceType Value="res"/>
|
<ResourceType Value="res"/>
|
||||||
<UseXPManifest Value="True"/>
|
<UseXPManifest Value="True"/>
|
||||||
|
@ -8,7 +8,7 @@ object Form1: TForm1
|
|||||||
ClientWidth = 521
|
ClientWidth = 521
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
LCLVersion = '1.9.0.0'
|
LCLVersion = '2.1.0.0'
|
||||||
object PageControl: TPageControl
|
object PageControl: TPageControl
|
||||||
Left = 4
|
Left = 4
|
||||||
Height = 302
|
Height = 302
|
||||||
@ -95,7 +95,7 @@ object Form1: TForm1
|
|||||||
Left = 8
|
Left = 8
|
||||||
Height = 15
|
Height = 15
|
||||||
Top = 40
|
Top = 40
|
||||||
Width = 324
|
Width = 325
|
||||||
Caption = 'Please note: the binary xls files can handle only 65536 records.'
|
Caption = 'Please note: the binary xls files can handle only 65536 records.'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
|
@ -55,6 +55,7 @@ type
|
|||||||
FHeaderTemplateCell: PCell;
|
FHeaderTemplateCell: PCell;
|
||||||
FDateTemplateCell: PCell;
|
FDateTemplateCell: PCell;
|
||||||
FCurrencyTemplatecell: PCell;
|
FCurrencyTemplatecell: PCell;
|
||||||
|
FSocialSecurityTemplateCell: PCell;
|
||||||
FImportedFieldNames: TStringList;
|
FImportedFieldNames: TStringList;
|
||||||
FImportedRowCells: Array of TCell;
|
FImportedRowCells: Array of TCell;
|
||||||
// Actual export code when using FPSpreadsheet's fpsexport:
|
// Actual export code when using FPSpreadsheet's fpsexport:
|
||||||
@ -130,6 +131,15 @@ const
|
|||||||
|
|
||||||
{ TForm1 }
|
{ TForm1 }
|
||||||
|
|
||||||
|
function RandomNumberStr(ALength: Integer): String;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
SetLength(Result, ALength);
|
||||||
|
for i := 1 to ALength do
|
||||||
|
Result[i] := char(ord('0') + Random(10));
|
||||||
|
end;
|
||||||
|
|
||||||
{ This procedure creates a test dbf table with random data for us to play with }
|
{ This procedure creates a test dbf table with random data for us to play with }
|
||||||
procedure TForm1.BtnCreateDatabaseClick(Sender: TObject);
|
procedure TForm1.BtnCreateDatabaseClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
@ -163,6 +173,7 @@ begin
|
|||||||
FExportDataset.FieldDefs.Add('Last name', ftString);
|
FExportDataset.FieldDefs.Add('Last name', ftString);
|
||||||
FExportDataset.FieldDefs.Add('First name', ftString);
|
FExportDataset.FieldDefs.Add('First name', ftString);
|
||||||
FExportDataset.FieldDefs.Add('City', ftString);
|
FExportDataset.FieldDefs.Add('City', ftString);
|
||||||
|
FExportDataset.FieldDefs.Add('Social sec', ftString);
|
||||||
FExportDataset.FieldDefs.Add('Birthday', ftDate);
|
FExportDataset.FieldDefs.Add('Birthday', ftDate);
|
||||||
FExportDataset.FieldDefs.Add('Salary', ftCurrency);
|
FExportDataset.FieldDefs.Add('Salary', ftCurrency);
|
||||||
FExportDataset.FieldDefs.Add('Work begin', ftDateTime);
|
FExportDataset.FieldDefs.Add('Work begin', ftDateTime);
|
||||||
@ -196,6 +207,7 @@ begin
|
|||||||
FExportDataset.FieldByName('Size').AsFloat := (160 + Random(50)) / 100;
|
FExportDataset.FieldByName('Size').AsFloat := (160 + Random(50)) / 100;
|
||||||
FExportDataSet.FieldByName('Work begin').AsDateTime := 40000+EncodeTime(6+Random(4), Random(60), Random(60), 0);
|
FExportDataSet.FieldByName('Work begin').AsDateTime := 40000+EncodeTime(6+Random(4), Random(60), Random(60), 0);
|
||||||
FExportDataSet.FieldByName('Work end').AsDateTime := EncodeTime(15+Random(4), Random(60), Random(60), 0);
|
FExportDataSet.FieldByName('Work end').AsDateTime := EncodeTime(15+Random(4), Random(60), Random(60), 0);
|
||||||
|
FExportDataSet.FieldByName('Social sec').AsString := RandomNumberStr(16);
|
||||||
FExportDataset.Post;
|
FExportDataset.Post;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -408,11 +420,12 @@ begin
|
|||||||
Exporter.ExportFields.AddField('City');
|
Exporter.ExportFields.AddField('City');
|
||||||
Exporter.Execute;
|
Exporter.Execute;
|
||||||
|
|
||||||
// On the second sheet we want "Last name", "First name" and "Birthday"
|
// On the second sheet we want "Last name", "First name", "Birthday" and "Social security number"
|
||||||
Exporter.ExportFields.Clear;
|
Exporter.ExportFields.Clear;
|
||||||
Exporter.ExportFields.AddField('Last name');
|
Exporter.ExportFields.AddField('Last name');
|
||||||
Exporter.ExportFields.AddField('First name');
|
Exporter.ExportFields.AddField('First name');
|
||||||
Exporter.ExportFields.AddField('Birthday');
|
Exporter.ExportFields.AddField('Birthday');
|
||||||
|
Exporter.ExportFields.AddField('Social sec');
|
||||||
Exporter.Execute;
|
Exporter.Execute;
|
||||||
|
|
||||||
// On the third sheet we want "Last name", "First name" and "Income"
|
// On the third sheet we want "Last name", "First name" and "Income"
|
||||||
@ -538,6 +551,10 @@ begin
|
|||||||
FCurrencyTemplateCell := worksheet.GetCell(0, 2);
|
FCurrencyTemplateCell := worksheet.GetCell(0, 2);
|
||||||
worksheet.WriteNumberFormat(FCurrencyTemplateCell, nfCurrency);
|
worksheet.WriteNumberFormat(FCurrencyTemplateCell, nfCurrency);
|
||||||
|
|
||||||
|
// Use cell D1 as format template for social security number column
|
||||||
|
FSocialSecurityTemplatecell := worksheet.GetCell(0, 3);
|
||||||
|
worksheet.WriteNumberFormat(FSocialSecurityTemplateCell, nfText);
|
||||||
|
|
||||||
// Make rows a bit wider
|
// Make rows a bit wider
|
||||||
worksheet.WriteColWidth(0, 20);
|
worksheet.WriteColWidth(0, 20);
|
||||||
worksheet.WriteColWidth(1, 20);
|
worksheet.WriteColWidth(1, 20);
|
||||||
@ -684,8 +701,9 @@ begin
|
|||||||
if FExportDataset.Fields[ACol].DataType = ftDate then
|
if FExportDataset.Fields[ACol].DataType = ftDate then
|
||||||
AStyleCell := FDateTemplateCell
|
AStyleCell := FDateTemplateCell
|
||||||
else if FExportDataset.Fields[ACol].DataType = ftCurrency then
|
else if FExportDataset.Fields[ACol].DataType = ftCurrency then
|
||||||
AStyleCell := FCurrencyTemplateCell;
|
AStyleCell := FCurrencyTemplateCell
|
||||||
|
else if SameText(FExportDataset.Fields[ACol].FieldName, 'Social sec') then
|
||||||
|
AStyleCell := FSocialSecurityTemplateCell;
|
||||||
if ACol = Sender.VirtualColCount-1 then
|
if ACol = Sender.VirtualColCount-1 then
|
||||||
begin
|
begin
|
||||||
// Move to next record after last field has been written
|
// Move to next record after last field has been written
|
||||||
|
Reference in New Issue
Block a user