You've already forked lazarus-ccr
fpspreadsheet: Add units (mm, cm, in, pts, lines/chars) for column width and row heights. Update all demos (some issues left).
NOTE: This revision breaks existing code if the worksheet's DefaultRowHeight/DefaultColWidth is changed - value must be in millimeters now. Methods for accessing individual row heiths and column widths are fine, but are marked as deprecated, they use the old units. Optionally a unit parameter can be specified. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4568 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -46,7 +46,6 @@
|
|||||||
<ComponentName Value="Form1"/>
|
<ComponentName Value="Form1"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="main"/>
|
|
||||||
</Unit1>
|
</Unit1>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@ -8,7 +8,7 @@ object Form1: TForm1
|
|||||||
ClientWidth = 521
|
ClientWidth = 521
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
LCLVersion = '1.5'
|
LCLVersion = '1.7'
|
||||||
object PageControl: TPageControl
|
object PageControl: TPageControl
|
||||||
Left = 4
|
Left = 4
|
||||||
Height = 302
|
Height = 302
|
||||||
|
@ -127,6 +127,7 @@ var
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
startDate: TDate;
|
startDate: TDate;
|
||||||
maxAge: Integer = 80 * 365;
|
maxAge: Integer = 80 * 365;
|
||||||
|
f: TField;
|
||||||
begin
|
begin
|
||||||
if FExportDataset <> nil then
|
if FExportDataset <> nil then
|
||||||
FExportDataset.Free;
|
FExportDataset.Free;
|
||||||
@ -137,7 +138,7 @@ begin
|
|||||||
FExportDataset := TDbf.Create(self);
|
FExportDataset := TDbf.Create(self);
|
||||||
FExportDataset.FilePathFull := DATADIR + DirectorySeparator;
|
FExportDataset.FilePathFull := DATADIR + DirectorySeparator;
|
||||||
FExportDataset.TableName := TABLENAME;
|
FExportDataset.TableName := TABLENAME;
|
||||||
// FExportDataset.TableLevel := 4; // DBase IV: most widely used.
|
FExportDataset.TableLevel := 4; // DBase IV: most widely used.
|
||||||
FExportDataset.TableLevel := 25; // FoxPro supports FieldType nfCurrency
|
FExportDataset.TableLevel := 25; // FoxPro supports FieldType nfCurrency
|
||||||
FExportDataset.FieldDefs.Add('Last name', ftString);
|
FExportDataset.FieldDefs.Add('Last name', ftString);
|
||||||
FExportDataset.FieldDefs.Add('First name', ftString);
|
FExportDataset.FieldDefs.Add('First name', ftString);
|
||||||
@ -153,6 +154,7 @@ begin
|
|||||||
// We generate random records by combining first names, last names and cities
|
// We generate random records by combining first names, last names and cities
|
||||||
// defined in the FIRST_NAMES, LAST_NAMES and CITIES arrays. We also add a
|
// defined in the FIRST_NAMES, LAST_NAMES and CITIES arrays. We also add a
|
||||||
// random birthday.
|
// random birthday.
|
||||||
|
|
||||||
for i:=1 to StrToInt(EdRecordCount.Text) do begin
|
for i:=1 to StrToInt(EdRecordCount.Text) do begin
|
||||||
if (i mod 1000 = 0) then
|
if (i mod 1000 = 0) then
|
||||||
begin
|
begin
|
||||||
@ -165,8 +167,8 @@ begin
|
|||||||
FExportDataset.FieldByName('City').AsString := CITIES[Random(NUM_CITIES)];
|
FExportDataset.FieldByName('City').AsString := CITIES[Random(NUM_CITIES)];
|
||||||
FExportDataset.FieldByName('Birthday').AsDateTime := startDate - random(maxAge);
|
FExportDataset.FieldByName('Birthday').AsDateTime := startDate - random(maxAge);
|
||||||
FExportDataset.FieldByName('Salary').AsFloat := 1000+Random(9000);
|
FExportDataset.FieldByName('Salary').AsFloat := 1000+Random(9000);
|
||||||
FExportDataSet.FieldByName('Work begin').AsDateTime := 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.Post;
|
FExportDataset.Post;
|
||||||
end;
|
end;
|
||||||
FExportDataset.Close;
|
FExportDataset.Close;
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="demo_expression_parser.pas"/>
|
<Filename Value="demo_expression_parser.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="demo_expression_parser"/>
|
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="..\..\fpsexprparser.pas"/>
|
<Filename Value="..\..\fpsexprparser.pas"/>
|
||||||
|
@ -27,23 +27,26 @@ begin
|
|||||||
|
|
||||||
worksheet.WriteNumber(0, 0, 1); // A1
|
worksheet.WriteNumber(0, 0, 1); // A1
|
||||||
worksheet.WriteNumber(0, 1, 2.5); // B1
|
worksheet.WriteNumber(0, 1, 2.5); // B1
|
||||||
|
{
|
||||||
|
worksheet.WriteText(0, 0, 'Hallo'); // A1
|
||||||
|
worksheet.WriteText(0, 1, 'World'); // B1
|
||||||
|
}
|
||||||
|
|
||||||
worksheet.WriteUTF8Text(0, 0, 'Hallo'); // A1
|
{ Select one of these formulas }
|
||||||
worksheet.WriteUTF8Text(0, 1, 'World'); // B1
|
//cell := worksheet.WriteFormula(1, 0, '=4+5'); // A2
|
||||||
cell := worksheet.WriteFormula(1, 0, '=4+5'); // A2
|
//cell := worksheet.WriteFormula(1, 0, 'AND(TRUE(), TRUE(), TRUE())');
|
||||||
cell := worksheet.WriteFormula(2, 0, 'AND(TRUE(), TRUE(), TRUE())');
|
cell := worksheet.WriteFormula(1, 0, 'SIN(A1+B1)');
|
||||||
cell := worksheet.WriteFormula(3, 0, 'SIN(A1+B1)');
|
//cell := worksheet.WriteFormula(1, 0, '=TRUE()');
|
||||||
cell := worksheet.WriteFormula(4, 0, '=TRUE()');
|
//cell := worksheet.WriteFormula(1, 0, '=1-(4/2)^2*2-1'); // A2
|
||||||
cell := worksheet.WriteFormula(5, 0, '=1-(4/2)^2*2-1'); // A2
|
//cell := Worksheet.WriteFormula(1, 0, 'datedif(today(),Date(2014,1,1),"D")');
|
||||||
cell := Worksheet.WriteFormula(6, 0, 'datedif(today(),Date(2014,1,1),"D")');
|
//cell := Worksheet.WriteFormula(1, 0, 'Day(Date(2014, 1, 12))');
|
||||||
cell := Worksheet.WriteFormula(7, 0, 'Day(Date(2014, 1, 12))');
|
//cell := Worksheet.WriteFormula(1, 0, 'SUM(1,2,3)');
|
||||||
cell := Worksheet.WriteFormula(8, 0, 'SUM(1,2,3)');
|
//cell := Worksheet.WriteFormula(1, 0, 'CELL("address",A1)');
|
||||||
cell := Worksheet.WriteFormula(9, 0, 'CELL("address",A1)');
|
//cell := Worksheet.WriteFormula(1, 0, 'REPT("Hallo", 3)');
|
||||||
cell := Worksheet.WriteFormula(10, 0, 'REPT("Hallo", 3)');
|
//cell := Worksheet.WriteFormula(1, 0, '#REF!');
|
||||||
cell := Worksheet.WriteFormula(11, 0, '#REF!');
|
|
||||||
|
|
||||||
WriteLn('A1: ', worksheet.ReadAsUTF8Text(0, 0));
|
WriteLn('A1: ', worksheet.ReadAsText(0, 0));
|
||||||
WriteLn('B1: ', worksheet.ReadAsUTF8Text(0, 1));
|
WriteLn('B1: ', worksheet.ReadAsText(0, 1));
|
||||||
|
|
||||||
parser := TsSpreadsheetParser.Create(worksheet);
|
parser := TsSpreadsheetParser.Create(worksheet);
|
||||||
try
|
try
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="demo_recursive_calc.pas"/>
|
<Filename Value="demo_recursive_calc.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="demo_recursive_calc"/>
|
|
||||||
</Unit0>
|
</Unit0>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@ -32,24 +32,20 @@ begin
|
|||||||
worksheet := workbook.AddWorksheet('Calc_test');
|
worksheet := workbook.AddWorksheet('Calc_test');
|
||||||
worksheet.WriteColWidth(0, 20);
|
worksheet.WriteColWidth(0, 20);
|
||||||
|
|
||||||
// A1
|
worksheet.WriteUTF8Text(0, 0, '=B2+1'); // A1
|
||||||
worksheet.WriteUTF8Text(0, 0, '=B2+1');
|
worksheet.WriteFormula(0, 1, 'B2+1'); // B1
|
||||||
// B1
|
worksheet.WriteUTF8Text(1, 0, '=B3+1'); // A2
|
||||||
worksheet.WriteFormula(0, 1, 'B2+1');
|
worksheet.WriteFormula(1, 1, 'B3+1'); // B2
|
||||||
// A2
|
worksheet.WriteUTF8Text(2, 0, '(not dependent)'); // A3
|
||||||
worksheet.WriteUTF8Text(1, 0, '=B3+1');
|
worksheet.WriteNumber(2, 1, 1); // B3
|
||||||
// B2
|
|
||||||
worksheet.WriteFormula(1, 1, 'B3+1');
|
|
||||||
// A3
|
|
||||||
worksheet.WriteUTF8Text(2, 0, '(not dependent)');
|
|
||||||
// B3
|
|
||||||
worksheet.WriteNumber(2, 1, 1);
|
|
||||||
|
|
||||||
workbook.WriteToFile(OutputFile, sfExcel8, true);
|
workbook.WriteToFile(OutputFile, sfExcel8, true);
|
||||||
writeln('Finished.');
|
writeln('Finished.');
|
||||||
writeln;
|
writeln;
|
||||||
writeln('Please open "'+OutputFile+'" in "fpsgrid".');
|
writeln('Please open "'+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.');
|
||||||
|
|
||||||
|
ReadLn;
|
||||||
finally
|
finally
|
||||||
workbook.Free;
|
workbook.Free;
|
||||||
end;
|
end;
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="demo_sorting.pas"/>
|
<Filename Value="demo_sorting.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="demo_sorting"/>
|
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="..\..\fpsexprparser.pas"/>
|
<Filename Value="..\..\fpsexprparser.pas"/>
|
||||||
|
@ -289,16 +289,16 @@ var
|
|||||||
try
|
try
|
||||||
worksheet := workbook.AddWorksheet('Test');
|
worksheet := workbook.AddWorksheet('Test');
|
||||||
|
|
||||||
worksheet.WriteUTF8Text(0, 0, 'E');
|
worksheet.WriteText(0, 0, 'E');
|
||||||
worksheet.WriteUTF8Text(1, 0, 'E');
|
worksheet.WriteText(1, 0, 'E');
|
||||||
worksheet.WriteUTF8Text(2, 0, 'C');
|
worksheet.WriteText(2, 0, 'C');
|
||||||
worksheet.WriteUTF8Text(3, 0, 'B');
|
worksheet.WriteText(3, 0, 'B');
|
||||||
worksheet.WriteUTF8Text(4, 0, 'D');
|
worksheet.WriteText(4, 0, 'D');
|
||||||
worksheet.WriteUTF8Text(5, 0, 'D');
|
worksheet.WriteText(5, 0, 'D');
|
||||||
worksheet.WriteUTF8Text(6, 0, 'A');
|
worksheet.WriteText(6, 0, 'A');
|
||||||
worksheet.WriteUTF8Text(7, 0, 'B');
|
worksheet.WriteText(7, 0, 'B');
|
||||||
worksheet.WriteUTF8Text(8, 0, 'C');
|
worksheet.WriteText(8, 0, 'C');
|
||||||
worksheet.WriteUTF8Text(9, 0, 'A');
|
worksheet.WriteText(9, 0, 'A');
|
||||||
|
|
||||||
worksheet.WriteNumber(0, 1, 9); // A2 --> E
|
worksheet.WriteNumber(0, 1, 9); // A2 --> E
|
||||||
worksheet.WriteNumber(1, 1, 8); // B2 --> E
|
worksheet.WriteNumber(1, 1, 8); // B2 --> E
|
||||||
@ -322,7 +322,7 @@ var
|
|||||||
WriteLn(#9, 'A', #9, 'B');
|
WriteLn(#9, 'A', #9, 'B');
|
||||||
for i:=0 to 9 do
|
for i:=0 to 9 do
|
||||||
begin
|
begin
|
||||||
s := worksheet.ReadAsUTF8Text(i, 0);
|
s := worksheet.ReadAsText(i, 0);
|
||||||
n := worksheet.ReadAsNumber(i, 1);
|
n := worksheet.ReadAsNumber(i, 1);
|
||||||
WriteLn(i, #9, s, #9, FloatToStr(n));
|
WriteLn(i, #9, s, #9, FloatToStr(n));
|
||||||
end;
|
end;
|
||||||
@ -345,16 +345,16 @@ var
|
|||||||
try
|
try
|
||||||
worksheet := workbook.AddWorksheet('Test');
|
worksheet := workbook.AddWorksheet('Test');
|
||||||
|
|
||||||
worksheet.WriteUTF8Text(0, 0, 'E');
|
worksheet.WriteText(0, 0, 'E');
|
||||||
worksheet.WriteUTF8Text(0, 1, 'E');
|
worksheet.WriteText(0, 1, 'E');
|
||||||
worksheet.WriteUTF8Text(0, 2, 'C');
|
worksheet.WriteText(0, 2, 'C');
|
||||||
worksheet.WriteUTF8Text(0, 3, 'B');
|
worksheet.WriteText(0, 3, 'B');
|
||||||
worksheet.WriteUTF8Text(0, 4, 'D');
|
worksheet.WriteText(0, 4, 'D');
|
||||||
worksheet.WriteUTF8Text(0, 5, 'D');
|
worksheet.WriteText(0, 5, 'D');
|
||||||
worksheet.WriteUTF8Text(0, 6, 'A');
|
worksheet.WriteText(0, 6, 'A');
|
||||||
worksheet.WriteUTF8Text(0, 7, 'B');
|
worksheet.WriteText(0, 7, 'B');
|
||||||
worksheet.WriteUTF8Text(0, 8, 'C');
|
worksheet.WriteText(0, 8, 'C');
|
||||||
worksheet.WriteUTF8Text(0, 9, 'A');
|
worksheet.WriteText(0, 9, 'A');
|
||||||
|
|
||||||
worksheet.WriteNumber(1, 0, 9); // A2 --> E
|
worksheet.WriteNumber(1, 0, 9); // A2 --> E
|
||||||
worksheet.WriteNumber(1, 1, 8); // B2 --> E
|
worksheet.WriteNumber(1, 1, 8); // B2 --> E
|
||||||
@ -382,7 +382,7 @@ var
|
|||||||
|
|
||||||
Write('1', #9);
|
Write('1', #9);
|
||||||
for i:=0 to 9 do
|
for i:=0 to 9 do
|
||||||
Write(worksheet.ReadAsUTF8Text(0, i), #9);
|
Write(worksheet.ReadAsText(0, i), #9);
|
||||||
WriteLn;
|
WriteLn;
|
||||||
|
|
||||||
Write('2', #9);
|
Write('2', #9);
|
||||||
@ -411,5 +411,7 @@ begin
|
|||||||
|
|
||||||
SortTwoColumns_TwoKeys_1;
|
SortTwoColumns_TwoKeys_1;
|
||||||
SortTwoRows_TwoKeys_1;
|
SortTwoRows_TwoKeys_1;
|
||||||
|
|
||||||
|
ReadLn;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ begin
|
|||||||
// Write colors to worksheet
|
// Write colors to worksheet
|
||||||
for row := 0 to palette.Count-1 do begin
|
for row := 0 to palette.Count-1 do begin
|
||||||
Myworksheet.WriteBackgroundColor(row, 0, palette[row]);
|
Myworksheet.WriteBackgroundColor(row, 0, palette[row]);
|
||||||
Myworksheet.WriteUTF8Text(row, 0, GetColorName(palette[row]));
|
Myworksheet.WriteText(row, 0, GetColorName(palette[row]));
|
||||||
MyWorksheet.WriteFontColor(row, 0, HighContrastColor(palette[row]));
|
MyWorksheet.WriteFontColor(row, 0, HighContrastColor(palette[row]));
|
||||||
MyWorksheet.WriteHorAlignment(row, 0, haCenter);
|
MyWorksheet.WriteHorAlignment(row, 0, haCenter);
|
||||||
end;
|
end;
|
||||||
@ -49,7 +49,7 @@ begin
|
|||||||
palette.Free;
|
palette.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
MyWorksheet.WriteColWidth(0, 25);
|
MyWorksheet.WriteColWidth(0, 5.0, suCentimeters);
|
||||||
|
|
||||||
// Save the spreadsheet to a file
|
// Save the spreadsheet to a file
|
||||||
MyWorkbook.WriteToFile(MyDir + TestFile, sfExcel8, True);
|
MyWorkbook.WriteToFile(MyDir + TestFile, sfExcel8, True);
|
||||||
|
@ -26,69 +26,69 @@ begin
|
|||||||
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
|
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
|
||||||
|
|
||||||
// Write some cells
|
// Write some cells
|
||||||
MyWorksheet.WriteUTF8Text(1, 0, 'Border');// A2
|
MyWorksheet.WriteText(1, 0, 'Border'); // A2
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 1, '[]'); // B2
|
MyWorksheet.WriteText(1, 1, '[]'); // B2
|
||||||
MyCell := MyWorksheet.GetCell(1, 1);
|
MyCell := MyWorksheet.GetCell(1, 1);
|
||||||
MyCell^.Border := [];
|
MyCell^.Border := [];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 3, '[N]');// D2
|
MyWorksheet.WriteText(1, 3, '[N]'); // D2
|
||||||
MyCell := MyWorksheet.GetCell(1, 3);
|
MyCell := MyWorksheet.GetCell(1, 3);
|
||||||
MyCell^.Border := [cbNorth];
|
MyCell^.Border := [cbNorth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 5, '[W]');// F2
|
MyWorksheet.WriteText(1, 5, '[W]'); // F2
|
||||||
MyCell := MyWorksheet.GetCell(1, 5);
|
MyCell := MyWorksheet.GetCell(1, 5);
|
||||||
MyCell^.Border := [cbWest];
|
MyCell^.Border := [cbWest];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 7, '[E]');// H2
|
MyWorksheet.WriteText(1, 7, '[E]'); // H2
|
||||||
MyCell := MyWorksheet.GetCell(1, 7);
|
MyCell := MyWorksheet.GetCell(1, 7);
|
||||||
MyCell^.Border := [cbEast];
|
MyCell^.Border := [cbEast];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 9, '[S]');// J2
|
MyWorksheet.WriteText(1, 9, '[S]'); // J2
|
||||||
MyCell := MyWorksheet.GetCell(1, 9);
|
MyCell := MyWorksheet.GetCell(1, 9);
|
||||||
MyCell^.Border := [cbSouth];
|
MyCell^.Border := [cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 1, '[N,W]');// B4
|
MyWorksheet.WriteText(3, 1, '[N,W]'); // B4
|
||||||
MyCell := MyWorksheet.GetCell(3, 1);
|
MyCell := MyWorksheet.GetCell(3, 1);
|
||||||
MyCell^.Border := [cbNorth, cbWest];
|
MyCell^.Border := [cbNorth, cbWest];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 3, '[N,E]');// D4
|
MyWorksheet.WriteText(3, 3, '[N,E]'); // D4
|
||||||
MyCell := MyWorksheet.GetCell(3, 3);
|
MyCell := MyWorksheet.GetCell(3, 3);
|
||||||
MyCell^.Border := [cbNorth, cbEast];
|
MyCell^.Border := [cbNorth, cbEast];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 5, '[N,S]');// F4
|
MyWorksheet.WriteText(3, 5, '[N,S]'); // F4
|
||||||
MyCell := MyWorksheet.GetCell(3, 5);
|
MyCell := MyWorksheet.GetCell(3, 5);
|
||||||
MyCell^.Border := [cbNorth, cbSouth];
|
MyCell^.Border := [cbNorth, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 7, '[W,E]');// H4
|
MyWorksheet.WriteText(3, 7, '[W,E]'); // H4
|
||||||
MyCell := MyWorksheet.GetCell(3, 7);
|
MyCell := MyWorksheet.GetCell(3, 7);
|
||||||
MyCell^.Border := [cbWest, cbEast];
|
MyCell^.Border := [cbWest, cbEast];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 9, '[W,S]');// J4
|
MyWorksheet.WriteText(3, 9, '[W,S]'); // J4
|
||||||
MyCell := MyWorksheet.GetCell(3, 9);
|
MyCell := MyWorksheet.GetCell(3, 9);
|
||||||
MyCell^.Border := [cbWest, cbSouth];
|
MyCell^.Border := [cbWest, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 11, '[E,S]');// L4
|
MyWorksheet.WriteText(3, 11, '[E,S]'); // L4
|
||||||
MyCell := MyWorksheet.GetCell(3, 11);
|
MyCell := MyWorksheet.GetCell(3, 11);
|
||||||
MyCell^.Border := [cbEast, cbSouth];
|
MyCell^.Border := [cbEast, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(5, 1, '[N,W,E]');// B6
|
MyWorksheet.WriteText(5, 1, '[N,W,E]');// B6
|
||||||
MyCell := MyWorksheet.GetCell(5, 1);
|
MyCell := MyWorksheet.GetCell(5, 1);
|
||||||
MyCell^.Border := [cbNorth, cbWest, cbEast];
|
MyCell^.Border := [cbNorth, cbWest, cbEast];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(5, 3, '[N,W,S]');// D6
|
MyWorksheet.WriteText(5, 3, '[N,W,S]');// D6
|
||||||
MyCell := MyWorksheet.GetCell(5, 3);
|
MyCell := MyWorksheet.GetCell(5, 3);
|
||||||
MyCell^.Border := [cbNorth, cbWest, cbSouth];
|
MyCell^.Border := [cbNorth, cbWest, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(5, 5, '[N,E,S]');// F6
|
MyWorksheet.WriteText(5, 5, '[N,E,S]');// F6
|
||||||
MyCell := MyWorksheet.GetCell(5, 5);
|
MyCell := MyWorksheet.GetCell(5, 5);
|
||||||
MyCell^.Border := [cbNorth, cbEast, cbSouth];
|
MyCell^.Border := [cbNorth, cbEast, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(5, 7, '[W,E,S]');// H6
|
MyWorksheet.WriteText(5, 7, '[W,E,S]');// H6
|
||||||
MyCell := MyWorksheet.GetCell(5, 7);
|
MyCell := MyWorksheet.GetCell(5, 7);
|
||||||
MyCell^.Border := [cbWest, cbEast, cbSouth];
|
MyCell^.Border := [cbWest, cbEast, cbSouth];
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6
|
MyWorksheet.WriteText(5, 9, '[N,W,E,S]');// J6
|
||||||
MyCell := MyWorksheet.GetCell(5, 9);
|
MyCell := MyWorksheet.GetCell(5, 9);
|
||||||
MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
|
MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth];
|
||||||
MyCell^.BackgroundColor := scGreen;
|
MyCell^.BackgroundColor := scGreen;
|
||||||
@ -102,36 +102,36 @@ begin
|
|||||||
|
|
||||||
// Line 1
|
// Line 1
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 1, 'Relatório');
|
MyWorksheet.WriteText(1, 1, 'Relatório');
|
||||||
MyCell := MyWorksheet.GetCell(1, 1);
|
MyCell := MyWorksheet.GetCell(1, 1);
|
||||||
MyCell^.Border := [cbNorth, cbWest, cbSouth];
|
MyCell^.Border := [cbNorth, cbWest, cbSouth];
|
||||||
MyCell^.BackgroundColor := scGrey20pct;
|
MyCell^.BackgroundColor := scGrey20pct;
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 2, ' ');
|
MyWorksheet.WriteText(1, 2, ' ');
|
||||||
MyCell := MyWorksheet.GetCell(1, 2);
|
MyCell := MyWorksheet.GetCell(1, 2);
|
||||||
MyCell^.Border := [cbNorth, cbEast, cbSouth];
|
MyCell^.Border := [cbNorth, cbEast, cbSouth];
|
||||||
MyCell^.BackgroundColor := scGrey20pct;
|
MyCell^.BackgroundColor := scGrey20pct;
|
||||||
|
|
||||||
// Line 2
|
// Line 2
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(2, 1, 'Compras');
|
MyWorksheet.WriteText(2, 1, 'Compras');
|
||||||
MyCell := MyWorksheet.GetCell(2, 1);
|
MyCell := MyWorksheet.GetCell(2, 1);
|
||||||
MyCell^.Border := [cbWest];
|
MyCell^.Border := [cbWest];
|
||||||
MyCell^.BackgroundColor := scGrey10pct;
|
MyCell^.BackgroundColor := scGrey10pct;
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(2, 2, 'R$ 20');
|
MyWorksheet.WriteText(2, 2, 'R$ 20');
|
||||||
MyCell := MyWorksheet.GetCell(2, 2);
|
MyCell := MyWorksheet.GetCell(2, 2);
|
||||||
MyCell^.Border := [cbEast];
|
MyCell^.Border := [cbEast];
|
||||||
MyCell^.BackgroundColor := scGrey10pct;
|
MyCell^.BackgroundColor := scGrey10pct;
|
||||||
|
|
||||||
// Line 3
|
// Line 3
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 1, 'Total:');
|
MyWorksheet.WriteText(3, 1, 'Total:');
|
||||||
MyCell := MyWorksheet.GetCell(3, 1);
|
MyCell := MyWorksheet.GetCell(3, 1);
|
||||||
MyCell^.Border := [cbWest, cbSouth];
|
MyCell^.Border := [cbWest, cbSouth];
|
||||||
MyCell^.BackgroundColor := scGrey10pct;
|
MyCell^.BackgroundColor := scGrey10pct;
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(3, 2, 'R$ 20');
|
MyWorksheet.WriteText(3, 2, 'R$ 20');
|
||||||
MyCell := MyWorksheet.GetCell(3, 2);
|
MyCell := MyWorksheet.GetCell(3, 2);
|
||||||
MyCell^.Border := [cbEast, cbSouth];
|
MyCell^.Border := [cbEast, cbSouth];
|
||||||
MyCell^.BackgroundColor := scGrey10pct;
|
MyCell^.BackgroundColor := scGrey10pct;
|
||||||
|
@ -29,8 +29,8 @@ begin
|
|||||||
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
|
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
|
||||||
|
|
||||||
// Write some cells
|
// Write some cells
|
||||||
MyWorksheet.WriteUTF8Text(0, 1, 'Text Formula');// B1
|
MyWorksheet.WriteText(0, 1, 'Text Formula');// B1
|
||||||
MyWorksheet.WriteUTF8Text(0, 2, 'RPN');// C1
|
MyWorksheet.WriteText(0, 2, 'RPN'); // C1
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(0, 4, -3.14); // E1
|
MyWorksheet.WriteNumber(0, 4, -3.14); // E1
|
||||||
MyWorksheet.WriteNumber(1, 4, 100); // E2
|
MyWorksheet.WriteNumber(1, 4, 100); // E2
|
||||||
@ -39,7 +39,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(4, 4, 250); // E5
|
MyWorksheet.WriteNumber(4, 4, 250); // E5
|
||||||
|
|
||||||
// =Sum(E2:E5)
|
// =Sum(E2:E5)
|
||||||
MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:E5)'); // A2
|
MyWorksheet.WriteText(1, 0, '=Sum(E2:E5)'); // A2
|
||||||
MyFormula := '=Sum(E2:E5)';
|
MyFormula := '=Sum(E2:E5)';
|
||||||
MyWorksheet.WriteFormula(1, 1, MyFormula); // B2
|
MyWorksheet.WriteFormula(1, 1, MyFormula); // B2
|
||||||
MyWorksheet.WriteRPNFormula(1, 2, CreateRPNFormula( // C2
|
MyWorksheet.WriteRPNFormula(1, 2, CreateRPNFormula( // C2
|
||||||
@ -48,7 +48,7 @@ begin
|
|||||||
nil))));
|
nil))));
|
||||||
|
|
||||||
// Write the formula =ABS(E1)
|
// Write the formula =ABS(E1)
|
||||||
MyWorksheet.WriteUTF8Text(2, 0, '=ABS(E1)'); // A3
|
MyWorksheet.WriteText(2, 0, '=ABS(E1)'); // A3
|
||||||
MyWorksheet.WriteFormula(2, 1, 'ABS(E1)'); // B3
|
MyWorksheet.WriteFormula(2, 1, 'ABS(E1)'); // B3
|
||||||
MyWorksheet.WriteRPNFormula(2, 2, CreateRPNFormula( // C3
|
MyWorksheet.WriteRPNFormula(2, 2, CreateRPNFormula( // C3
|
||||||
RPNCellValue('E1',
|
RPNCellValue('E1',
|
||||||
@ -56,7 +56,7 @@ begin
|
|||||||
nil))));
|
nil))));
|
||||||
|
|
||||||
// Write the formula =4+5
|
// Write the formula =4+5
|
||||||
MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
|
MyWorksheet.WriteText(3, 0, '=4+5'); // A4
|
||||||
MyWorksheet.WriteFormula(3, 1, '=4+5'); // B4
|
MyWorksheet.WriteFormula(3, 1, '=4+5'); // B4
|
||||||
MyWorksheet.WriteRPNFormula(3, 2, CreateRPNFormula( //C4
|
MyWorksheet.WriteRPNFormula(3, 2, CreateRPNFormula( //C4
|
||||||
RPNNumber(4.0,
|
RPNNumber(4.0,
|
||||||
@ -73,7 +73,7 @@ begin
|
|||||||
|
|
||||||
// Line 1
|
// Line 1
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(1, 1, 'Relatório');
|
MyWorksheet.WriteText(1, 1, 'Relatório');
|
||||||
MyCell := MyWorksheet.GetCell(1, 1);
|
MyCell := MyWorksheet.GetCell(1, 1);
|
||||||
MyWorksheet.WriteBorders(MyCell, [cbNorth, cbWest, cbSouth]);
|
MyWorksheet.WriteBorders(MyCell, [cbNorth, cbWest, cbSouth]);
|
||||||
Myworksheet.WriteBackgroundColor(MyCell, scGray20pct);
|
Myworksheet.WriteBackgroundColor(MyCell, scGray20pct);
|
||||||
|
@ -10,8 +10,7 @@ var
|
|||||||
MyWorkbook: TsWorkbook;
|
MyWorkbook: TsWorkbook;
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
MyDir: string;
|
MyDir: string;
|
||||||
cell: PCell;
|
i: Integer;
|
||||||
i, r, c: Integer;
|
|
||||||
|
|
||||||
const
|
const
|
||||||
image1 = '../../images/components/TSWORKBOOKSOURCE.png';
|
image1 = '../../images/components/TSWORKBOOKSOURCE.png';
|
||||||
@ -25,7 +24,11 @@ begin
|
|||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
try
|
try
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('Sheet 1');
|
MyWorksheet := MyWorkbook.AddWorksheet('Sheet 1');
|
||||||
MyWorksheet.DefaultRowHeight := 1.2;
|
|
||||||
|
for i:=0 to 20 do
|
||||||
|
MyWorksheet.WriteRowHeight(i, 4.5, suMillimeters);
|
||||||
|
// MyWorksheet.DefaultRowHeight := 4.5; // millimeters
|
||||||
|
|
||||||
MyWorksheet.WriteText(0, 0, 'There are images in cells A3 and B3'); //
|
MyWorksheet.WriteText(0, 0, 'There are images in cells A3 and B3'); //
|
||||||
// These images are offset by 1mm in both directions from the top/left cell edge
|
// These images are offset by 1mm in both directions from the top/left cell edge
|
||||||
MyWorksheet.WriteImage(2, 0, image1, 1.0, 1.0, 2.0, 2.0); // This image is magnified by factor 2
|
MyWorksheet.WriteImage(2, 0, image1, 1.0, 1.0, 2.0, 2.0); // This image is magnified by factor 2
|
||||||
|
@ -54,7 +54,7 @@ begin
|
|||||||
WriteLn(
|
WriteLn(
|
||||||
'Row: ', CurCell^.Row,
|
'Row: ', CurCell^.Row,
|
||||||
' Col: ', CurCell^.Col,
|
' Col: ', CurCell^.Col,
|
||||||
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
|
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
|
||||||
);
|
);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -62,5 +62,11 @@ begin
|
|||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$ifdef WINDOWS}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -29,10 +29,10 @@ begin
|
|||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
|
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
|
||||||
|
|
||||||
//MyWorksheet.WriteColWidth(0, 5);
|
// Note: ColWidth and RowHeight is not available in CSV
|
||||||
//MyWorksheet.WriteColWidth(1, 30);
|
MyWorksheet.WriteColWidth(0, 5, suChars);
|
||||||
|
MyWorksheet.WriteColWidth(1, 30, suChars);
|
||||||
MyWorksheet.WriteRowHeight(0, 3); // 3 lines
|
MyWorksheet.WriteRowHeight(0, 3, suLines); // 3 lines
|
||||||
|
|
||||||
// Turn off grid lines and hide headers
|
// Turn off grid lines and hide headers
|
||||||
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
|
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
|
||||||
@ -49,32 +49,32 @@ begin
|
|||||||
MyWorksheet.WriteNumber(0, 3, 4.0);
|
MyWorksheet.WriteNumber(0, 3, 4.0);
|
||||||
|
|
||||||
// Write some string cells
|
// Write some string cells
|
||||||
MyWorksheet.WriteUTF8Text(1, 0, 'First');
|
MyWorksheet.WriteText(1, 0, 'First');
|
||||||
MyWorksheet.WriteFont (1, 0, 'Arial', 12, [fssBold, fssItalic, fssUnderline], scRed);
|
MyWorksheet.WriteFont (1, 0, 'Arial', 12, [fssBold, fssItalic, fssUnderline], scRed);
|
||||||
MyWorksheet.WriteUTF8Text(1, 1, 'Second');
|
MyWorksheet.WriteText(1, 1, 'Second');
|
||||||
MyWorksheet.WriteUTF8Text(1, 2, 'Third');
|
MyWorksheet.WriteText(1, 2, 'Third');
|
||||||
MyWorksheet.WriteUTF8Text(1, 3, 'Fourth');
|
MyWorksheet.WriteText(1, 3, 'Fourth');
|
||||||
|
|
||||||
// Write current date/time
|
// Write current date/time
|
||||||
MyWorksheet.WriteDateTime(2, 0, now);
|
MyWorksheet.WriteDateTime(2, 0, now);
|
||||||
|
|
||||||
// Write cell with background color
|
// Write cell with background color
|
||||||
MyWorksheet.WriteUTF8Text(3, 0, 'Text');
|
MyWorksheet.WriteText(3, 0, 'Text');
|
||||||
MyWorksheet.WriteBackgroundColor(3, 0, scSilver);
|
MyWorksheet.WriteBackgroundColor(3, 0, scSilver);
|
||||||
|
|
||||||
// Empty cell with background color
|
// Empty cell with background color
|
||||||
MyWorksheet.WriteBackgroundColor(3, 1, scGrey);
|
MyWorksheet.WriteBackgroundColor(3, 1, scGrey);
|
||||||
|
|
||||||
// Cell2 with top and bottom borders
|
// Cell2 with top and bottom borders
|
||||||
MyWorksheet.WriteUTF8Text(4, 0, 'Text');
|
MyWorksheet.WriteText(4, 0, 'Text');
|
||||||
MyWorksheet.WriteBorders(4, 0, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 0, [cbNorth, cbSouth]);
|
||||||
MyWorksheet.WriteBorders(4, 1, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 1, [cbNorth, cbSouth]);
|
||||||
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
|
||||||
|
|
||||||
// Left, center, right aligned texts
|
// Left, center, right aligned texts
|
||||||
MyWorksheet.WriteUTF8Text(5, 0, 'L');
|
MyWorksheet.WriteText(5, 0, 'L');
|
||||||
MyWorksheet.WriteUTF8Text(5, 1, 'C');
|
MyWorksheet.WriteText(5, 1, 'C');
|
||||||
MyWorksheet.WriteUTF8Text(5, 2, 'R');
|
MyWorksheet.WriteText(5, 2, 'R');
|
||||||
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
|
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
|
||||||
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
|
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
|
||||||
MyWorksheet.WriteHorAlignment(5, 2, haRight);
|
MyWorksheet.WriteHorAlignment(5, 2, haRight);
|
||||||
@ -93,96 +93,96 @@ begin
|
|||||||
// Write current date/time and test numbers for various formatting options
|
// Write current date/time and test numbers for various formatting options
|
||||||
|
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
|
MyWorksheet.WriteText(r, 0, 'nfShortDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
|
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
|
MyWorksheet.WriteText(r, 0, 'nfLongTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, ''dd/mmm''');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, ''dd/mmm''');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm''');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm''');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, ''mmm/yy''');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, ''mmm/yy''');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss.z');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss.z');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, mm:ss.zzz');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, mm:ss.zzz');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mm:ss.zzz');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mm:ss.zzz');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
|
|
||||||
// Write formatted numbers
|
// Write formatted numbers
|
||||||
number := 12345.67890123456789;
|
number := 12345.67890123456789;
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
|
MyWorksheet.WriteText(r, 1, '12345.67890123456789');
|
||||||
MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
|
MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
|
MyWorksheet.WriteText(r, 0, 'nfGeneral');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 1 dec');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 1 dec');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
||||||
@ -192,13 +192,13 @@ begin
|
|||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 4, scGray);
|
MyWorksheet.WriteFontColor(r, 4, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
||||||
@ -208,17 +208,17 @@ begin
|
|||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 4, scGray);
|
MyWorksheet.WriteFontColor(r, 4, scGray);
|
||||||
inc(r,2);
|
inc(r,2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrency, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfCurrency, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, '$');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, '$');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrencyRed, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfCurrencyRed, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
@ -226,7 +226,7 @@ begin
|
|||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
@ -235,7 +235,7 @@ begin
|
|||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
@ -244,7 +244,7 @@ begin
|
|||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
@ -252,7 +252,7 @@ begin
|
|||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 2, scGray);
|
MyWorksheet.WriteFontColor(r, 2, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
@ -264,34 +264,34 @@ begin
|
|||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
|
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm:ss');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m:s');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m:s');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
||||||
MyWorksheet.WriteFontColor(r, 1, scGray);
|
MyWorksheet.WriteFontColor(r, 1, scGray);
|
||||||
inc(r);
|
inc(r);
|
||||||
|
@ -47,7 +47,7 @@ begin
|
|||||||
for CurCell in MyWorksheet.Cells do
|
for CurCell in MyWorksheet.Cells do
|
||||||
begin
|
begin
|
||||||
Write('Row: ', CurCell^.Row, ' Col: ', CurCell^.Col, ' Value: ',
|
Write('Row: ', CurCell^.Row, ' Col: ', CurCell^.Col, ' Value: ',
|
||||||
UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
|
UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
|
||||||
);
|
);
|
||||||
if HasFormula(CurCell) then
|
if HasFormula(CurCell) then
|
||||||
Write(' (Formula ', CurCell^.FormulaValue, ')');
|
Write(' (Formula ', CurCell^.FormulaValue, ')');
|
||||||
@ -58,5 +58,11 @@ begin
|
|||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$ifdef Windows}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$endif}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -21,10 +21,9 @@ var
|
|||||||
MyRPNFormula: TsRPNFormula;
|
MyRPNFormula: TsRPNFormula;
|
||||||
MyDir: string;
|
MyDir: string;
|
||||||
number: Double;
|
number: Double;
|
||||||
lCol: TCol;
|
|
||||||
lRow: TRow;
|
|
||||||
r: Integer;
|
r: Integer;
|
||||||
fmt: String;
|
fmt: String;
|
||||||
|
lCol: TCol;
|
||||||
begin
|
begin
|
||||||
// Open the output file
|
// Open the output file
|
||||||
MyDir := ExtractFilePath(ParamStr(0));
|
MyDir := ExtractFilePath(ParamStr(0));
|
||||||
@ -33,11 +32,6 @@ begin
|
|||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
|
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
|
||||||
|
|
||||||
//MyWorksheet.WriteColWidth(0, 5);
|
|
||||||
//MyWorksheet.WriteColWidth(1, 30);
|
|
||||||
|
|
||||||
MyWorksheet.WriteRowHeight(0, 3); // 3 lines
|
|
||||||
|
|
||||||
// Turn off grid lines and hide headers
|
// Turn off grid lines and hide headers
|
||||||
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
|
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
|
||||||
|
|
||||||
@ -81,32 +75,32 @@ begin
|
|||||||
MyWorksheet.WriteFormula(0, 7, '=SIN(A1+B1)');
|
MyWorksheet.WriteFormula(0, 7, '=SIN(A1+B1)');
|
||||||
|
|
||||||
// Write some string cells
|
// Write some string cells
|
||||||
MyWorksheet.WriteUTF8Text(1, 0, 'First');
|
MyWorksheet.WriteText(1, 0, 'First');
|
||||||
MyWorksheet.WriteFont(1, 0, 'Arial', 12, [fssBold, fssItalic, fssUnderline], scRed);
|
MyWorksheet.WriteFont(1, 0, 'Arial', 12, [fssBold, fssItalic, fssUnderline], scRed);
|
||||||
MyWorksheet.WriteUTF8Text(1, 1, 'Second');
|
MyWorksheet.WriteText(1, 1, 'Second');
|
||||||
MyWorksheet.WriteUTF8Text(1, 2, 'Third');
|
MyWorksheet.WriteText(1, 2, 'Third');
|
||||||
MyWorksheet.WriteUTF8Text(1, 3, 'Fourth');
|
MyWorksheet.WriteText(1, 3, 'Fourth');
|
||||||
|
|
||||||
// Write current date/time
|
// Write current date/time
|
||||||
MyWorksheet.WriteDateTime(2, 0, now);
|
MyWorksheet.WriteDateTime(2, 0, now);
|
||||||
|
|
||||||
// Write cell with background color
|
// Write cell with background color
|
||||||
MyWorksheet.WriteUTF8Text(3, 0, 'Text');
|
MyWorksheet.WriteText(3, 0, 'Text');
|
||||||
MyWorksheet.WriteBackgroundColor(3, 0, NA_COLOR);
|
MyWorksheet.WriteBackgroundColor(3, 0, NA_COLOR);
|
||||||
|
|
||||||
// Empty cell with background color
|
// Empty cell with background color
|
||||||
MyWorksheet.WriteBackgroundColor(3, 1, NA_COLOR);
|
MyWorksheet.WriteBackgroundColor(3, 1, NA_COLOR);
|
||||||
|
|
||||||
// Cell2 with top and bottom borders
|
// Cell2 with top and bottom borders
|
||||||
MyWorksheet.WriteUTF8Text(4, 0, 'Text');
|
MyWorksheet.WriteText(4, 0, 'Text');
|
||||||
MyWorksheet.WriteBorders(4, 0, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 0, [cbNorth, cbSouth]);
|
||||||
MyWorksheet.WriteBorders(4, 1, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 1, [cbNorth, cbSouth]);
|
||||||
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
|
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
|
||||||
|
|
||||||
// Left, center, right aligned texts
|
// Left, center, right aligned texts
|
||||||
MyWorksheet.WriteUTF8Text(5, 0, 'L');
|
MyWorksheet.WriteText(5, 0, 'L');
|
||||||
MyWorksheet.WriteUTF8Text(5, 1, 'C');
|
MyWorksheet.WriteText(5, 1, 'C');
|
||||||
MyWorksheet.WriteUTF8Text(5, 2, 'R');
|
MyWorksheet.WriteText(5, 2, 'R');
|
||||||
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
|
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
|
||||||
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
|
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
|
||||||
MyWorksheet.WriteHorAlignment(5, 2, haRight);
|
MyWorksheet.WriteHorAlignment(5, 2, haRight);
|
||||||
@ -124,99 +118,100 @@ begin
|
|||||||
r:= 10;
|
r:= 10;
|
||||||
// Write current date/time and test numbers for various formatting options
|
// Write current date/time and test numbers for various formatting options
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(r, 1, 'Formats in cyan cells are not supported by BIFF2');
|
MyWorksheet.WriteText(r, 1, 'Formats in cyan cells are not supported by BIFF2');
|
||||||
|
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
|
MyWorksheet.WriteText(r, 0, 'nfShortDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
|
MyWorksheet.WriteText(r, 0, 'nfLongDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
|
MyWorksheet.WriteText(r, 0, 'nfLongTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfDayMonth');
|
MyWorksheet.WriteText(r, 0, 'nfDayMonth');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfDayMonth);
|
MyWorksheet.WriteDateTime(r, 1, now, nfDayMonth);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfMonthYear');
|
MyWorksheet.WriteText(r, 0, 'nfMonthYear');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfMonthYear);
|
MyWorksheet.WriteDateTime(r, 1, now, nfMonthYear);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss.z');
|
(* FIXME: These millisecond formats cause an Excel format warning
|
||||||
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss.z');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, mm:ss.zzz');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, mm:ss.zzz');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mm:ss.zzz');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mm:ss.zzz');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
|
*)
|
||||||
// Write formatted numbers
|
// Write formatted numbers
|
||||||
number := 12345.67890123456789;
|
number := 12345.67890123456789;
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
|
MyWorksheet.WriteText(r, 1, '12345.67890123456789');
|
||||||
MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
|
MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
|
MyWorksheet.WriteText(r, 0, 'nfGeneral');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 1 dec');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 1 dec');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
||||||
@ -226,13 +221,13 @@ begin
|
|||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
||||||
@ -242,23 +237,25 @@ begin
|
|||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
|
||||||
inc(r,2);
|
inc(r,2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrency, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfCurrency, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, '$');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, '$');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrencyRed, 0 decs');
|
(* FIXME: This format causes an Excel format warning
|
||||||
|
MyWorksheet.WriteText(r, 0, 'nfCurrencyRed, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
||||||
inc(r);
|
inc(r); *)
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
(* FIXME: These formats cause an Excel format warning
|
||||||
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
@ -267,7 +264,7 @@ begin
|
|||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
@ -276,15 +273,16 @@ begin
|
|||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
|
*)
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
@ -293,53 +291,53 @@ begin
|
|||||||
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
number := 1.333333333;
|
number := 1.333333333;
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm:ss');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m:s');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m:s');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
||||||
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
|
||||||
inc(r);
|
inc(r);
|
||||||
|
|
||||||
// Set width of columns 0 to 3
|
// Set width of columns 0 to 3
|
||||||
MyWorksheet.WriteColWidth(0, 48); // 48 characters, default is 12 --> 4x default width
|
MyWorksheet.WriteColWidth(0, 10, suCentimeters); // 10 cm
|
||||||
lCol.Width := 24; // 24 characters, default is 12 --> 2x default width
|
lCol.Width := 40; // WriteColInfo uses workbook units, i.e. mm
|
||||||
MyWorksheet.WriteColInfo(1, lCol);
|
MyWorksheet.WriteColInfo(1, lCol);
|
||||||
MyWorksheet.WriteColInfo(2, lCol);
|
MyWorksheet.WriteColInfo(2, lCol);
|
||||||
MyWorksheet.WriteColInfo(3, lCol);
|
MyWorksheet.WriteColInfo(3, lCol);
|
||||||
|
MyWorksheet.WriteColInfo(4, lCol);
|
||||||
|
MyWorksheet.WriteColWidth(5, 6); // default is characters: 6 characters
|
||||||
|
|
||||||
// Set height of rows 5 and 6
|
// Set height of rows 5 and 6
|
||||||
lRow.Height := 4; // 4 lines
|
MyWorksheet.WriteRowHeight(5, 4, suLines); // Lines
|
||||||
MyWorksheet.WriteRowInfo(5, lRow);
|
MyWorksheet.WriteRowHeight(6, 2); // Lines is default...
|
||||||
lRow.Height := 2; // 2 lines
|
|
||||||
MyWorksheet.WriteRowInfo(6, lRow);
|
|
||||||
|
|
||||||
// Save the spreadsheet to a file
|
// Save the spreadsheet to a file
|
||||||
MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, sfExcel2, true);
|
MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, sfExcel2, true);
|
||||||
|
@ -46,7 +46,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Write('Row: ', CurCell^.Row,
|
Write('Row: ', CurCell^.Row,
|
||||||
' Col: ', CurCell^.Col, ' Value: ',
|
' Col: ', CurCell^.Col, ' Value: ',
|
||||||
UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col)));
|
UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col)));
|
||||||
if HasFormula(CurCell) then
|
if HasFormula(CurCell) then
|
||||||
Write(' - Formula: ', CurCell^.FormulaValue);
|
Write(' - Formula: ', CurCell^.FormulaValue);
|
||||||
WriteLn;
|
WriteLn;
|
||||||
@ -56,5 +56,11 @@ begin
|
|||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$ifdef Windows}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
Readln;
|
||||||
|
{$endif}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -48,10 +48,10 @@ begin
|
|||||||
MyWorkbook.AddFont('Calibri', 20, [], scRed);
|
MyWorkbook.AddFont('Calibri', 20, [], scRed);
|
||||||
|
|
||||||
// Change row height
|
// Change row height
|
||||||
MyWorksheet.WriteRowHeight(0, 1.1); // modify height of row 0 to 3 lines
|
MyWorksheet.WriteRowHeight(0, 3); // modify height of row 0 to 3 lines
|
||||||
|
|
||||||
// Change colum widths
|
// Change colum widths
|
||||||
MyWorksheet.WriteColWidth(0, 40);
|
MyWorksheet.WriteColWidth(0, 40); // characters
|
||||||
MyWorksheet.WriteColWidth(1, 20);
|
MyWorksheet.WriteColWidth(1, 20);
|
||||||
MyWorksheet.WriteColWidth(2, 20);
|
MyWorksheet.WriteColWidth(2, 20);
|
||||||
MyWorksheet.WriteColWidth(3, 15);
|
MyWorksheet.WriteColWidth(3, 15);
|
||||||
@ -61,12 +61,11 @@ begin
|
|||||||
MyWorksheet.WriteNumber(0, 0, 1.0);// A1
|
MyWorksheet.WriteNumber(0, 0, 1.0);// A1
|
||||||
MyWorksheet.WriteVertAlignment(0, 0, vaCenter);
|
MyWorksheet.WriteVertAlignment(0, 0, vaCenter);
|
||||||
|
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(0, 1, 2.0);// B1
|
MyWorksheet.WriteNumber(0, 1, 2.0);// B1
|
||||||
MyWorksheet.WriteNumber(0, 2, 3.0);// C1
|
MyWorksheet.WriteNumber(0, 2, 3.0);// C1
|
||||||
MyWorksheet.WriteNumber(0, 3, 4.0);// D1
|
MyWorksheet.WriteNumber(0, 3, 4.0);// D1
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 2, Str_Total);// C5
|
MyWorksheet.WriteText(4, 2, Str_Total);// C5
|
||||||
MyWorksheet.WriteBorders(4, 2, [cbEast, cbNorth, cbWest, cbSouth]);
|
MyWorksheet.WriteBorders(4, 2, [cbEast, cbNorth, cbWest, cbSouth]);
|
||||||
myWorksheet.WriteFontColor(4, 2, scRed);
|
myWorksheet.WriteFontColor(4, 2, scRed);
|
||||||
MyWorksheet.WriteBackgroundColor(4, 2, scSilver);
|
MyWorksheet.WriteBackgroundColor(4, 2, scSilver);
|
||||||
@ -74,35 +73,35 @@ begin
|
|||||||
|
|
||||||
MyWorksheet.WriteNumber(4, 3, 10); // D5
|
MyWorksheet.WriteNumber(4, 3, 10); // D5
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 4, 'This is a long wrapped text.');
|
MyWorksheet.WriteText(4, 4, 'This is a long wrapped text.');
|
||||||
MyWorksheet.WriteUsedFormatting(4, 4, [uffWordWrap]);
|
MyWorksheet.WriteUsedFormatting(4, 4, [uffWordWrap]);
|
||||||
MyWorksheet.WriteHorAlignment(4, 4, haCenter);
|
MyWorksheet.WriteHorAlignment(4, 4, haCenter);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 5, 'Stacked text');
|
MyWorksheet.WriteText(4, 5, 'Stacked text');
|
||||||
MyWorksheet.WriteTextRotation(4, 5, rtStacked);
|
MyWorksheet.WriteTextRotation(4, 5, rtStacked);
|
||||||
MyWorksheet.WriteHorAlignment(4, 5, haCenter);
|
MyWorksheet.WriteHorAlignment(4, 5, haCenter);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 6, 'CW-rotated text');
|
MyWorksheet.WriteText(4, 6, 'CW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 6, rt90DegreeClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 6, rt90DegreeClockwiseRotation);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 7, 'CCW-rotated text');
|
MyWorksheet.WriteText(4, 7, 'CCW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 7, rt90DegreeCounterClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 7, rt90DegreeCounterClockwiseRotation);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 8, 'CW-rotated text');
|
MyWorksheet.WriteText(4, 8, 'CW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 8, rt90DegreeClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 8, rt90DegreeClockwiseRotation);
|
||||||
MyWorksheet.WriteVertAlignment(4, 8, vaTop);
|
MyWorksheet.WriteVertAlignment(4, 8, vaTop);
|
||||||
MyWorksheet.WriteHorAlignment(4, 8, haLeft);
|
MyWorksheet.WriteHorAlignment(4, 8, haLeft);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 9, 'CCW-rotated text');
|
MyWorksheet.WriteText(4, 9, 'CCW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 9, rt90DegreeCounterClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 9, rt90DegreeCounterClockwiseRotation);
|
||||||
MyWorksheet.WriteVertAlignment(4, 9, vaTop);
|
MyWorksheet.WriteVertAlignment(4, 9, vaTop);
|
||||||
Myworksheet.WriteHorAlignment(4, 9, haRight);
|
Myworksheet.WriteHorAlignment(4, 9, haRight);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 10, 'CW-rotated text');
|
MyWorksheet.WriteText(4, 10, 'CW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 10, rt90DegreeClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 10, rt90DegreeClockwiseRotation);
|
||||||
MyWorksheet.WriteVertAlignment(4, 10, vaCenter);
|
MyWorksheet.WriteVertAlignment(4, 10, vaCenter);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(4, 11, 'CCW-rotated text');
|
MyWorksheet.WriteText(4, 11, 'CCW-rotated text');
|
||||||
MyWorksheet.WriteTextRotation(4, 11, rt90DegreeCounterClockwiseRotation);
|
MyWorksheet.WriteTextRotation(4, 11, rt90DegreeCounterClockwiseRotation);
|
||||||
MyWorksheet.WriteVertAlignment(4, 11, vaCenter);
|
MyWorksheet.WriteVertAlignment(4, 11, vaCenter);
|
||||||
|
|
||||||
@ -170,133 +169,134 @@ begin
|
|||||||
|
|
||||||
r := 10;
|
r := 10;
|
||||||
// Write current date/time to cells B11:B16
|
// Write current date/time to cells B11:B16
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
|
MyWorksheet.WriteText(r, 0, 'nfShortDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
|
MyWorksheet.WriteText(r, 0, 'nfLongDate');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
|
MyWorksheet.WriteText(r, 0, 'nfLongTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
|
MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, dd/mmm');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, dd/mmm');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, mmm/yy');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, mmm/yy');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
|
MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss.z');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss.z');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.z');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss.zzz');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss.zzz');
|
||||||
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.zzz');
|
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss.zzz');
|
||||||
|
|
||||||
// Write formatted numbers
|
// Write formatted numbers
|
||||||
number := 12345.67890123456789;
|
number := 12345.67890123456789;
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
|
MyWorksheet.WriteText(r, 1, '12345.67890123456789');
|
||||||
MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
|
MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
|
MyWorksheet.WriteText(r, 0, 'nfGeneral');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixed, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfFixedTh, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 1 dec');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 1 dec');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
|
||||||
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 1);
|
||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfExp, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
|
||||||
|
|
||||||
inc(r,2);
|
inc(r,2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrency, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfCurrency, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrency, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrency, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, 'USD');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCurrencyRed, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfCurrencyRed, 0 decs');
|
||||||
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 1, number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 2, -number, nfCurrencyRed, 0, 'USD');
|
||||||
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
|
||||||
|
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
|
||||||
inc(r);
|
inc(r);
|
||||||
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
||||||
inc(r); { --- not working correctly: Except reports an error
|
inc(r);
|
||||||
|
{ --- not working correctly: Excel reports an error
|
||||||
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
fmt := '[Green]"¥"#,##0.0_);[Red]-"¥"#,##0.0';
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
@ -304,46 +304,46 @@ begin
|
|||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
|
||||||
inc(r); }
|
inc(r); }
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
MyWorksheet.WriteNumber(r, 2, -number);
|
MyWorksheet.WriteNumber(r, 2, -number);
|
||||||
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
|
||||||
inc(r, 2);
|
inc(r, 2);
|
||||||
number := 1.333333333;
|
number := 1.333333333;
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 0 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
|
MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
|
||||||
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm:ss');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm:ss');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m:s');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m:s');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'H:M:s');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
|
MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
|
||||||
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFraction, ??/??');
|
MyWorksheet.WriteText(r, 0, 'nfFraction, ??/??');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFractionFormat(r, 1, false, 2, 2);
|
MyWorksheet.WriteFractionFormat(r, 1, false, 2, 2);
|
||||||
|
|
||||||
inc(r);
|
inc(r);
|
||||||
MyWorksheet.WriteUTF8Text(r, 0, 'nfFraction, # ??/??');
|
MyWorksheet.WriteText(r, 0, 'nfFraction, # ??/??');
|
||||||
MyWorksheet.WriteNumber(r, 1, number);
|
MyWorksheet.WriteNumber(r, 1, number);
|
||||||
MyWorksheet.WriteFractionFormat(r, 1, true, 2, 2);
|
MyWorksheet.WriteFractionFormat(r, 1, true, 2, 2);
|
||||||
|
|
||||||
@ -353,10 +353,10 @@ begin
|
|||||||
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
|
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
|
||||||
|
|
||||||
// Write some string cells
|
// Write some string cells
|
||||||
MyWorksheet.WriteUTF8Text(0, 0, Str_First);
|
MyWorksheet.WriteText(0, 0, Str_First);
|
||||||
MyWorksheet.WriteUTF8Text(0, 1, Str_Second);
|
MyWorksheet.WriteText(0, 1, Str_Second);
|
||||||
MyWorksheet.WriteUTF8Text(0, 2, Str_Third);
|
MyWorksheet.WriteText(0, 2, Str_Third);
|
||||||
MyWorksheet.WriteUTF8Text(0, 3, Str_Fourth);
|
MyWorksheet.WriteText(0, 3, Str_Fourth);
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('Colors');
|
MyWorksheet := MyWorkbook.AddWorksheet('Colors');
|
||||||
@ -366,7 +366,7 @@ begin
|
|||||||
for i:=0 to palette.Count-1 do begin
|
for i:=0 to palette.Count-1 do begin
|
||||||
MyWorksheet.WriteBlank(i, 0);
|
MyWorksheet.WriteBlank(i, 0);
|
||||||
Myworksheet.WriteBackgroundColor(i, 0, palette[i]);
|
Myworksheet.WriteBackgroundColor(i, 0, palette[i]);
|
||||||
MyWorksheet.WriteUTF8Text(i, 1, GetColorName(palette[i]));
|
MyWorksheet.WriteText(i, 1, GetColorName(palette[i]));
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
palette.Free;
|
palette.Free;
|
||||||
|
@ -63,5 +63,11 @@ begin
|
|||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF WINDOWS}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -365,17 +365,17 @@ begin
|
|||||||
Myworksheet.WriteNumber(r, 1, number, nfFraction, '# ??/??');
|
Myworksheet.WriteNumber(r, 1, number, nfFraction, '# ??/??');
|
||||||
|
|
||||||
// Set width of columns 0, 1 and 5
|
// Set width of columns 0, 1 and 5
|
||||||
MyWorksheet.WriteColWidth(0, 30);
|
MyWorksheet.WriteColWidth(0, 30, suChars);
|
||||||
lCol.Width := 25;
|
lCol.Width := 60;
|
||||||
MyWorksheet.WriteColInfo(1, lCol);
|
MyWorksheet.WriteColInfo(1, lCol); // ColInfo uses by default workbook units --> mm
|
||||||
MyWorksheet.WriteColWidth(2, 15);
|
MyWorksheet.WriteColWidth(2, 15, suChars);
|
||||||
MyWorksheet.WriteColWidth(3, 15);
|
MyWorksheet.WriteColWidth(3, 15, suChars);
|
||||||
MyWorksheet.WriteColWidth(4, 15);
|
MyWorksheet.WriteColWidth(4, 15, suChars);
|
||||||
lCol.Width := 5;
|
lCol.Width := 12; // mm
|
||||||
MyWorksheet.WriteColInfo(5, lCol);
|
MyWorksheet.WriteColInfo(5, lCol);
|
||||||
|
|
||||||
// Set height of rows 0
|
// Set height of rows 0
|
||||||
MyWorksheet.WriteRowHeight(0, 5); // 5 lines
|
MyWorksheet.WriteRowHeight(0, 5, suLines); // 5 lines
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
|
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
|
||||||
|
@ -61,9 +61,9 @@ begin
|
|||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF MSWINDOWS}
|
{$IFDEF WINDOWS}
|
||||||
WriteLn;
|
WriteLn;
|
||||||
WriteLn('Press ENTER to exit.');
|
WriteLn('Press ENTER to quit...');
|
||||||
ReadLn;
|
ReadLn;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
@ -54,7 +54,7 @@ begin
|
|||||||
Write(
|
Write(
|
||||||
'Row: ', CurCell^.Row,
|
'Row: ', CurCell^.Row,
|
||||||
' Col: ', CurCell^.Col,
|
' Col: ', CurCell^.Col,
|
||||||
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
|
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
|
||||||
);
|
);
|
||||||
if MyWorksheet.HasHyperlink(CurCell) then
|
if MyWorksheet.HasHyperlink(CurCell) then
|
||||||
Write(' Hyperlink: ', MyWorksheet.ReadHyperlink(CurCell).Target);
|
Write(' Hyperlink: ', MyWorksheet.ReadHyperlink(CurCell).Target);
|
||||||
@ -69,9 +69,9 @@ begin
|
|||||||
stream.Free;
|
stream.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF MSWINDOWS}
|
{$IFDEF WINDOWS}
|
||||||
WriteLn;
|
WriteLn;
|
||||||
WriteLn('Press ENTER to exit.');
|
WriteLn('Press ENTER to quit...');
|
||||||
ReadLn;
|
ReadLn;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
@ -31,136 +31,136 @@ begin
|
|||||||
Myworksheet.LeftPaneWidth := 1;
|
Myworksheet.LeftPaneWidth := 1;
|
||||||
|
|
||||||
// Write colwidth
|
// Write colwidth
|
||||||
Myworksheet.WriteColWidth(1, 25); // 25 characters
|
Myworksheet.WriteColWidth(1, 25, suChars); // approx 25 characters
|
||||||
|
|
||||||
// Write some cells
|
// Write some cells
|
||||||
row := 0;
|
row := 0;
|
||||||
|
|
||||||
MyWorksheet.WriteBlank(row, 0);
|
MyWorksheet.WriteBlank(row, 0);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Description');
|
MyWorksheet.WriteText(row, 1, 'Description');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Example');
|
MyWorksheet.WriteText(row, 2, 'Example');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a text:');
|
MyWorksheet.WriteText(row, 1, 'This is a text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Hello world!');
|
MyWorksheet.WriteText(row, 2, 'Hello world!');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is bold text:');
|
MyWorksheet.WriteText(row, 1, 'This is bold text:');
|
||||||
Myworksheet.WriteUTF8Text(row, 2, 'Hello world!');
|
Myworksheet.WriteText(row, 2, 'Hello world!');
|
||||||
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
|
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a number:');
|
MyWorksheet.WriteText(row, 1, 'This is a number:');
|
||||||
MyWorksheet.WriteNumber(row, 2, 3.141592);
|
MyWorksheet.WriteNumber(row, 2, 3.141592);
|
||||||
Myworksheet.WriteHorAlignment(row, 2, haRight);
|
Myworksheet.WriteHorAlignment(row, 2, haRight);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a date:');
|
MyWorksheet.WriteText(row, 1, 'This is a date:');
|
||||||
Myworksheet.WriteDateTime(row, 2, date());
|
Myworksheet.WriteDateTime(row, 2, date());
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text:');
|
MyWorksheet.WriteText(row, 1, 'This is a long text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text, indeed');
|
MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text, indeed');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Centered text:');
|
MyWorksheet.WriteText(row, 1, 'Centered text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'I am in the center.');
|
MyWorksheet.WriteText(row, 2, 'I am in the center.');
|
||||||
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
|
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text with line break:');
|
MyWorksheet.WriteText(row, 1, 'This is a long text with line break:');
|
||||||
Myworksheet.WriteVertAlignment(row, 1, vaTop);
|
Myworksheet.WriteVertAlignment(row, 1, vaTop);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text,<br /> indeed');
|
MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text,<br /> indeed');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Merged rows');
|
MyWorksheet.WriteText(row, 1, 'Merged rows');
|
||||||
Myworksheet.MergeCells(row, 1, row+1, 1);
|
Myworksheet.MergeCells(row, 1, row+1, 1);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A');
|
MyWorksheet.WriteText(row, 2, 'A');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'B');
|
MyWorksheet.WriteText(row, 2, 'B');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Merged columns');
|
MyWorksheet.WriteText(row, 1, 'Merged columns');
|
||||||
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
|
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
|
||||||
MyWorksheet.MergeCells(row, 1, row, 2);
|
MyWorksheet.MergeCells(row, 1, row, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Right border:');
|
MyWorksheet.WriteText(row, 1, 'Right border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'medium / red');
|
MyWorksheet.WriteText(row, 2, 'medium / red');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbEast]);
|
MyWorksheet.WriteBorders(row, 2, [cbEast]);
|
||||||
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
|
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Top border:');
|
MyWorksheet.WriteText(row, 1, 'Top border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'top / dashed');
|
MyWorksheet.WriteText(row, 2, 'top / dashed');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
|
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Left border:');
|
MyWorksheet.WriteText(row, 1, 'Left border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'left / dotted');
|
MyWorksheet.WriteText(row, 2, 'left / dotted');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbWest]);
|
MyWorksheet.WriteBorders(row, 2, [cbWest]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Bottom border:');
|
MyWorksheet.WriteText(row, 1, 'Bottom border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'bottom / double');
|
MyWorksheet.WriteText(row, 2, 'bottom / double');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
|
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This row is high');
|
MyWorksheet.WriteText(row, 1, 'This row is high');
|
||||||
MyWorksheet.WriteRowHeight(row, 5);
|
MyWorksheet.WriteRowHeight(row, 5);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Colors:');
|
MyWorksheet.WriteText(row, 1, 'Colors:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'yellow on blue');
|
MyWorksheet.WriteText(row, 2, 'yellow on blue');
|
||||||
MyWorksheet.WriteFontColor(row, 2, scYellow);
|
MyWorksheet.WriteFontColor(row, 2, scYellow);
|
||||||
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
|
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'RGB background color:');
|
MyWorksheet.WriteText(row, 1, 'RGB background color:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'color #FF77C3'); // HTML colors are big-endian
|
MyWorksheet.WriteText(row, 2, 'color #FF77C3'); // HTML colors are big-endian
|
||||||
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
|
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Bold text:');
|
MyWorksheet.WriteText(row, 1, 'Bold text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Bold text');
|
MyWorksheet.WriteText(row, 2, 'Bold text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Italic text:');
|
MyWorksheet.WriteText(row, 1, 'Italic text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Italic text');
|
MyWorksheet.WriteText(row, 2, 'Italic text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Underlined text:');
|
MyWorksheet.WriteText(row, 1, 'Underlined text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Underlined text');
|
MyWorksheet.WriteText(row, 2, 'Underlined text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Strike-through text:');
|
MyWorksheet.WriteText(row, 1, 'Strike-through text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Strike-through text');
|
MyWorksheet.WriteText(row, 2, 'Strike-through text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
|
@ -37,28 +37,28 @@ begin
|
|||||||
try
|
try
|
||||||
sheet := srcWorkbook.AddWorksheet('Sheet');
|
sheet := srcWorkbook.AddWorksheet('Sheet');
|
||||||
|
|
||||||
sheet.WriteUTF8Text(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, '../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.WriteUTF8Text(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, '..\opendocdemo\test.ods');
|
||||||
|
|
||||||
sheet.WriteUTF8Text(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');
|
||||||
|
|
||||||
sheet.WriteUTF8Text(3, 0, 'Web-Hyperlink');
|
sheet.WriteText(3, 0, 'Web-Hyperlink');
|
||||||
sheet.WriteHyperlink(3, 0, 'http://www.lazarus-ide.org/');
|
sheet.WriteHyperlink(3, 0, 'http://www.lazarus-ide.org/');
|
||||||
|
|
||||||
sheet.WriteUTF8Text(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.
|
||||||
|
|
||||||
sheet.WriteUTF8Text(5, 0, 'Jump to A10');
|
sheet.WriteText(5, 0, 'Jump to A10');
|
||||||
sheet.WriteHyperlink(5, 0, '#A10');
|
sheet.WriteHyperlink(5, 0, '#A10');
|
||||||
|
|
||||||
sheet.WriteColWidth(0, 40);
|
sheet.WriteColWidth(0, 40, suChars);
|
||||||
|
|
||||||
srcWorkbook.WriteToFile(srcFile, true);
|
srcWorkbook.WriteToFile(srcFile, true);
|
||||||
finally
|
finally
|
||||||
@ -124,7 +124,6 @@ begin
|
|||||||
WriteLn('Failure finding linked worksheet.');
|
WriteLn('Failure finding linked worksheet.');
|
||||||
continue;
|
continue;
|
||||||
end;
|
end;
|
||||||
// linkedSheet := linkedWorkbook.GetWorksheetByName(bookmark);
|
|
||||||
// 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);
|
||||||
// Create sheet name
|
// Create sheet name
|
||||||
@ -152,8 +151,11 @@ begin
|
|||||||
end else
|
end else
|
||||||
WriteLn('No hyperlinks found.');
|
WriteLn('No hyperlinks found.');
|
||||||
|
|
||||||
|
{$IFDEF Windows}
|
||||||
|
WriteLn;
|
||||||
WriteLn('Press ENTER to close...');
|
WriteLn('Press ENTER to close...');
|
||||||
ReadLn;
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
finally
|
finally
|
||||||
// Clean up
|
// Clean up
|
||||||
|
@ -25,7 +25,7 @@ begin
|
|||||||
|
|
||||||
// Open the input file
|
// Open the input file
|
||||||
MyDir := ExtractFilePath(ParamStr(0));
|
MyDir := ExtractFilePath(ParamStr(0));
|
||||||
InputFileName := MyDir + 'a.xlsx';
|
InputFileName := MyDir + 'test.xlsx';
|
||||||
if not FileExists(InputFileName) then begin
|
if not FileExists(InputFileName) then begin
|
||||||
WriteLn('Input file ', InputFileName, ' does not exist. Please run opendocwrite first.');
|
WriteLn('Input file ', InputFileName, ' does not exist. Please run opendocwrite first.');
|
||||||
Halt;
|
Halt;
|
||||||
@ -49,10 +49,16 @@ begin
|
|||||||
WriteLn(
|
WriteLn(
|
||||||
'Row: ', cell^.Row,
|
'Row: ', cell^.Row,
|
||||||
' Col: ', cell^.Col,
|
' Col: ', cell^.Col,
|
||||||
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(cell^.Row, cell^.Col))
|
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(cell^.Row, cell^.Col))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
|
|
||||||
|
{$ifdef WINDOWS}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -34,10 +34,10 @@ begin
|
|||||||
MyWorksheet.WriteNumber(0, 3, 4.0);
|
MyWorksheet.WriteNumber(0, 3, 4.0);
|
||||||
MyWorksheet.WriteUTF8Text(0, 4, '& " '' < >');
|
MyWorksheet.WriteUTF8Text(0, 4, '& " '' < >');
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(0, 26, 'AA'); // Test for column name
|
MyWorksheet.WriteText(0, 26, 'AA'); // Test for column name
|
||||||
|
|
||||||
MyWorksheet.WriteColWidth(0, 20);
|
MyWorksheet.WriteColWidth(0, 20, suChars);
|
||||||
MyWorksheet.WriteRowHeight(0, 4);
|
MyWorksheet.WriteRowHeight(0, 4, suLines);
|
||||||
|
|
||||||
// Write some formulas
|
// Write some formulas
|
||||||
Myworksheet.WriteFormula(0, 5, '=A1-B1');
|
Myworksheet.WriteFormula(0, 5, '=A1-B1');
|
||||||
@ -47,10 +47,10 @@ begin
|
|||||||
// Uncomment this to test large XLS files
|
// Uncomment this to test large XLS files
|
||||||
for i := 2 to 2{20} do
|
for i := 2 to 2{20} do
|
||||||
begin
|
begin
|
||||||
MyWorksheet.WriteUTF8Text(i, 0, ParamStr(0));
|
MyWorksheet.WriteText(i, 0, ParamStr(0));
|
||||||
MyWorksheet.WriteUTF8Text(i, 1, ParamStr(0));
|
MyWorksheet.WriteText(i, 1, ParamStr(0));
|
||||||
MyWorksheet.WriteUTF8Text(i, 2, ParamStr(0));
|
MyWorksheet.WriteText(i, 2, ParamStr(0));
|
||||||
MyWorksheet.WriteUTF8Text(i, 3, ParamStr(0));
|
MyWorksheet.WriteText(i, 3, ParamStr(0));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Test for Bold
|
// Test for Bold
|
||||||
@ -64,32 +64,32 @@ begin
|
|||||||
MyCell^.FontIndex := BOLD_FONTINDEX;
|
MyCell^.FontIndex := BOLD_FONTINDEX;
|
||||||
|
|
||||||
// Background and text color
|
// Background and text color
|
||||||
MyWorksheet.WriteUTF8Text(4, 0, 'white on red');
|
MyWorksheet.WriteText(4, 0, 'white on red');
|
||||||
Myworksheet.WriteBackgroundColor(4, 0, scRed);
|
Myworksheet.WriteBackgroundColor(4, 0, scRed);
|
||||||
MyWorksheet.WriteFontColor(4, 0, scWhite);
|
MyWorksheet.WriteFontColor(4, 0, scWhite);
|
||||||
|
|
||||||
// Border
|
// Border
|
||||||
MyWorksheet.WriteUTF8Text(4, 2, 'left/right');
|
MyWorksheet.WriteText(4, 2, 'left/right');
|
||||||
Myworksheet.WriteBorders(4, 2, [cbWest, cbEast]);
|
Myworksheet.WriteBorders(4, 2, [cbWest, cbEast]);
|
||||||
MyWorksheet.WriteHorAlignment(4, 2, haCenter);
|
MyWorksheet.WriteHorAlignment(4, 2, haCenter);
|
||||||
|
|
||||||
Myworksheet.WriteUTF8Text(4, 4, 'top/bottom');
|
Myworksheet.WriteText(4, 4, 'top/bottom');
|
||||||
Myworksheet.WriteBorders(4, 4, [cbNorth, cbSouth]);
|
Myworksheet.WriteBorders(4, 4, [cbNorth, cbSouth]);
|
||||||
MyWorksheet.WriteBorderStyle(4, 4, cbSouth, lsThick, scBlue);
|
MyWorksheet.WriteBorderStyle(4, 4, cbSouth, lsThick, scBlue);
|
||||||
Myworksheet.WriteHorAlignment(4, 4, haRight);
|
Myworksheet.WriteHorAlignment(4, 4, haRight);
|
||||||
|
|
||||||
// Wordwrap
|
// Wordwrap
|
||||||
MyWorksheet.WriteUTF8Text(4, 6, 'This is a long, long, long, wrapped text.');
|
MyWorksheet.WriteText(4, 6, 'This is a long, long, long, wrapped text.');
|
||||||
MyWorksheet.WriteWordwrap(4, 6, true);
|
MyWorksheet.WriteWordwrap(4, 6, true);
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
|
||||||
|
|
||||||
// Write some string cells
|
// Write some string cells
|
||||||
MyWorksheet.WriteUTF8Text(0, 0, 'First');
|
MyWorksheet.WriteText(0, 0, 'First');
|
||||||
MyWorksheet.WriteUTF8Text(0, 1, 'Second');
|
MyWorksheet.WriteText(0, 1, 'Second');
|
||||||
MyWorksheet.WriteUTF8Text(0, 2, 'Third');
|
MyWorksheet.WriteText(0, 2, 'Third');
|
||||||
MyWorksheet.WriteUTF8Text(0, 3, 'Fourth');
|
MyWorksheet.WriteText(0, 3, 'Fourth');
|
||||||
|
|
||||||
// Write current date/time
|
// Write current date/time
|
||||||
MyWorksheet.WriteDateTime(0, 5, now, nfShortDate);
|
MyWorksheet.WriteDateTime(0, 5, now, nfShortDate);
|
||||||
|
@ -49,10 +49,16 @@ begin
|
|||||||
WriteLn(
|
WriteLn(
|
||||||
'Row: ', cell^.Row,
|
'Row: ', cell^.Row,
|
||||||
' Col: ', cell^.Col,
|
' Col: ', cell^.Col,
|
||||||
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(cell^.Row, cell^.Col))
|
' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(cell^.Row, cell^.Col))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
|
|
||||||
|
{$IFDEF WINDOWS}
|
||||||
|
WriteLn;
|
||||||
|
Writeln('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(0, 1, 2.0); // B1
|
MyWorksheet.WriteNumber(0, 1, 2.0); // B1
|
||||||
MyWorksheet.WriteNumber(0, 2, 3.0); // C1
|
MyWorksheet.WriteNumber(0, 2, 3.0); // C1
|
||||||
MyWorksheet.WriteNumber(0, 3, 4.0); // D1
|
MyWorksheet.WriteNumber(0, 3, 4.0); // D1
|
||||||
MyWorksheet.WriteUTF8Text(4, 2, 'Total:');// C5
|
MyWorksheet.WriteText(4, 2, 'Total:'); // C5
|
||||||
MyWorksheet.WriteNumber(4, 3, 10); // D5
|
MyWorksheet.WriteNumber(4, 3, 10); // D5
|
||||||
MyWorksheet.WriteDateTime(5, 0, now);
|
MyWorksheet.WriteDateTime(5, 0, now);
|
||||||
|
|
||||||
@ -52,9 +52,9 @@ begin
|
|||||||
MyWorksheet.WriteFont(0, 1, 'Times New Roman', 16, [], scRed);
|
MyWorksheet.WriteFont(0, 1, 'Times New Roman', 16, [], scRed);
|
||||||
|
|
||||||
// Show number formats
|
// Show number formats
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'Number formats:');
|
MyWorksheet.WriteText(row, 0, 'Number formats:');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfGeneral');
|
MyWorksheet.WriteText(row, 0, 'nfGeneral');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfGeneral);
|
MyWorksheet.WriteNumber(row, 1, number1, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfGeneral);
|
MyWorksheet.WriteNumber(row, 2, number2, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfGeneral);
|
MyWorksheet.WriteNumber(row, 3, number3, nfGeneral);
|
||||||
@ -64,7 +64,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfGeneral);
|
MyWorksheet.WriteNumber(row, 7, number7, nfGeneral);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfGeneral);
|
MyWorksheet.WriteNumber(row, 8, number8, nfGeneral);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixed, 0 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixed, 0 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 0);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 0);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 0);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 0);
|
||||||
@ -74,7 +74,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 0);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 0);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 0);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 0);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixed, 2 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixed, 2 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 2);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 2);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 2);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 2);
|
||||||
@ -84,7 +84,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 2);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 2);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 2);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixed, 3 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixed, 3 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 3);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixed, 3);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 3);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixed, 3);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 3);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 3);
|
||||||
@ -94,7 +94,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 3);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 3);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 3);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 3);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixedTh, 0 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixedTh, 0 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 0);
|
||||||
@ -104,7 +104,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 0);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 0);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 0);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixedTh, 2 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixedTh, 2 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 2);
|
||||||
@ -114,7 +114,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 2);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 2);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFixedTh, 3 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfFixedTh, 3 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(row, 1, number1, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(row, 2, number2, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 3);
|
||||||
@ -124,7 +124,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 3);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 3);
|
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 3);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfPercentage, 0 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfPercentage, 0 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 0);
|
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 0);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 0);
|
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 0);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 0);
|
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 0);
|
||||||
@ -134,7 +134,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 0);
|
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 0);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 0);
|
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 0);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfPercentage, 2 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfPercentage, 2 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 2);
|
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 2);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 2);
|
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 2);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 2);
|
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 2);
|
||||||
@ -144,7 +144,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 2);
|
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 2);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 2);
|
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfPercentage, 3 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfPercentage, 3 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 3);
|
MyWorksheet.WriteNumber(row, 1, number1, nfPercentage, 3);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 3);
|
MyWorksheet.WriteNumber(row, 2, number2, nfPercentage, 3);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 3);
|
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 3);
|
||||||
@ -154,7 +154,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 3);
|
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 3);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 3);
|
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 3);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfExp, 0 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfExp, 0 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 0);
|
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 0);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 0);
|
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 0);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 0);
|
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 0);
|
||||||
@ -164,7 +164,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 0);
|
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 0);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 0);
|
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 0);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfExp, 2 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfExp, 2 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 2);
|
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 2);
|
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 2);
|
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 2);
|
||||||
@ -174,7 +174,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 2);
|
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 2);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 2);
|
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfExp, 3 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfExp, 3 decimals');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 1, number1, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 2, number2, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 3);
|
||||||
@ -184,7 +184,7 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 3);
|
||||||
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 3);
|
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 3);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCurrency, 2 decimals');
|
MyWorksheet.WriteText(row, 0, 'nfCurrency, 2 decimals');
|
||||||
MyWorksheet.WriteCurrency(row, 1, number1, nfCurrency, 2, '$');
|
MyWorksheet.WriteCurrency(row, 1, number1, nfCurrency, 2, '$');
|
||||||
MyWorksheet.WriteCurrency(row, 2, number2, nfCurrency, 2, '$');
|
MyWorksheet.WriteCurrency(row, 2, number2, nfCurrency, 2, '$');
|
||||||
MyWorksheet.WriteCurrency(row, 3, number3, nfCurrency, 2, '$');
|
MyWorksheet.WriteCurrency(row, 3, number3, nfCurrency, 2, '$');
|
||||||
@ -194,7 +194,7 @@ begin
|
|||||||
MyWorksheet.WriteCurrency(row, 7, number7, nfCurrency, 2, '$');
|
MyWorksheet.WriteCurrency(row, 7, number7, nfCurrency, 2, '$');
|
||||||
MyWorksheet.WriteCurrency(row, 8, number8, nfCurrency, 2, '$');
|
MyWorksheet.WriteCurrency(row, 8, number8, nfCurrency, 2, '$');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCurrencyRed, 2 decimals, >0: $ 1000, <0: ($ 1000)');
|
MyWorksheet.WriteText(row, 0, 'nfCurrencyRed, 2 decimals, >0: $ 1000, <0: ($ 1000)');
|
||||||
MyWorksheet.WriteCurrency(row, 1, number1, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
MyWorksheet.WriteCurrency(row, 1, number1, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
||||||
MyWorksheet.WriteCurrency(row, 2, number2, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
MyWorksheet.WriteCurrency(row, 2, number2, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
||||||
MyWorksheet.WriteCurrency(row, 3, number3, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
MyWorksheet.WriteCurrency(row, 3, number3, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
||||||
@ -204,7 +204,7 @@ begin
|
|||||||
MyWorksheet.WriteCurrency(row, 7, number7, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
MyWorksheet.WriteCurrency(row, 7, number7, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
||||||
MyWorksheet.WriteCurrency(row, 8, number8, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
MyWorksheet.WriteCurrency(row, 8, number8, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfFraction, 2 digits');
|
MyWorksheet.WriteText(row, 0, 'nfFraction, 2 digits');
|
||||||
MyWorksheet.WriteNumber(row, 1, number1, nfFraction, '# ???/???');
|
MyWorksheet.WriteNumber(row, 1, number1, nfFraction, '# ???/???');
|
||||||
MyWorksheet.WriteNumber(row, 2, number2, nfFraction, '# ???/???');
|
MyWorksheet.WriteNumber(row, 2, number2, nfFraction, '# ???/???');
|
||||||
MyWorksheet.WriteNumber(row, 3, number3, nfFraction, '# ???/???');
|
MyWorksheet.WriteNumber(row, 3, number3, nfFraction, '# ???/???');
|
||||||
@ -215,74 +215,73 @@ begin
|
|||||||
MyWorksheet.WriteNumber(row, 8, number8, nfFraction, '# ???/???');
|
MyWorksheet.WriteNumber(row, 8, number8, nfFraction, '# ???/???');
|
||||||
inc(row,2);
|
inc(row,2);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'Some date/time values in various formats:');
|
MyWorksheet.WriteText(row, 0, 'Some date/time values in various formats:');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfShortDateTime');
|
MyWorksheet.WriteText(row, 0, 'nfShortDateTime');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDateTime);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDateTime);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDateTime);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDateTime);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfShortDate');
|
MyWorksheet.WriteText(row, 0, 'nfShortDate');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDate);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDate);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDate);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDate);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfLongDate');
|
MyWorksheet.WriteText(row, 0, 'nfLongDate');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongDate);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongDate);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongDate);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongDate);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfShortTime');
|
MyWorksheet.WriteText(row, 0, 'nfShortTime');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTime);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTime);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTime);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTime);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfLongTime');
|
MyWorksheet.WriteText(row, 0, 'nfLongTime');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTime);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTime);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTime);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTime);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfShortTimeAM');
|
MyWorksheet.WriteText(row, 0, 'nfShortTimeAM');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTimeAM);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTimeAM);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTimeAM);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTimeAM);
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfLongTimeAM');
|
MyWorksheet.WriteText(row, 0, 'nfLongTimeAM');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTimeAM);
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTimeAM);
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTimeAM);
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTimeAM);
|
||||||
inc(row,2);
|
inc(row,2);
|
||||||
|
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'Some custom formats');
|
MyWorksheet.WriteText(row, 0, 'Some custom formats');
|
||||||
inc(row);
|
inc(row);
|
||||||
// In order to use a semicolon as a date-time separator it must be escaped either by
|
// In order to use a semicolon as a date-time separator it must be escaped either by
|
||||||
// using the backslash or quotes (because the semicolon is the separator between sections)
|
// using the backslash or quotes (because the semicolon is the separator between sections)
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCustom, dddd, dd/mm/yyyy\; hh:nn');
|
MyWorksheet.WriteText(row, 0, 'nfCustom, dddd, dd/mm/yyyy\; hh:nn');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dddd, dd/mm/yyyy\; hh:nn');
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dddd, dd/mm/yyyy\; hh:nn');
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dddd, dd/mm/yyyy\; hh:nn');
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dddd, dd/mm/yyyy\; hh:nn');
|
||||||
MyWorksheet.WriteUTF8Text(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
|
MyWorksheet.WriteText(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
|
||||||
MyWorksheet.WriteUTF8Text(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
|
MyWorksheet.WriteText(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCustom, dddd, dd/mm/yyyy"; "hh:nn');
|
MyWorksheet.WriteText(row, 0, 'nfCustom, dddd, dd/mm/yyyy"; "hh:nn');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dddd, dd/mm/yyyy"; "hh:nn');
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dddd, dd/mm/yyyy"; "hh:nn');
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dddd, dd/mm/yyyy"; "hh:nn');
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dddd, dd/mm/yyyy"; "hh:nn');
|
||||||
MyWorksheet.WriteUTF8Text(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
|
MyWorksheet.WriteText(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
|
||||||
MyWorksheet.WriteUTF8Text(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
|
MyWorksheet.WriteText(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCustom, dd/mmm');
|
MyWorksheet.WriteText(row, 0, 'nfCustom, dd/mmm');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dd/mmm');
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'dd/mmm');
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dd/mmm');
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'dd/mmm');
|
||||||
MyWorksheet.WriteUTF8Text(row, 3, 'The slash is replaced by the date or time separator of the FormatSettings');
|
MyWorksheet.WriteText(row, 3, 'The slash is replaced by the date or time separator of the FormatSettings');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCustom, mmm/yy');
|
MyWorksheet.WriteText(row, 0, 'nfCustom, mmm/yy');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'mmm/yy');
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'mmm/yy');
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'mmm/yy');
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'mmm/yy');
|
||||||
MyWorksheet.WriteUTF8Text(row, 3, 'The slash is replaced by the date or time separator of the FormatSettings');
|
MyWorksheet.WriteText(row, 3, 'The slash is replaced by the date or time separator of the FormatSettings');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, 'nfCustom, mmm-yy');
|
MyWorksheet.WriteText(row, 0, 'nfCustom, mmm-yy');
|
||||||
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'mmm-yy');
|
MyWorksheet.WriteDateTime(row, 1, dt1, nfCustom, 'mmm-yy');
|
||||||
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'mmm-yy');
|
MyWorksheet.WriteDateTime(row, 2, dt2, nfCustom, 'mmm-yy');
|
||||||
MyWorksheet.WriteUTF8Text(row, 3, 'The dash is used literally');
|
MyWorksheet.WriteText(row, 3, 'The dash is used literally');
|
||||||
|
|
||||||
// Creates a new worksheet
|
// Creates a new worksheet
|
||||||
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 + 'test.ods',
|
MyWorkbook.WriteToFile(MyDir + 'test.ods', sfOpenDocument);
|
||||||
sfOpenDocument);
|
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Write('Row: ', CurCell^.Row,
|
Write('Row: ', CurCell^.Row,
|
||||||
' Col: ', CurCell^.Col, ' Value: ',
|
' Col: ', CurCell^.Col, ' Value: ',
|
||||||
UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
|
UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
|
||||||
);
|
);
|
||||||
if HasFormula(CurCell) then
|
if HasFormula(CurCell) then
|
||||||
WriteLn(' Formula: ', CurCell^.FormulaValue)
|
WriteLn(' Formula: ', CurCell^.FormulaValue)
|
||||||
@ -60,5 +60,11 @@ begin
|
|||||||
|
|
||||||
// Finalization
|
// Finalization
|
||||||
MyWorkbook.Free;
|
MyWorkbook.Free;
|
||||||
|
|
||||||
|
{$IFDEF WINDOWS}
|
||||||
|
WriteLn;
|
||||||
|
WriteLn('Press ENTER to quit...');
|
||||||
|
ReadLn;
|
||||||
|
{$ENDIF}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -30,136 +30,136 @@ begin
|
|||||||
Myworksheet.LeftPaneWidth := 1;
|
Myworksheet.LeftPaneWidth := 1;
|
||||||
|
|
||||||
// Write colwidth
|
// Write colwidth
|
||||||
Myworksheet.WriteColWidth(1, 25); // 25 characters
|
Myworksheet.WriteColWidth(1, 25, suChars); // 25 characters
|
||||||
|
|
||||||
// Write some cells
|
// Write some cells
|
||||||
row := 0;
|
row := 0;
|
||||||
|
|
||||||
MyWorksheet.WriteBlank(row, 0);
|
MyWorksheet.WriteBlank(row, 0);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Description');
|
MyWorksheet.WriteText(row, 1, 'Description');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Example');
|
MyWorksheet.WriteText(row, 2, 'Example');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a text:');
|
MyWorksheet.WriteText(row, 1, 'This is a text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Hello world!');
|
MyWorksheet.WriteText(row, 2, 'Hello world!');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is bold text:');
|
MyWorksheet.WriteText(row, 1, 'This is bold text:');
|
||||||
Myworksheet.WriteUTF8Text(row, 2, 'Hello world!');
|
Myworksheet.WriteText(row, 2, 'Hello world!');
|
||||||
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
|
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a number:');
|
MyWorksheet.WriteText(row, 1, 'This is a number:');
|
||||||
MyWorksheet.WriteNumber(row, 2, 3.141592);
|
MyWorksheet.WriteNumber(row, 2, 3.141592);
|
||||||
Myworksheet.WriteHorAlignment(row, 2, haRight);
|
Myworksheet.WriteHorAlignment(row, 2, haRight);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a date:');
|
MyWorksheet.WriteText(row, 1, 'This is a date:');
|
||||||
Myworksheet.WriteDateTime(row, 2, date());
|
Myworksheet.WriteDateTime(row, 2, date());
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text:');
|
MyWorksheet.WriteText(row, 1, 'This is a long text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text, indeed');
|
MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text, indeed');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Centered text:');
|
MyWorksheet.WriteText(row, 1, 'Centered text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'I am in the center.');
|
MyWorksheet.WriteText(row, 2, 'I am in the center.');
|
||||||
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
|
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text with line break:');
|
MyWorksheet.WriteText(row, 1, 'This is a long text with line break:');
|
||||||
Myworksheet.WriteVertAlignment(row, 1, vaTop);
|
Myworksheet.WriteVertAlignment(row, 1, vaTop);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text,<br /> indeed');
|
MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text,<br /> indeed');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Merged rows');
|
MyWorksheet.WriteText(row, 1, 'Merged rows');
|
||||||
Myworksheet.MergeCells(row, 1, row+1, 1);
|
Myworksheet.MergeCells(row, 1, row+1, 1);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A');
|
MyWorksheet.WriteText(row, 2, 'A');
|
||||||
inc(row);
|
inc(row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'B');
|
MyWorksheet.WriteText(row, 2, 'B');
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Merged columns');
|
MyWorksheet.WriteText(row, 1, 'Merged columns');
|
||||||
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
|
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
|
||||||
MyWorksheet.MergeCells(row, 1, row, 2);
|
MyWorksheet.MergeCells(row, 1, row, 2);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Right border:');
|
MyWorksheet.WriteText(row, 1, 'Right border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'medium / red');
|
MyWorksheet.WriteText(row, 2, 'medium / red');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbEast]);
|
MyWorksheet.WriteBorders(row, 2, [cbEast]);
|
||||||
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
|
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Top border:');
|
MyWorksheet.WriteText(row, 1, 'Top border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'top / dashed');
|
MyWorksheet.WriteText(row, 2, 'top / dashed');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
|
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Left border:');
|
MyWorksheet.WriteText(row, 1, 'Left border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'left / dotted');
|
MyWorksheet.WriteText(row, 2, 'left / dotted');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbWest]);
|
MyWorksheet.WriteBorders(row, 2, [cbWest]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Bottom border:');
|
MyWorksheet.WriteText(row, 1, 'Bottom border:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'bottom / double');
|
MyWorksheet.WriteText(row, 2, 'bottom / double');
|
||||||
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
|
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
|
||||||
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
|
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'This row is high');
|
MyWorksheet.WriteText(row, 1, 'This row is high');
|
||||||
MyWorksheet.WriteRowHeight(row, 5);
|
MyWorksheet.WriteRowHeight(row, 5);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Colors:');
|
MyWorksheet.WriteText(row, 1, 'Colors:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'yellow on blue');
|
MyWorksheet.WriteText(row, 2, 'yellow on blue');
|
||||||
MyWorksheet.WriteFontColor(row, 2, scYellow);
|
MyWorksheet.WriteFontColor(row, 2, scYellow);
|
||||||
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
|
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'RGB background color:');
|
MyWorksheet.WriteText(row, 1, 'RGB background color:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'color #FF77C3'); // HTML colors are big-endian
|
MyWorksheet.WriteText(row, 2, 'color #FF77C3'); // HTML colors are big-endian
|
||||||
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
|
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Bold text:');
|
MyWorksheet.WriteText(row, 1, 'Bold text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Bold text');
|
MyWorksheet.WriteText(row, 2, 'Bold text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Italic text:');
|
MyWorksheet.WriteText(row, 1, 'Italic text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Italic text');
|
MyWorksheet.WriteText(row, 2, 'Italic text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Underlined text:');
|
MyWorksheet.WriteText(row, 1, 'Underlined text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Underlined text');
|
MyWorksheet.WriteText(row, 2, 'Underlined text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
MyWorksheet.WriteNumber(row, 0, row);
|
MyWorksheet.WriteNumber(row, 0, row);
|
||||||
MyWorksheet.WriteUTF8Text(row, 1, 'Strike-through text:');
|
MyWorksheet.WriteText(row, 1, 'Strike-through text:');
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'Strike-through text');
|
MyWorksheet.WriteText(row, 2, 'Strike-through text');
|
||||||
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
|
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
|
||||||
inc(row);
|
inc(row);
|
||||||
|
|
||||||
|
@ -73,7 +73,6 @@
|
|||||||
<ComponentName Value="Form1"/>
|
<ComponentName Value="Form1"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="mainform"/>
|
|
||||||
</Unit1>
|
</Unit1>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@ -7,7 +7,7 @@ object Form1: TForm1
|
|||||||
ClientHeight = 634
|
ClientHeight = 634
|
||||||
ClientWidth = 877
|
ClientWidth = 877
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
LCLVersion = '1.5'
|
LCLVersion = '1.7'
|
||||||
object Panel1: TPanel
|
object Panel1: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 40
|
Height = 40
|
||||||
@ -78,6 +78,8 @@ object Form1: TForm1
|
|||||||
Align = alClient
|
Align = alClient
|
||||||
AutoAdvance = aaDown
|
AutoAdvance = aaDown
|
||||||
ColCount = 27
|
ColCount = 27
|
||||||
|
DefaultColWidth = 64
|
||||||
|
DefaultRowHeight = 22
|
||||||
Font.Color = clBlack
|
Font.Color = clBlack
|
||||||
Font.Height = -15
|
Font.Height = -15
|
||||||
Font.Name = 'Calibri'
|
Font.Name = 'Calibri'
|
||||||
@ -125,7 +127,6 @@ object Form1: TForm1
|
|||||||
)
|
)
|
||||||
Title.Visible = True
|
Title.Visible = True
|
||||||
Align = alTop
|
Align = alTop
|
||||||
ParentColor = False
|
|
||||||
object Chart1AreaSeries1: TAreaSeries
|
object Chart1AreaSeries1: TAreaSeries
|
||||||
AreaBrush.Color = clSkyBlue
|
AreaBrush.Color = clSkyBlue
|
||||||
AreaLinesPen.Style = psClear
|
AreaLinesPen.Style = psClear
|
||||||
@ -158,7 +159,6 @@ object Form1: TForm1
|
|||||||
)
|
)
|
||||||
Title.Visible = True
|
Title.Visible = True
|
||||||
Align = alClient
|
Align = alClient
|
||||||
ParentColor = False
|
|
||||||
object Chart2BarSeries1: TBarSeries
|
object Chart2BarSeries1: TBarSeries
|
||||||
Marks.Distance = 15
|
Marks.Distance = 15
|
||||||
Marks.Format = '%0:.2f'
|
Marks.Format = '%0:.2f'
|
||||||
@ -199,7 +199,6 @@ object Form1: TForm1
|
|||||||
)
|
)
|
||||||
Title.Visible = True
|
Title.Visible = True
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
ParentColor = False
|
|
||||||
object Chart3PieSeries1: TPieSeries
|
object Chart3PieSeries1: TPieSeries
|
||||||
Legend.Multiplicity = lmPoint
|
Legend.Multiplicity = lmPoint
|
||||||
Marks.Distance = 8
|
Marks.Distance = 8
|
||||||
|
@ -7,12 +7,20 @@ object FPSChartForm: TFPSChartForm
|
|||||||
ClientHeight = 382
|
ClientHeight = 382
|
||||||
ClientWidth = 697
|
ClientWidth = 697
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
LCLVersion = '1.5'
|
LCLVersion = '1.7'
|
||||||
object MyChart: TChart
|
object MyChart: TChart
|
||||||
|
AnchorSideLeft.Control = Bevel1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = editXAxis
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Owner
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 352
|
Left = 352
|
||||||
Height = 264
|
Height = 263
|
||||||
Top = 112
|
Top = 111
|
||||||
Width = 336
|
Width = 337
|
||||||
AxisList = <
|
AxisList = <
|
||||||
item
|
item
|
||||||
Minors = <>
|
Minors = <>
|
||||||
@ -34,23 +42,39 @@ object FPSChartForm: TFPSChartForm
|
|||||||
Title.Text.Strings = (
|
Title.Text.Strings = (
|
||||||
'TAChart'
|
'TAChart'
|
||||||
)
|
)
|
||||||
ParentColor = False
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Right = 8
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
object MyChartBarSeries1: TBarSeries
|
object MyChartBarSeries1: TBarSeries
|
||||||
BarBrush.Color = clRed
|
BarBrush.Color = clRed
|
||||||
Source = FPSChartSource
|
Source = FPSChartSource
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object WorksheetGrid: TsWorksheetGrid
|
object WorksheetGrid: TsWorksheetGrid
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideTop.Control = editXAxis
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = Bevel1
|
||||||
|
AnchorSideBottom.Control = Owner
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 264
|
Height = 263
|
||||||
Top = 112
|
Top = 111
|
||||||
Width = 336
|
Width = 336
|
||||||
FrozenCols = 0
|
FrozenCols = 0
|
||||||
FrozenRows = 0
|
FrozenRows = 0
|
||||||
ReadFormulas = False
|
ReadFormulas = False
|
||||||
TextOverflow = True
|
TextOverflow = True
|
||||||
|
WorkbookSource = WorksheetGrid.internal
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
AutoAdvance = aaDown
|
AutoAdvance = aaDown
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
ColCount = 27
|
ColCount = 27
|
||||||
|
DefaultColWidth = 64
|
||||||
|
DefaultRowHeight = 22
|
||||||
ExtendedSelect = False
|
ExtendedSelect = False
|
||||||
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goThumbTracking]
|
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goThumbTracking]
|
||||||
RowCount = 101
|
RowCount = 101
|
||||||
@ -70,6 +94,7 @@ object FPSChartForm: TFPSChartForm
|
|||||||
Height = 42
|
Height = 42
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 678
|
Width = 678
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
AutoSize = False
|
AutoSize = False
|
||||||
Caption = 'Please add data to the grid or load it from a file, then choose the location of the data for the X and Y axises and click on the button "Create Graphic" to generate a chart.'
|
Caption = 'Please add data to the grid or load it from a file, then choose the location of the data for the X and Y axises and click on the button "Create Graphic" to generate a chart.'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -147,6 +172,15 @@ object FPSChartForm: TFPSChartForm
|
|||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
Text = 'B3:B14'
|
Text = 'B3:B14'
|
||||||
end
|
end
|
||||||
|
object Bevel1: TBevel
|
||||||
|
AnchorSideLeft.Control = Owner
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
Left = 344
|
||||||
|
Height = 50
|
||||||
|
Top = 83
|
||||||
|
Width = 8
|
||||||
|
Shape = bsSpacer
|
||||||
|
end
|
||||||
object FPSChartSource: TsWorksheetChartSource
|
object FPSChartSource: TsWorksheetChartSource
|
||||||
PointsNumber = 5
|
PointsNumber = 5
|
||||||
YFirstCellCol = 1
|
YFirstCellCol = 1
|
||||||
|
@ -15,6 +15,7 @@ type
|
|||||||
{ TFPSChartForm }
|
{ TFPSChartForm }
|
||||||
|
|
||||||
TFPSChartForm = class(TForm)
|
TFPSChartForm = class(TForm)
|
||||||
|
Bevel1: TBevel;
|
||||||
btnCreateGraphic: TButton;
|
btnCreateGraphic: TButton;
|
||||||
btnLoadSpreadsheet: TButton;
|
btnLoadSpreadsheet: TButton;
|
||||||
editSourceFile: TFileNameEdit;
|
editSourceFile: TFileNameEdit;
|
||||||
|
@ -120,8 +120,6 @@ object Form1: TForm1
|
|||||||
FrozenCols = 0
|
FrozenCols = 0
|
||||||
FrozenRows = 0
|
FrozenRows = 0
|
||||||
ReadFormulas = True
|
ReadFormulas = True
|
||||||
SelectionPen.JoinStyle = pjsMiter
|
|
||||||
SelectionPen.Width = 3
|
|
||||||
WorkbookSource = WorksheetGrid.internal
|
WorkbookSource = WorksheetGrid.internal
|
||||||
Align = alClient
|
Align = alClient
|
||||||
AutoAdvance = aaDown
|
AutoAdvance = aaDown
|
||||||
|
@ -5,7 +5,7 @@ unit mainform;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, Menus, ExtCtrls, ActnList, Spin, Buttons, ButtonPanel,
|
StdCtrls, Menus, ExtCtrls, ActnList, Spin, Buttons, ButtonPanel,
|
||||||
fpspreadsheetgrid, fpsallformats;
|
fpspreadsheetgrid, fpsallformats;
|
||||||
|
|
||||||
@ -47,7 +47,8 @@ var
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
fpcanvas, fpstypes, fpsutils, fpsRegFileFormats, fpspreadsheet;
|
fpcanvas, lazutf8,
|
||||||
|
fpstypes, fpsutils, fpsRegFileFormats, fpspreadsheet;
|
||||||
|
|
||||||
|
|
||||||
{ TForm1 }
|
{ TForm1 }
|
||||||
|
@ -11,7 +11,7 @@ object MainFrm: TMainFrm
|
|||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
LCLVersion = '1.5'
|
LCLVersion = '1.7'
|
||||||
object MainToolBar: TToolBar
|
object MainToolBar: TToolBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 28
|
Height = 28
|
||||||
|
@ -5,7 +5,7 @@ unit wtMain;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Grids, ColorBox, SynEdit,
|
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Grids, ColorBox, SynEdit,
|
||||||
SynEditHighlighter, SynHighlighterHTML, SynHighlighterMulti,
|
SynEditHighlighter, SynHighlighterHTML, SynHighlighterMulti,
|
||||||
SynHighlighterCss, SynGutterCodeFolding, fpspreadsheetgrid,
|
SynHighlighterCss, SynGutterCodeFolding, fpspreadsheetgrid,
|
||||||
@ -216,9 +216,9 @@ var
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
TypInfo, LCLIntf, LCLType, LCLVersion, clipbrd, fpcanvas,
|
TypInfo, LazUtf8, LCLIntf, LCLType, LCLVersion, clipbrd, fpcanvas,
|
||||||
SynHighlighterWikiTable,
|
SynHighlighterWikiTable,
|
||||||
fpsutils;
|
fpsutils, fpsRegFileFormats;
|
||||||
|
|
||||||
const
|
const
|
||||||
DROPDOWN_COUNT = 24;
|
DROPDOWN_COUNT = 24;
|
||||||
@ -264,7 +264,7 @@ begin
|
|||||||
BeginUpdate;
|
BeginUpdate;
|
||||||
try
|
try
|
||||||
if TAction(Sender).Tag = 0 then begin
|
if TAction(Sender).Tag = 0 then begin
|
||||||
CellBorders[Selection] := [];
|
CellBorders[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := [];
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
// Top and bottom edges
|
// Top and bottom edges
|
||||||
@ -421,7 +421,7 @@ begin
|
|||||||
if AcFontItalic.Checked then Include(style, fssItalic);
|
if AcFontItalic.Checked then Include(style, fssItalic);
|
||||||
if AcFontStrikeout.Checked then Include(style, fssStrikeout);
|
if AcFontStrikeout.Checked then Include(style, fssStrikeout);
|
||||||
if AcFontUnderline.Checked then Include(style, fssUnderline);
|
if AcFontUnderline.Checked then Include(style, fssUnderline);
|
||||||
CellFontStyles[Selection] := style;
|
CellFontStyles[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := style;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -433,7 +433,8 @@ begin
|
|||||||
hor_align := TsHorAlignment(TAction(Sender).Tag - HORALIGN_TAG)
|
hor_align := TsHorAlignment(TAction(Sender).Tag - HORALIGN_TAG)
|
||||||
else
|
else
|
||||||
hor_align := haDefault;
|
hor_align := haDefault;
|
||||||
with WorksheetGrid do HorAlignments[Selection] := hor_align;
|
with WorksheetGrid do
|
||||||
|
HorAlignments[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := hor_align;
|
||||||
UpdateHorAlignmentActions;
|
UpdateHorAlignmentActions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -521,13 +522,15 @@ begin
|
|||||||
vert_align := TsVertAlignment(TAction(Sender).Tag - VERTALIGN_TAG)
|
vert_align := TsVertAlignment(TAction(Sender).Tag - VERTALIGN_TAG)
|
||||||
else
|
else
|
||||||
vert_align := vaDefault;
|
vert_align := vaDefault;
|
||||||
with WorksheetGrid do VertAlignments[Selection] := vert_align;
|
with WorksheetGrid do
|
||||||
|
VertAlignments[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := vert_align;
|
||||||
UpdateVertAlignmentActions;
|
UpdateVertAlignmentActions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainFrm.AcWordwrapExecute(Sender: TObject);
|
procedure TMainFrm.AcWordwrapExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do Wordwraps[Selection] := TAction(Sender).Checked;
|
with WorksheetGrid do
|
||||||
|
Wordwraps[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := TAction(Sender).Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainFrm.BeforeRun;
|
procedure TMainFrm.BeforeRun;
|
||||||
@ -558,9 +561,13 @@ var
|
|||||||
clr: TsColor;
|
clr: TsColor;
|
||||||
begin
|
begin
|
||||||
if CbBackgroundColor.ItemIndex <= 0 then
|
if CbBackgroundColor.ItemIndex <= 0 then
|
||||||
with WorksheetGrid do BackgroundColors[Selection] := scNotDefined
|
with WorksheetGrid do
|
||||||
|
BackgroundColors[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] :=
|
||||||
|
scNotDefined
|
||||||
else
|
else
|
||||||
with WorksheetGrid do BackgroundColors[Selection] := PtrInt(CbBackgroundColor.Items.Objects[CbBackgroundColor.ItemIndex]);
|
with WorksheetGrid do
|
||||||
|
BackgroundColors[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] :=
|
||||||
|
PtrInt(CbBackgroundColor.Items.Objects[CbBackgroundColor.ItemIndex]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainFrm.FontComboBoxSelect(Sender: TObject);
|
procedure TMainFrm.FontComboBoxSelect(Sender: TObject);
|
||||||
@ -569,7 +576,8 @@ var
|
|||||||
begin
|
begin
|
||||||
fname := FontCombobox.Items[FontCombobox.ItemIndex];
|
fname := FontCombobox.Items[FontCombobox.ItemIndex];
|
||||||
if fname <> '' then
|
if fname <> '' then
|
||||||
with WorksheetGrid do CellFontNames[Selection] := fName;
|
with WorksheetGrid do
|
||||||
|
CellFontNames[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] := fName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainFrm.FontSizeComboBoxSelect(Sender: TObject);
|
procedure TMainFrm.FontSizeComboBoxSelect(Sender: TObject);
|
||||||
@ -578,7 +586,8 @@ var
|
|||||||
begin
|
begin
|
||||||
sz := StrToInt(FontSizeCombobox.Items[FontSizeCombobox.ItemIndex]);
|
sz := StrToInt(FontSizeCombobox.Items[FontSizeCombobox.ItemIndex]);
|
||||||
if sz > 0 then
|
if sz > 0 then
|
||||||
with WorksheetGrid do CellFontSizes[Selection] := sz;
|
with WorksheetGrid do
|
||||||
|
CellFontSizes[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] := sz;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainFrm.FormActivate(Sender: TObject);
|
procedure TMainFrm.FormActivate(Sender: TObject);
|
||||||
@ -698,8 +707,9 @@ begin
|
|||||||
// Update user interface
|
// Update user interface
|
||||||
Caption := Format('wikitable maker - %s (%s)', [
|
Caption := Format('wikitable maker - %s (%s)', [
|
||||||
AFilename,
|
AFilename,
|
||||||
GetFileFormatName(WorksheetGrid.Workbook.FileFormat)
|
GetSpreadTechnicalName(WorksheetGrid.Workbook.FileFormatID)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
AcShowGridLines.Checked := WorksheetGrid.ShowGridLines;
|
AcShowGridLines.Checked := WorksheetGrid.ShowGridLines;
|
||||||
AcShowHeaders.Checked := WorksheetGrid.ShowHeaders;
|
AcShowHeaders.Checked := WorksheetGrid.ShowHeaders;
|
||||||
AcRowTitles.Checked := WorksheetGrid.FrozenCols <> 0;
|
AcRowTitles.Checked := WorksheetGrid.FrozenCols <> 0;
|
||||||
@ -740,7 +750,8 @@ procedure TMainFrm.UpdateBackgroundColorIndex;
|
|||||||
var
|
var
|
||||||
clr: TsColor;
|
clr: TsColor;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do clr := BackgroundColors[Selection];
|
with WorksheetGrid do
|
||||||
|
clr := BackgroundColors[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
if (clr = scNotDefined) or (clr = scTransparent) then
|
if (clr = scNotDefined) or (clr = scTransparent) then
|
||||||
CbBackgroundColor.ItemIndex := 0 // no fill
|
CbBackgroundColor.ItemIndex := 0 // no fill
|
||||||
else
|
else
|
||||||
@ -753,7 +764,8 @@ var
|
|||||||
ac: TAction;
|
ac: TAction;
|
||||||
hor_align: TsHorAlignment;
|
hor_align: TsHorAlignment;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do hor_align := HorAlignments[Selection];
|
with WorksheetGrid do
|
||||||
|
hor_align := HorAlignments[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
for i:=0 to ActionList.ActionCount-1 do begin
|
for i:=0 to ActionList.ActionCount-1 do begin
|
||||||
ac := TAction(ActionList.Actions[i]);
|
ac := TAction(ActionList.Actions[i]);
|
||||||
if (ac.Tag >= HORALIGN_TAG) and (ac.Tag < HORALIGN_TAG+10) then
|
if (ac.Tag >= HORALIGN_TAG) and (ac.Tag < HORALIGN_TAG+10) then
|
||||||
@ -765,7 +777,8 @@ procedure TMainFrm.UpdateFontNameIndex;
|
|||||||
var
|
var
|
||||||
fname: String;
|
fname: String;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do fname := CellFontNames[Selection];
|
with WorksheetGrid do
|
||||||
|
fname := CellFontNames[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
if fname = '' then
|
if fname = '' then
|
||||||
FontCombobox.ItemIndex := -1
|
FontCombobox.ItemIndex := -1
|
||||||
else
|
else
|
||||||
@ -776,7 +789,8 @@ procedure TMainFrm.UpdateFontSizeIndex;
|
|||||||
var
|
var
|
||||||
sz: Single;
|
sz: Single;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do sz := CellFontSizes[Selection];
|
with WorksheetGrid do
|
||||||
|
sz := CellFontSizes[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
if sz < 0 then
|
if sz < 0 then
|
||||||
FontSizeCombobox.ItemIndex := -1
|
FontSizeCombobox.ItemIndex := -1
|
||||||
else
|
else
|
||||||
@ -787,7 +801,8 @@ procedure TMainFrm.UpdateFontStyleActions;
|
|||||||
var
|
var
|
||||||
style: TsFontStyles;
|
style: TsFontStyles;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do style := CellFontStyles[Selection];
|
with WorksheetGrid do
|
||||||
|
style := CellFontStyles[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
AcFontBold.Checked := fssBold in style;
|
AcFontBold.Checked := fssBold in style;
|
||||||
AcFontItalic.Checked := fssItalic in style;
|
AcFontItalic.Checked := fssItalic in style;
|
||||||
AcFontUnderline.Checked := fssUnderline in style;
|
AcFontUnderline.Checked := fssUnderline in style;
|
||||||
@ -800,7 +815,8 @@ var
|
|||||||
ac: TAction;
|
ac: TAction;
|
||||||
vert_align: TsVertAlignment;
|
vert_align: TsVertAlignment;
|
||||||
begin
|
begin
|
||||||
with WorksheetGrid do vert_align := VertAlignments[Selection];
|
with WorksheetGrid do
|
||||||
|
vert_align := VertAlignments[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
|
||||||
for i:=0 to ActionList.ActionCount-1 do begin
|
for i:=0 to ActionList.ActionCount-1 do begin
|
||||||
ac := TAction(ActionList.Actions[i]);
|
ac := TAction(ActionList.Actions[i]);
|
||||||
if (ac.Tag >= VERTALIGN_TAG) and (ac.Tag < VERTALIGN_TAG+10) then
|
if (ac.Tag >= VERTALIGN_TAG) and (ac.Tag < VERTALIGN_TAG+10) then
|
||||||
|
@ -192,7 +192,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
for i:=0 to ExportFields.Count-1 do
|
for i:=0 to ExportFields.Count-1 do
|
||||||
begin
|
begin
|
||||||
FSheet.WriteUTF8Text(FRow,i,ExportFields[i].ExportedName);
|
FSheet.WriteText(FRow,i,ExportFields[i].ExportedName);
|
||||||
end;
|
end;
|
||||||
inc(FRow);
|
inc(FRow);
|
||||||
end;
|
end;
|
||||||
@ -304,13 +304,13 @@ begin
|
|||||||
else if Field.Datatype in [ftBCD,ftCurrency,ftFloat,ftFMTBcd] then
|
else if Field.Datatype in [ftBCD,ftCurrency,ftFloat,ftFMTBcd] then
|
||||||
FSheet.WriteCurrency(FRow, EF.Index, Field.AsFloat)
|
FSheet.WriteCurrency(FRow, EF.Index, Field.AsFloat)
|
||||||
else if Field.DataType in [ftString,ftFixedChar] then
|
else if Field.DataType in [ftString,ftFixedChar] then
|
||||||
FSheet.WriteUTF8Text(FRow, EF.Index, Field.AsString)
|
FSheet.WriteText(FRow, EF.Index, Field.AsString)
|
||||||
else if (Field.DataType in ([ftWideMemo,ftWideString,ftFixedWideChar]+BlobFieldTypes)) then
|
else if (Field.DataType in ([ftWideMemo,ftWideString,ftFixedWideChar]+BlobFieldTypes)) then
|
||||||
FSheet.WriteUTF8Text(FRow, EF.Index, UTF8Encode(Field.AsWideString))
|
FSheet.WriteText(FRow, EF.Index, UTF8Encode(Field.AsWideString))
|
||||||
{ Note: we test for the wide text fields before the MemoFieldTypes, in order to
|
{ Note: we test for the wide text fields before the MemoFieldTypes, in order to
|
||||||
let ftWideMemo end up at the right place }
|
let ftWideMemo end up at the right place }
|
||||||
else if Field.DataType in MemoFieldTypes then
|
else if Field.DataType in MemoFieldTypes then
|
||||||
FSheet.WriteUTF8Text(FRow, EF.Index, Field.AsString)
|
FSheet.WriteText(FRow, EF.Index, Field.AsString)
|
||||||
else if Field.DataType=ftBoolean then
|
else if Field.DataType=ftBoolean then
|
||||||
FSheet.WriteBoolValue(FRow, EF.Index, Field.AsBoolean)
|
FSheet.WriteBoolValue(FRow, EF.Index, Field.AsBoolean)
|
||||||
else if Field.DataType in DateFieldTypes then
|
else if Field.DataType in DateFieldTypes then
|
||||||
@ -327,7 +327,7 @@ begin
|
|||||||
FSheet.WriteDateTime(FRow, EF.Index, Field.AsDateTime, nfShortDateTime);
|
FSheet.WriteDateTime(FRow, EF.Index, Field.AsDateTime, nfShortDateTime);
|
||||||
end
|
end
|
||||||
else //fallback to string
|
else //fallback to string
|
||||||
FSheet.WriteUTF8Text(FRow, EF.Index, Field.AsString);
|
FSheet.WriteText(FRow, EF.Index, Field.AsString);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1321,7 +1321,7 @@ begin
|
|||||||
if (col <> nil) and (col^.Width > 0) then
|
if (col <> nil) and (col^.Width > 0) then
|
||||||
w := col^.Width;
|
w := col^.Width;
|
||||||
end;
|
end;
|
||||||
w := w * FWorkbook.GetDefaultFont.Size;
|
w := FWorkbook.ConvertUnits(w, FWorkbook.Units, suPoints);
|
||||||
Result:= Format(' width="%.1fpt"', [w], FPointSeparatorSettings);
|
Result:= Format(' width="%.1fpt"', [w], FPointSeparatorSettings);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1396,7 +1396,7 @@ begin
|
|||||||
row := FWorksheet.FindRow(ARowIndex);
|
row := FWorksheet.FindRow(ARowIndex);
|
||||||
if row <> nil then
|
if row <> nil then
|
||||||
h := row^.Height;
|
h := row^.Height;
|
||||||
h := (h + ROW_HEIGHT_CORRECTION) * FWorkbook.GetDefaultFont.Size;
|
h := FWorkbook.ConvertUnits(h, FWorkbook.Units, suPoints);
|
||||||
Result := Format(' height="%.1fpt"', [h], FPointSeparatorSettings);
|
Result := Format(' height="%.1fpt"', [h], FPointSeparatorSettings);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -54,8 +54,8 @@ type
|
|||||||
function LoadFromStream(AStream: TStream; AName: String): Boolean;
|
function LoadFromStream(AStream: TStream; AName: String): Boolean;
|
||||||
property FileName: String read FFileName;
|
property FileName: String read FFileName;
|
||||||
property ImageType: TsImagetype read FImageType;
|
property ImageType: TsImagetype read FImageType;
|
||||||
property ImageWidth: Double read FWidth;
|
property ImageWidth: Double read FWidth write FWidth;
|
||||||
property ImageHeight: Double read FHeight;
|
property ImageHeight: Double read FHeight write FWidth;
|
||||||
property Stream: TMemoryStream read FStream;
|
property Stream: TMemoryStream read FStream;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -866,17 +866,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TsEmbeddedObj.CheckStream(AImageType: TsImageType): Boolean;
|
function TsEmbeddedObj.CheckStream(AImageType: TsImageType): Boolean;
|
||||||
var
|
|
||||||
w, h: Double;
|
|
||||||
begin
|
begin
|
||||||
FImageType := GetImageInfo(FStream, w, h, AImageType);
|
FImageType := GetImageInfo(FStream, FWidth, FHeight, AImageType);
|
||||||
if FImageType <> itUnknown then
|
// FWidth and FHeight are in inches here.
|
||||||
begin
|
Result := FImageType <> itUnknown;
|
||||||
FWidth := inToMM(w);
|
|
||||||
FHeight := inToMM(h);
|
|
||||||
Result := true;
|
|
||||||
end else
|
|
||||||
Result := false;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TsEmbeddedObj.LoadFromFile(const AFileName: String): Boolean;
|
function TsEmbeddedObj.LoadFromFile(const AFileName: String): Boolean;
|
||||||
|
@ -1436,7 +1436,7 @@ function ApplyTextFormat(AText: String; AParams: TsNumFormatParams): String;
|
|||||||
var
|
var
|
||||||
sct: TsNumFormatSection;
|
sct: TsNumFormatSection;
|
||||||
element: TsNumFormatElement;
|
element: TsNumFormatElement;
|
||||||
i, n: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
for sct in AParams.Sections do
|
for sct in AParams.Sections do
|
||||||
|
@ -328,8 +328,8 @@ const
|
|||||||
|
|
||||||
FALSE_TRUE: Array[boolean] of String = ('false', 'true');
|
FALSE_TRUE: Array[boolean] of String = ('false', 'true');
|
||||||
|
|
||||||
COLWIDTH_EPS = 1e-2; // for mm
|
COLWIDTH_EPS = 1e-3;
|
||||||
ROWHEIGHT_EPS = 1e-2; // for lines
|
ROWHEIGHT_EPS = 1e-3;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -344,7 +344,7 @@ type
|
|||||||
TColumnStyleData = class
|
TColumnStyleData = class
|
||||||
public
|
public
|
||||||
Name: String;
|
Name: String;
|
||||||
ColWidth: Double; // in mm
|
ColWidth: Double; // in workbook units
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Column data items stored in the ColumnList }
|
{ Column data items stored in the ColumnList }
|
||||||
@ -359,7 +359,7 @@ type
|
|||||||
TRowStyleData = class
|
TRowStyleData = class
|
||||||
public
|
public
|
||||||
Name: String;
|
Name: String;
|
||||||
RowHeight: Double; // in mm
|
RowHeight: Double; // in workbook units
|
||||||
AutoRowHeight: Boolean;
|
AutoRowHeight: Boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1030,31 +1030,20 @@ end;
|
|||||||
procedure TsSpreadOpenDocReader.ApplyColWidths;
|
procedure TsSpreadOpenDocReader.ApplyColWidths;
|
||||||
var
|
var
|
||||||
colIndex: Integer;
|
colIndex: Integer;
|
||||||
colWidth: Single;
|
|
||||||
colStyleIndex: Integer;
|
colStyleIndex: Integer;
|
||||||
colStyle: TColumnStyleData;
|
colStyle: TColumnStyleData;
|
||||||
factor: Double;
|
|
||||||
col: PCol;
|
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
factor := FWorkbook.GetDefaultFont.Size/2;
|
|
||||||
for i:=0 to FColumnList.Count-1 do
|
for i:=0 to FColumnList.Count-1 do
|
||||||
begin
|
begin
|
||||||
colIndex := TColumnData(FColumnList[i]).Col;
|
colIndex := TColumnData(FColumnList[i]).Col;
|
||||||
colStyleIndex := TColumnData(FColumnList[i]).ColStyleIndex;
|
colStyleIndex := TColumnData(FColumnList[i]).ColStyleIndex;
|
||||||
colStyle := TColumnStyleData(FColumnStyleList[colStyleIndex]);
|
colStyle := TColumnStyleData(FColumnStyleList[colStyleIndex]);
|
||||||
{ The column width stored in colStyle is in mm (see ReadColumnStyles).
|
// Add only column records to the worksheet if their width is different from
|
||||||
We convert it to character count by converting it to points and then by
|
// the default column width. The column width stored in colStyle is already
|
||||||
dividing the points by the approximate width of the '0' character which
|
// in workbook units (see ReadColumnStyles).
|
||||||
is assumed to be 50% of the default font point size. }
|
if not SameValue(colStyle.ColWidth, FWorksheet.DefaultColWidth, COLWIDTH_EPS) then
|
||||||
colWidth := mmToPts(colStyle.ColWidth)/factor;
|
FWorksheet.WriteColWidth(colIndex, colStyle.ColWidth, FWorkbook.Units);
|
||||||
{ Add only column records to the worksheet if their width is different from
|
|
||||||
the default column width. }
|
|
||||||
if not SameValue(colWidth, FWorksheet.DefaultColWidth, COLWIDTH_EPS) then
|
|
||||||
begin
|
|
||||||
col := FWorksheet.GetCol(colIndex);
|
|
||||||
col^.Width := colWidth;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1828,7 +1817,8 @@ begin
|
|||||||
s := GetAttrValue(styleChildNode, 'style:column-width');
|
s := GetAttrValue(styleChildNode, 'style:column-width');
|
||||||
if s <> '' then
|
if s <> '' then
|
||||||
begin
|
begin
|
||||||
colWidth := PtsToMM(HTMLLengthStrToPts(s)); // convert to mm
|
colWidth := FWorkbook.ConvertUnits(HTMLLengthStrToPts(s), suPoints, FWorkbook.Units);
|
||||||
|
// convert to workbook units
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3235,7 +3225,7 @@ var
|
|||||||
rowStyleName: String;
|
rowStyleName: String;
|
||||||
rowStyleIndex: Integer;
|
rowStyleIndex: Integer;
|
||||||
rowStyle: TRowStyleData;
|
rowStyle: TRowStyleData;
|
||||||
rowHeight: Single;
|
rowHeight: Double;
|
||||||
autoRowHeight: Boolean;
|
autoRowHeight: Boolean;
|
||||||
col: Integer;
|
col: Integer;
|
||||||
cellNode: TDOMNode;
|
cellNode: TDOMNode;
|
||||||
@ -3254,11 +3244,7 @@ var
|
|||||||
if rowStyleIndex > -1 then // just for safety
|
if rowStyleIndex > -1 then // just for safety
|
||||||
begin
|
begin
|
||||||
rowStyle := TRowStyleData(FRowStyleList[rowStyleIndex]);
|
rowStyle := TRowStyleData(FRowStyleList[rowStyleIndex]);
|
||||||
rowHeight := rowStyle.RowHeight; // in mm (see ReadRowStyles)
|
rowHeight := rowStyle.RowHeight; // in Workbook units (see ReadRowStyles)
|
||||||
rowHeight := mmToPts(rowHeight) / Workbook.GetDefaultFontSize;
|
|
||||||
if rowHeight > ROW_HEIGHT_CORRECTION
|
|
||||||
then rowHeight := rowHeight - ROW_HEIGHT_CORRECTION // in "lines"
|
|
||||||
else rowHeight := 0;
|
|
||||||
autoRowHeight := rowStyle.AutoRowHeight;
|
autoRowHeight := rowStyle.AutoRowHeight;
|
||||||
end else
|
end else
|
||||||
autoRowHeight := true;
|
autoRowHeight := true;
|
||||||
@ -3356,7 +3342,7 @@ var
|
|||||||
// Transfer non-default row heights to sheet's rows
|
// Transfer non-default row heights to sheet's rows
|
||||||
if not autoRowHeight then
|
if not autoRowHeight then
|
||||||
for i:=1 to rowsRepeated do
|
for i:=1 to rowsRepeated do
|
||||||
FWorksheet.WriteRowHeight(row + i - 1, rowHeight);
|
FWorksheet.WriteRowHeight(row + i - 1, rowHeight, FWorkbook.Units);
|
||||||
|
|
||||||
row := row + rowsRepeated;
|
row := row + rowsRepeated;
|
||||||
end;
|
end;
|
||||||
@ -3416,7 +3402,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
s := GetAttrValue(styleChildNode, 'style:row-height');
|
s := GetAttrValue(styleChildNode, 'style:row-height');
|
||||||
if s <> '' then
|
if s <> '' then
|
||||||
rowHeight := PtsToMm(HTMLLengthStrToPts(s)); // convert to mm
|
rowHeight := FWorkbook.ConvertUnits(HTMLLengthStrToPts(s), suPoints, FWorkbook.Units);
|
||||||
|
// convert to workbook units
|
||||||
s := GetAttrValue(styleChildNode, 'style:use-optimal-row-height');
|
s := GetAttrValue(styleChildNode, 'style:use-optimal-row-height');
|
||||||
if s = 'true' then
|
if s = 'true' then
|
||||||
auto := true;
|
auto := true;
|
||||||
@ -4206,21 +4193,19 @@ var
|
|||||||
found: Boolean;
|
found: Boolean;
|
||||||
colstyle: TColumnStyleData;
|
colstyle: TColumnStyleData;
|
||||||
w: Double;
|
w: Double;
|
||||||
multiplier: Double;
|
|
||||||
begin
|
begin
|
||||||
{ At first, add the default column width }
|
{ At first, add the default column width }
|
||||||
colStyle := TColumnStyleData.Create;
|
colStyle := TColumnStyleData.Create;
|
||||||
colStyle.Name := 'co1';
|
colStyle.Name := 'co1';
|
||||||
colStyle.ColWidth := 12; //Workbook.DefaultColWidth;
|
colStyle.ColWidth := FWorkbook.ConvertUnits(12, suChars, FWorkbook.Units);
|
||||||
FColumnStyleList.Add(colStyle);
|
FColumnStyleList.Add(colStyle);
|
||||||
|
|
||||||
for i:=0 to Workbook.GetWorksheetCount-1 do
|
for i:=0 to Workbook.GetWorksheetCount-1 do
|
||||||
begin
|
begin
|
||||||
sheet := Workbook.GetWorksheetByIndex(i);
|
sheet := Workbook.GetWorksheetByIndex(i);
|
||||||
// colStyle.ColWidth := sheet.DefaultColWidth;
|
|
||||||
for c:=0 to sheet.GetLastColIndex do
|
for c:=0 to sheet.GetLastColIndex do
|
||||||
begin
|
begin
|
||||||
w := sheet.GetColWidth(c);
|
w := sheet.GetColWidth(c, FWorkbook.Units);
|
||||||
// Look for this width in the current ColumnStyleList
|
// Look for this width in the current ColumnStyleList
|
||||||
found := false;
|
found := false;
|
||||||
for j := 0 to FColumnStyleList.Count-1 do
|
for j := 0 to FColumnStyleList.Count-1 do
|
||||||
@ -4239,7 +4224,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
(*
|
||||||
{ fpspreadsheet's column width is the count of '0' characters of the
|
{ fpspreadsheet's column width is the count of '0' characters of the
|
||||||
default font. On average, the width of the '0' is about half of the
|
default font. On average, the width of the '0' is about half of the
|
||||||
point size of the font. --> we can convert the fps col width to pts and
|
point size of the font. --> we can convert the fps col width to pts and
|
||||||
@ -4250,6 +4235,7 @@ begin
|
|||||||
w := TColumnStyleData(FColumnStyleList[i]).ColWidth * multiplier;
|
w := TColumnStyleData(FColumnStyleList[i]).ColWidth * multiplier;
|
||||||
TColumnStyleData(FColumnStyleList[i]).ColWidth := PtsToMM(w);
|
TColumnStyleData(FColumnStyleList[i]).ColWidth := PtsToMM(w);
|
||||||
end;
|
end;
|
||||||
|
*)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Collects the fonts used by headers and footers in the FHeaderFooterFontList }
|
{ Collects the fonts used by headers and footers in the FHeaderFooterFontList }
|
||||||
@ -4308,13 +4294,13 @@ var
|
|||||||
row: PRow;
|
row: PRow;
|
||||||
found: Boolean;
|
found: Boolean;
|
||||||
rowstyle: TRowStyleData;
|
rowstyle: TRowStyleData;
|
||||||
h, multiplier: Double;
|
h: Double;
|
||||||
begin
|
begin
|
||||||
{ At first, add the default row height }
|
{ At first, add the default row height }
|
||||||
{ Initially, row height units will be the same as in the sheet, i.e. in "lines" }
|
{ Initially, row height units will be the same as in the workbook }
|
||||||
rowStyle := TRowStyleData.Create;
|
rowStyle := TRowStyleData.Create;
|
||||||
rowStyle.Name := 'ro1';
|
rowStyle.Name := 'ro1';
|
||||||
rowStyle.RowHeight := 1; //Workbook.DefaultRowHeight;
|
rowStyle.RowHeight := FWorkbook.ConvertUnits(15, suPoints, FWorkbook.Units);
|
||||||
rowStyle.AutoRowHeight := true;
|
rowStyle.AutoRowHeight := true;
|
||||||
FRowStyleList.Add(rowStyle);
|
FRowStyleList.Add(rowStyle);
|
||||||
|
|
||||||
@ -4326,7 +4312,7 @@ begin
|
|||||||
row := sheet.FindRow(r);
|
row := sheet.FindRow(r);
|
||||||
if row <> nil then
|
if row <> nil then
|
||||||
begin
|
begin
|
||||||
h := sheet.GetRowHeight(r);
|
h := sheet.GetRowHeight(r, FWorkbook.Units);
|
||||||
// Look for this height in the current RowStyleList
|
// Look for this height in the current RowStyleList
|
||||||
found := false;
|
found := false;
|
||||||
for j:=0 to FRowStyleList.Count-1 do
|
for j:=0 to FRowStyleList.Count-1 do
|
||||||
@ -4348,7 +4334,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
(*
|
||||||
{ fpspreadsheet's row heights are measured as line count of the default font.
|
{ fpspreadsheet's row heights are measured as line count of the default font.
|
||||||
Using the default font size (which is in points) we convert the line count
|
Using the default font size (which is in points) we convert the line count
|
||||||
to points and then to millimeters as needed by ods. }
|
to points and then to millimeters as needed by ods. }
|
||||||
@ -4357,7 +4343,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
h := (TRowStyleData(FRowStyleList[i]).RowHeight + ROW_HEIGHT_CORRECTION) * multiplier;
|
h := (TRowStyleData(FRowStyleList[i]).RowHeight + ROW_HEIGHT_CORRECTION) * multiplier;
|
||||||
TRowStyleData(FRowStyleList[i]).RowHeight := PtsToMM(h);
|
TRowStyleData(FRowStyleList[i]).RowHeight := PtsToMM(h);
|
||||||
end;
|
end; *)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Is called before zipping the individual file parts. Rewinds the streams. }
|
{ Is called before zipping the individual file parts. Rewinds the streams. }
|
||||||
@ -4847,7 +4833,8 @@ begin
|
|||||||
// Column width
|
// Column width
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<style:table-column-properties style:column-width="%.3fmm" fo:break-before="auto"/>',
|
'<style:table-column-properties style:column-width="%.3fmm" fo:break-before="auto"/>',
|
||||||
[colStyle.ColWidth], FPointSeparatorSettings));
|
[FWorkbook.ConvertUnits(colStyle.ColWidth, FWorkbook.Units, suMillimeters)],
|
||||||
|
FPointSeparatorSettings));
|
||||||
|
|
||||||
// End
|
// End
|
||||||
AppendToStream(AStream,
|
AppendToStream(AStream,
|
||||||
@ -4860,15 +4847,16 @@ procedure TsSpreadOpenDocWriter.WriteColumns(AStream: TStream;
|
|||||||
var
|
var
|
||||||
lastCol: Integer;
|
lastCol: Integer;
|
||||||
c, k: Integer;
|
c, k: Integer;
|
||||||
w, w_mm: Double;
|
w: Double;
|
||||||
widthMultiplier: Double;
|
// w, w_mm: Double;
|
||||||
|
// widthMultiplier: Double;
|
||||||
styleName: String;
|
styleName: String;
|
||||||
colsRepeated: Integer;
|
colsRepeated: Integer;
|
||||||
colsRepeatedStr: String;
|
colsRepeatedStr: String;
|
||||||
firstRepeatedPrintCol, lastRepeatedPrintCol: Longint;
|
firstRepeatedPrintCol, lastRepeatedPrintCol: Longint;
|
||||||
headerCols: Boolean;
|
headerCols: Boolean;
|
||||||
begin
|
begin
|
||||||
widthMultiplier := Workbook.GetFont(0).Size / 2;
|
// widthMultiplier := Workbook.GetFont(0).Size / 2;
|
||||||
lastCol := ASheet.GetLastColIndex;
|
lastCol := ASheet.GetLastColIndex;
|
||||||
firstRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.FirstIndex;
|
firstRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.FirstIndex;
|
||||||
lastRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.LastIndex;
|
lastRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.LastIndex;
|
||||||
@ -4881,9 +4869,7 @@ begin
|
|||||||
c := 0;
|
c := 0;
|
||||||
while (c <= lastCol) do
|
while (c <= lastCol) do
|
||||||
begin
|
begin
|
||||||
w := ASheet.GetColWidth(c);
|
w := ASheet.GetColWidth(c, FWorkbook.Units);
|
||||||
// Convert to mm
|
|
||||||
w_mm := PtsToMM(w * widthMultiplier);
|
|
||||||
|
|
||||||
if (c = firstRepeatedPrintCol) then
|
if (c = firstRepeatedPrintCol) then
|
||||||
begin
|
begin
|
||||||
@ -4894,7 +4880,7 @@ begin
|
|||||||
// Find width in ColumnStyleList to retrieve corresponding style name
|
// Find width in ColumnStyleList to retrieve corresponding style name
|
||||||
styleName := '';
|
styleName := '';
|
||||||
for k := 0 to FColumnStyleList.Count-1 do
|
for k := 0 to FColumnStyleList.Count-1 do
|
||||||
if SameValue(TColumnStyleData(FColumnStyleList[k]).ColWidth, w_mm, COLWIDTH_EPS) then begin
|
if SameValue(TColumnStyleData(FColumnStyleList[k]).ColWidth, w, COLWIDTH_EPS) then begin
|
||||||
styleName := TColumnStyleData(FColumnStyleList[k]).Name;
|
styleName := TColumnStyleData(FColumnStyleList[k]).Name;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
@ -4907,7 +4893,7 @@ begin
|
|||||||
if headerCols then
|
if headerCols then
|
||||||
while (k <= lastCol) and (k <= lastRepeatedPrintCol) do
|
while (k <= lastCol) and (k <= lastRepeatedPrintCol) do
|
||||||
begin
|
begin
|
||||||
if ASheet.GetColWidth(k) = w then
|
if ASheet.GetColWidth(k, FWorkbook.Units) = w then
|
||||||
inc(colsRepeated)
|
inc(colsRepeated)
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
@ -4916,7 +4902,7 @@ begin
|
|||||||
else
|
else
|
||||||
while (k <= lastCol) and (k < firstRepeatedPrintCol) do
|
while (k <= lastCol) and (k < firstRepeatedPrintCol) do
|
||||||
begin
|
begin
|
||||||
if ASheet.GetColWidth(k) = w then
|
if ASheet.GetColWidth(k, FWorkbook.Units) = w then
|
||||||
inc(colsRepeated)
|
inc(colsRepeated)
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
@ -5231,8 +5217,7 @@ var
|
|||||||
cell: PCell; // current cell
|
cell: PCell; // current cell
|
||||||
styleName: String;
|
styleName: String;
|
||||||
k: Integer;
|
k: Integer;
|
||||||
h, h_mm: Single; // row height in "lines" and millimeters, respectively
|
h, h1: Double;
|
||||||
h1: Single;
|
|
||||||
colsRepeated: Cardinal;
|
colsRepeated: Cardinal;
|
||||||
rowsRepeated: Cardinal;
|
rowsRepeated: Cardinal;
|
||||||
colsRepeatedStr: String;
|
colsRepeatedStr: String;
|
||||||
@ -5240,12 +5225,10 @@ var
|
|||||||
firstCol, firstRow, lastCol, lastRow: Cardinal;
|
firstCol, firstRow, lastCol, lastRow: Cardinal;
|
||||||
firstRepeatedPrintRow, lastRepeatedPrintRow: Cardinal;
|
firstRepeatedPrintRow, lastRepeatedPrintRow: Cardinal;
|
||||||
rowStyleData: TRowStyleData;
|
rowStyleData: TRowStyleData;
|
||||||
defFontSize: Single;
|
|
||||||
emptyRowsAbove: Boolean;
|
emptyRowsAbove: Boolean;
|
||||||
headerRows: Boolean;
|
headerRows: Boolean;
|
||||||
begin
|
begin
|
||||||
// some abbreviations...
|
// some abbreviations...
|
||||||
defFontSize := Workbook.GetFont(0).Size;
|
|
||||||
GetSheetDimensions(ASheet, firstRow, lastRow, firstCol, lastCol);
|
GetSheetDimensions(ASheet, firstRow, lastRow, firstCol, lastCol);
|
||||||
emptyRowsAbove := firstRow > 0;
|
emptyRowsAbove := firstRow > 0;
|
||||||
|
|
||||||
@ -5278,12 +5261,11 @@ begin
|
|||||||
begin
|
begin
|
||||||
styleName := '';
|
styleName := '';
|
||||||
|
|
||||||
h := row^.Height; // row height in "lines"
|
h := row^.Height; // row height in workbook units
|
||||||
h_mm := PtsToMM((h + ROW_HEIGHT_CORRECTION) * defFontSize); // in mm
|
|
||||||
for k := 0 to FRowStyleList.Count-1 do begin
|
for k := 0 to FRowStyleList.Count-1 do begin
|
||||||
rowStyleData := TRowStyleData(FRowStyleList[k]);
|
rowStyleData := TRowStyleData(FRowStyleList[k]);
|
||||||
// Compare row heights, but be aware of rounding errors
|
// Compare row heights, but be aware of rounding errors
|
||||||
if SameValue(rowStyleData.RowHeight, h_mm, 1E-3) then
|
if SameValue(rowStyleData.RowHeight, h, ROWHEIGHT_EPS) then
|
||||||
begin
|
begin
|
||||||
styleName := rowStyleData.Name;
|
styleName := rowStyleData.Name;
|
||||||
break;
|
break;
|
||||||
@ -5318,7 +5300,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
if ASheet.Cells.GetFirstCellOfRow(rr) <> nil then
|
if ASheet.Cells.GetFirstCellOfRow(rr) <> nil then
|
||||||
break;
|
break;
|
||||||
h1 := ASheet.GetRowHeight(rr);
|
h1 := ASheet.GetRowHeight(rr, FWorkbook.Units);
|
||||||
if not SameValue(h, h1, ROWHEIGHT_EPS) then
|
if not SameValue(h, h1, ROWHEIGHT_EPS) then
|
||||||
break;
|
break;
|
||||||
inc(rr);
|
inc(rr);
|
||||||
@ -5431,7 +5413,9 @@ begin
|
|||||||
|
|
||||||
// Column width
|
// Column width
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<style:table-row-properties style:row-height="%.3fmm" ', [rowStyle.RowHeight], FPointSeparatorSettings));
|
'<style:table-row-properties style:row-height="%.3fmm" ',
|
||||||
|
[FWorkbook.ConvertUnits(rowStyle.RowHeight, FWorkbook.Units, suMillimeters)],
|
||||||
|
FPointSeparatorSettings));
|
||||||
if rowStyle.AutoRowHeight then
|
if rowStyle.AutoRowHeight then
|
||||||
AppendToStream(AStream, 'style:use-optimal-row-height="true" ');
|
AppendToStream(AStream, 'style:use-optimal-row-height="true" ');
|
||||||
AppendToStream(AStream, 'fo:break-before="auto"/>');
|
AppendToStream(AStream, 'fo:break-before="auto"/>');
|
||||||
@ -6041,25 +6025,20 @@ function TsSpreadOpenDocWriter.WritePageLayoutAsXMLString(AStyleName: String;
|
|||||||
function CalcStyleStr(AName, AHeaderFooterImageStr: String;
|
function CalcStyleStr(AName, AHeaderFooterImageStr: String;
|
||||||
APageMargin, AHeaderFooterMargin: Double): String;
|
APageMargin, AHeaderFooterMargin: Double): String;
|
||||||
var
|
var
|
||||||
h: Double;
|
|
||||||
marginKind: String;
|
marginKind: String;
|
||||||
begin
|
begin
|
||||||
h := PtsToMM(FWorkbook.GetDefaultFontSize);
|
|
||||||
if AName = 'header' then marginKind := 'bottom' else marginKind := 'top';
|
if AName = 'header' then marginKind := 'bottom' else marginKind := 'top';
|
||||||
Result := Format(
|
Result := Format(
|
||||||
'<style:%s-style>' + // e.g. <style:header-style>
|
'<style:%s-style>' + // e.g. <style:header-style>
|
||||||
'<style:header-footer-properties ' +
|
'<style:header-footer-properties ' +
|
||||||
'fo:margin-left="0mm" fo:margin-right="0mm" '+
|
'fo:margin-left="0mm" fo:margin-right="0mm" '+
|
||||||
// 'fo:min-height="%.2fmm" fo:margin-%s="%.2fmm" ' + // margin-bottom or -top
|
'svg:height="%.2fmm" fo:margin-%s="%.2fmm" ' + // fo:margin-bottom or -top
|
||||||
'svg:height="%.2fmm" fo:margin-%s="%.2fmm" ' +
|
|
||||||
'fo:background-color="transparent">' +
|
'fo:background-color="transparent">' +
|
||||||
'%s' +
|
'%s' +
|
||||||
'</style:header-footer-properties>' +
|
'</style:header-footer-properties>' +
|
||||||
'</style:%s-style>', [
|
'</style:%s-style>', [
|
||||||
AName,
|
AName,
|
||||||
APageMargin - AHeaderFooterMargin, marginKind, 0.0, // - h, marginKind, h,
|
APageMargin - AHeaderFooterMargin, marginKind, 0.0,
|
||||||
// AHeaderFooterMargin, marginKind, APageMargin-AHeaderFooterMargin-h,
|
|
||||||
// AHeaderFooterMargin-APageMargin-h, marginKind, AHeaderFooterMargin-APageMargin,
|
|
||||||
AHeaderFooterImageStr,
|
AHeaderFooterImageStr,
|
||||||
AName
|
AName
|
||||||
], FPointSeparatorSettings);
|
], FPointSeparatorSettings);
|
||||||
@ -6387,19 +6366,17 @@ var
|
|||||||
value: variant;
|
value: variant;
|
||||||
styleCell: PCell;
|
styleCell: PCell;
|
||||||
styleName: String;
|
styleName: String;
|
||||||
h, h_mm: Single; // row height in "lines" and millimeters, respectively
|
h: Single; // row height workbook units
|
||||||
k: Integer;
|
k: Integer;
|
||||||
rowStyleData: TRowStyleData;
|
rowStyleData: TRowStyleData;
|
||||||
rowsRepeated: Cardinal;
|
rowsRepeated: Cardinal;
|
||||||
colsRepeated: Cardinal;
|
colsRepeated: Cardinal;
|
||||||
colsRepeatedStr: String;
|
colsRepeatedStr: String;
|
||||||
defFontSize: Single;
|
|
||||||
lastCol, lastRow: Cardinal;
|
lastCol, lastRow: Cardinal;
|
||||||
begin
|
begin
|
||||||
// some abbreviations...
|
// some abbreviations...
|
||||||
lastCol := Workbook.VirtualColCount - 1;
|
lastCol := Workbook.VirtualColCount - 1;
|
||||||
lastRow := Workbook.VirtualRowCount - 1;
|
lastRow := Workbook.VirtualRowCount - 1;
|
||||||
defFontSize := Workbook.GetFont(0).Size;
|
|
||||||
|
|
||||||
rowsRepeated := 1;
|
rowsRepeated := 1;
|
||||||
r := 0;
|
r := 0;
|
||||||
@ -6413,13 +6390,12 @@ begin
|
|||||||
begin
|
begin
|
||||||
styleName := '';
|
styleName := '';
|
||||||
|
|
||||||
h := row^.Height; // row height in "lines"
|
h := row^.Height; // row height in workbook units
|
||||||
h_mm := PtsToMM((h + ROW_HEIGHT_CORRECTION) * defFontSize); // in mm
|
|
||||||
for k := 0 to FRowStyleList.Count-1 do
|
for k := 0 to FRowStyleList.Count-1 do
|
||||||
begin
|
begin
|
||||||
rowStyleData := TRowStyleData(FRowStyleList[k]);
|
rowStyleData := TRowStyleData(FRowStyleList[k]);
|
||||||
// Compare row heights, but be aware of rounding errors
|
// Compare row heights, but be aware of rounding errors
|
||||||
if SameValue(rowStyleData.RowHeight, h_mm, 1E-3) then
|
if SameValue(rowStyleData.RowHeight, h, ROWHEIGHT_EPS) then
|
||||||
begin
|
begin
|
||||||
styleName := rowStyleData.Name;
|
styleName := rowStyleData.Name;
|
||||||
break;
|
break;
|
||||||
@ -6431,7 +6407,6 @@ begin
|
|||||||
|
|
||||||
// No empty rows allowed here for the moment!
|
// No empty rows allowed here for the moment!
|
||||||
|
|
||||||
|
|
||||||
// Write the row XML
|
// Write the row XML
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<table:table-row table:style-name="%s">', [styleName]));
|
'<table:table-row table:style-name="%s">', [styleName]));
|
||||||
|
@ -55,12 +55,12 @@ type
|
|||||||
|
|
||||||
{@@ The record TRow contains information about a spreadsheet row:
|
{@@ The record TRow contains information about a spreadsheet row:
|
||||||
@param Row The index of the row (beginning with 0)
|
@param Row The index of the row (beginning with 0)
|
||||||
@param Height The height of the row (expressed as lines count of the default font)
|
@param Height The height of the row (expressed in the units defined in the workbook)
|
||||||
Only rows with heights that cannot be derived from the font height have a
|
Only rows with heights that cannot be derived from the font height have a
|
||||||
row record. }
|
row record. }
|
||||||
TRow = record
|
TRow = record
|
||||||
Row: Cardinal;
|
Row: Cardinal;
|
||||||
Height: Single; // in "lines"
|
Height: Single;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ Pointer to a TRow record }
|
{@@ Pointer to a TRow record }
|
||||||
@ -68,11 +68,11 @@ type
|
|||||||
|
|
||||||
{@@ The record TCol contains information about a spreadsheet column:
|
{@@ The record TCol contains information about a spreadsheet column:
|
||||||
@param Col The index of the column (beginning with 0)
|
@param Col The index of the column (beginning with 0)
|
||||||
@param Width The width of the column (expressed in character count of the "0" character of the default font.
|
@param Width The width of the column (expressed in the units defined in the workbook)
|
||||||
Only columns with non-default widths have a column record. }
|
Only columns with non-default widths have a column record. }
|
||||||
TCol = record
|
TCol = record
|
||||||
Col: Cardinal;
|
Col: Cardinal;
|
||||||
Width: Single; // in "characters". Excel uses the width of char "0" in 1st font
|
Width: Single;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ Pointer to a TCol record }
|
{@@ Pointer to a TCol record }
|
||||||
@ -428,9 +428,11 @@ type
|
|||||||
function GetCellCountInRow(ARow: Cardinal): Cardinal;
|
function GetCellCountInRow(ARow: Cardinal): Cardinal;
|
||||||
function GetCellCountInCol(ACol: Cardinal): Cardinal;
|
function GetCellCountInCol(ACol: Cardinal): Cardinal;
|
||||||
function GetRow(ARow: Cardinal): PRow;
|
function GetRow(ARow: Cardinal): PRow;
|
||||||
function GetRowHeight(ARow: Cardinal): Single;
|
function GetRowHeight(ARow: Cardinal; AUnits: TsSizeUnits): Single; overload;
|
||||||
|
function GetRowHeight(ARow: Cardinal): Single; overload; deprecated 'Use version with parameter AUnits.';
|
||||||
function GetCol(ACol: Cardinal): PCol;
|
function GetCol(ACol: Cardinal): PCol;
|
||||||
function GetColWidth(ACol: Cardinal): Single;
|
function GetColWidth(ACol: Cardinal; AUnits: TsSizeUnits): Single; overload;
|
||||||
|
function GetColWidth(ACol: Cardinal): Single; overload; deprecated 'Use version with parameter AUnits.';
|
||||||
procedure DeleteCol(ACol: Cardinal);
|
procedure DeleteCol(ACol: Cardinal);
|
||||||
procedure DeleteRow(ARow: Cardinal);
|
procedure DeleteRow(ARow: Cardinal);
|
||||||
procedure InsertCol(ACol: Cardinal);
|
procedure InsertCol(ACol: Cardinal);
|
||||||
@ -440,9 +442,11 @@ type
|
|||||||
procedure RemoveCol(ACol: Cardinal);
|
procedure RemoveCol(ACol: Cardinal);
|
||||||
procedure RemoveRow(ARow: Cardinal);
|
procedure RemoveRow(ARow: Cardinal);
|
||||||
procedure WriteRowInfo(ARow: Cardinal; AData: TRow);
|
procedure WriteRowInfo(ARow: Cardinal; AData: TRow);
|
||||||
procedure WriteRowHeight(ARow: Cardinal; AHeight: Single);
|
procedure WriteRowHeight(ARow: Cardinal; AHeight: Single; AUnits: TsSizeUnits); overload;
|
||||||
|
procedure WriteRowHeight(ARow: Cardinal; AHeight: Single); overload; deprecated 'Use version with parameter AUnits';
|
||||||
procedure WriteColInfo(ACol: Cardinal; AData: TCol);
|
procedure WriteColInfo(ACol: Cardinal; AData: TCol);
|
||||||
procedure WriteColWidth(ACol: Cardinal; AWidth: Single);
|
procedure WriteColWidth(ACol: Cardinal; AWidth: Single; AUnits: TsSizeUnits); overload;
|
||||||
|
procedure WriteColWidth(ACol: Cardinal; AWidth: Single); overload; deprecated 'Use version with parameter AUnits';
|
||||||
|
|
||||||
// Sorting
|
// Sorting
|
||||||
procedure Sort(const ASortParams: TsSortParams;
|
procedure Sort(const ASortParams: TsSortParams;
|
||||||
@ -491,12 +495,12 @@ type
|
|||||||
procedure UnmergeCells(ARange: String); overload;
|
procedure UnmergeCells(ARange: String); overload;
|
||||||
|
|
||||||
{ Embedded images }
|
{ Embedded images }
|
||||||
|
procedure CalcImageCell(AIndex: Integer; x, y, AWidth, AHeight: Double;
|
||||||
|
out ARow, ACol: Cardinal; out ARowOffs, AColOffs, AScaleX, AScaleY: Double);
|
||||||
procedure CalcImageExtent(AIndex: Integer;
|
procedure CalcImageExtent(AIndex: Integer;
|
||||||
out ARow1, ACol1, ARow2, ACol2: Cardinal;
|
out ARow1, ACol1, ARow2, ACol2: Cardinal;
|
||||||
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: Double;
|
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: Double;
|
||||||
out x, y, AWidth, AHeight: Double);
|
out x, y, AWidth, AHeight: Double);
|
||||||
procedure CalcImageCell(AIndex: Integer; x, y, AWidth, AHeight: Double;
|
|
||||||
out ARow, ACol: Cardinal; out ARowOffs, AColOffs, AScaleX, AScaleY: Double);
|
|
||||||
function GetImage(AIndex: Integer): TsImage;
|
function GetImage(AIndex: Integer): TsImage;
|
||||||
function GetImageCount: Integer;
|
function GetImageCount: Integer;
|
||||||
procedure RemoveAllImages;
|
procedure RemoveAllImages;
|
||||||
@ -650,6 +654,7 @@ type
|
|||||||
FLockCount: Integer;
|
FLockCount: Integer;
|
||||||
FLog: TStringList;
|
FLog: TStringList;
|
||||||
FSearchEngine: TObject;
|
FSearchEngine: TObject;
|
||||||
|
FUnits: TsSizeUnits;
|
||||||
|
|
||||||
{ Setter/Getter }
|
{ Setter/Getter }
|
||||||
function GetErrorMsg: String;
|
function GetErrorMsg: String;
|
||||||
@ -784,6 +789,7 @@ type
|
|||||||
procedure RemoveAllEmbeddedObj;
|
procedure RemoveAllEmbeddedObj;
|
||||||
|
|
||||||
{ Utilities }
|
{ Utilities }
|
||||||
|
function ConvertUnits(AValue: Double; AFromUnits, AToUnits: TsSizeUnits): Double;
|
||||||
procedure DisableNotifications;
|
procedure DisableNotifications;
|
||||||
procedure EnableNotifications;
|
procedure EnableNotifications;
|
||||||
function NotificationsEnabled: Boolean;
|
function NotificationsEnabled: Boolean;
|
||||||
@ -806,6 +812,7 @@ type
|
|||||||
property VirtualColCount: cardinal read FVirtualColCount write SetVirtualColCount;
|
property VirtualColCount: cardinal read FVirtualColCount write SetVirtualColCount;
|
||||||
property VirtualRowCount: cardinal read FVirtualRowCount write SetVirtualRowCount;
|
property VirtualRowCount: cardinal read FVirtualRowCount write SetVirtualRowCount;
|
||||||
property Options: TsWorkbookOptions read FOptions write FOptions;
|
property Options: TsWorkbookOptions read FOptions write FOptions;
|
||||||
|
property Units: TsSizeUnits read FUnits;
|
||||||
|
|
||||||
{@@ This event fires whenever a new worksheet is added }
|
{@@ This event fires whenever a new worksheet is added }
|
||||||
property OnAddWorksheet: TsWorksheetEvent read FOnAddWorksheet write FOnAddWorksheet;
|
property OnAddWorksheet: TsWorksheetEvent read FOnAddWorksheet write FOnAddWorksheet;
|
||||||
@ -1029,8 +1036,8 @@ begin
|
|||||||
|
|
||||||
FPageLayout := TsPageLayout.Create(self);
|
FPageLayout := TsPageLayout.Create(self);
|
||||||
|
|
||||||
FDefaultColWidth := 12;
|
FDefaultColWidth := ptsToMM(72); // Excel: about 72 pts
|
||||||
FDefaultRowHeight := 1;
|
FDefaultRowHeight := ptsToMM(15); // Excel: 15pts
|
||||||
|
|
||||||
FFirstRowIndex := UNASSIGNED_ROW_COL_INDEX;
|
FFirstRowIndex := UNASSIGNED_ROW_COL_INDEX;
|
||||||
FFirstColIndex := UNASSIGNED_ROW_COL_INDEX;
|
FFirstColIndex := UNASSIGNED_ROW_COL_INDEX;
|
||||||
@ -3336,16 +3343,15 @@ end;
|
|||||||
|
|
||||||
procedure TsWorksheet.CalcImageCell(AIndex: Integer; x, y, AWidth, AHeight: Double;
|
procedure TsWorksheet.CalcImageCell(AIndex: Integer; x, y, AWidth, AHeight: Double;
|
||||||
out ARow, ACol: Cardinal; out ARowOffs, AColOffs, AScaleX, AScaleY: Double);
|
out ARow, ACol: Cardinal; out ARowOffs, AColOffs, AScaleX, AScaleY: Double);
|
||||||
|
// All lengths are in workbook units!
|
||||||
var
|
var
|
||||||
colW, rowH, sum: Double;
|
colW, rowH, sum: Double;
|
||||||
factor: Double;
|
|
||||||
embobj: TsEmbeddedObj;
|
embobj: TsEmbeddedObj;
|
||||||
begin
|
begin
|
||||||
factor := FWorkbook.GetDefaultFont.Size/2; // Width of "0" character in pts
|
|
||||||
ACol := 0;
|
ACol := 0;
|
||||||
sum := 0;
|
sum := 0;
|
||||||
repeat
|
repeat
|
||||||
colW := ptsToMM(GetColWidth(ACol) * factor);
|
colW := GetColWidth(ACol, FWorkbook.Units);;
|
||||||
sum := sum + colW;
|
sum := sum + colW;
|
||||||
inc(ACol);
|
inc(ACol);
|
||||||
until sum > x;
|
until sum > x;
|
||||||
@ -3353,11 +3359,10 @@ begin
|
|||||||
AColOffs := x - sum;
|
AColOffs := x - sum;
|
||||||
dec(ACol);
|
dec(ACol);
|
||||||
|
|
||||||
factor := FWorkbook.GetDefaultFont.Size; // Height of line in pts
|
|
||||||
ARow := 0;
|
ARow := 0;
|
||||||
sum := 0;
|
sum := 0;
|
||||||
repeat
|
repeat
|
||||||
rowH := ptsToMM(CalcRowHeight(ARow) * factor); // row height in mm
|
rowH := CalcRowHeight(ARow);
|
||||||
sum := sum + rowH;
|
sum := sum + rowH;
|
||||||
inc(ARow);
|
inc(ARow);
|
||||||
until sum > y;
|
until sum > y;
|
||||||
@ -3377,32 +3382,33 @@ end;
|
|||||||
@param ACol1 Index of the column containing the left edege of the image
|
@param ACol1 Index of the column containing the left edege of the image
|
||||||
@param ARow2 Index of the row containing the right edge of the image
|
@param ARow2 Index of the row containing the right edge of the image
|
||||||
@param ACol2 Index of the column containing the bottom edge of the image
|
@param ACol2 Index of the column containing the bottom edge of the image
|
||||||
@param ARowOffs1 Distance between the top edge of image and row 1, in mm
|
@param ARowOffs1 Distance between the top edge of image and row 1
|
||||||
@param AColOffs1 Distance between the left edge of image and column 1, in mm
|
@param AColOffs1 Distance between the left edge of image and column 1
|
||||||
@param ARowOffs2 Distance between the bottom edge of image and top of row 2, in mm
|
@param ARowOffs2 Distance between the bottom edge of image and top of row 2
|
||||||
@param AColOffs2 Distance between the right edge of image and left of col 2, in mm
|
@param AColOffs2 Distance between the right edge of image and left of col 2
|
||||||
@param x Absolute coordinate of left edge of image, in mm
|
@param x Absolute coordinate of left edge of image
|
||||||
@param y Absolute coordinate of top edge of image, in mm
|
@param y Absolute coordinate of top edge of image
|
||||||
@param AWidth Width of the image, in mm
|
@param AWidth Width of the image
|
||||||
@param AHeight Height of the image, in mm
|
@param AHeight Height of the image
|
||||||
|
|
||||||
|
All dimensions are in workbook units
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsWorksheet.CalcImageExtent(AIndex: Integer;
|
procedure TsWorksheet.CalcImageExtent(AIndex: Integer;
|
||||||
out ARow1, ACol1, ARow2, ACol2: Cardinal;
|
out ARow1, ACol1, ARow2, ACol2: Cardinal;
|
||||||
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: Double;
|
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: Double;
|
||||||
out x,y, AWidth, AHeight: Double); // mm
|
out x,y, AWidth, AHeight: Double);
|
||||||
var
|
var
|
||||||
img: TsImage;
|
img: TsImage;
|
||||||
obj: TsEmbeddedObj;
|
obj: TsEmbeddedObj;
|
||||||
colW, rowH: Double;
|
colW, rowH: Double;
|
||||||
totH, totW: Double;
|
totH, totW: Double;
|
||||||
r, c: Integer;
|
r, c: Integer;
|
||||||
factor: Double;
|
|
||||||
begin
|
begin
|
||||||
img := GetImage(AIndex);
|
img := GetImage(AIndex);
|
||||||
|
|
||||||
ARow1 := img.Row;
|
ARow1 := img.Row;
|
||||||
ACol1 := img.Col;
|
ACol1 := img.Col;
|
||||||
ARowOffs1 := img.OffsetX; // millimeters
|
ARowOffs1 := img.OffsetX;
|
||||||
AColOffs1 := img.OffsetY;
|
AColOffs1 := img.OffsetY;
|
||||||
|
|
||||||
obj := FWorkbook.GetEmbeddedObj(img.Index);
|
obj := FWorkbook.GetEmbeddedObj(img.Index);
|
||||||
@ -3410,11 +3416,10 @@ begin
|
|||||||
AHeight := obj.ImageHeight * img.ScaleY;
|
AHeight := obj.ImageHeight * img.ScaleY;
|
||||||
|
|
||||||
// Find x coordinate of left image edge, in inches.
|
// Find x coordinate of left image edge, in inches.
|
||||||
factor := FWorkbook.GetDefaultFont.Size/2; // Width of "0" character in pts
|
|
||||||
x := AColOffs1;
|
x := AColOffs1;
|
||||||
for c := 0 to ACol1-1 do
|
for c := 0 to ACol1-1 do
|
||||||
begin
|
begin
|
||||||
colW := ptsToMM(GetColWidth(c) * factor); // in mm
|
colW := GetColWidth(c, FWorkbook.Units);
|
||||||
x := x + colW;
|
x := x + colW;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3423,7 +3428,7 @@ begin
|
|||||||
ACol2 := ACol1;
|
ACol2 := ACol1;
|
||||||
while (totW < AWidth) do
|
while (totW < AWidth) do
|
||||||
begin
|
begin
|
||||||
colW := ptsToMM(GetColWidth(ACol2) * factor);
|
colW := GetColWidth(ACol2, FWorkbook.Units);
|
||||||
totW := totW + colW;
|
totW := totW + colW;
|
||||||
if totW >= AWidth then
|
if totW >= AWidth then
|
||||||
begin
|
begin
|
||||||
@ -3434,11 +3439,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// Find y coordinate of top image edge, in inches.
|
// Find y coordinate of top image edge, in inches.
|
||||||
factor := FWorkbook.GetDefaultFont.Size; // Height of line in pts
|
|
||||||
y := ARowOffs1;
|
y := ARowOffs1;
|
||||||
for r := 0 to ARow1 - 1 do
|
for r := 0 to ARow1 - 1 do
|
||||||
begin
|
begin
|
||||||
rowH := ptsToMM(CalcRowHeight(r) * factor); // row height in mm
|
rowH := CalcRowHeight(r);
|
||||||
y := y + rowH;
|
y := y + rowH;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3447,7 +3451,7 @@ begin
|
|||||||
ARow2 := ARow1;
|
ARow2 := ARow1;
|
||||||
while (totH < AHeight) do
|
while (totH < AHeight) do
|
||||||
begin
|
begin
|
||||||
rowH := ptsToMM(CalcRowHeight(ARow2) * factor);
|
rowH := CalcRowHeight(ARow2);
|
||||||
totH := totH + rowH;
|
totH := totH + rowH;
|
||||||
if totH >= AHeight then
|
if totH >= AHeight then
|
||||||
begin
|
begin
|
||||||
@ -3466,10 +3470,10 @@ end;
|
|||||||
@param AFileName Name of the image file
|
@param AFileName Name of the image file
|
||||||
@param AOffsetX The image is offset horizontally from the left edge of
|
@param AOffsetX The image is offset horizontally from the left edge of
|
||||||
the anchor cell. May reach into another cell.
|
the anchor cell. May reach into another cell.
|
||||||
Value is in millimeters.
|
Value is in workbook units.
|
||||||
@param AOffsetY The image is offset vertically from the top edge of the
|
@param AOffsetY The image is offset vertically from the top edge of the
|
||||||
anchor cell. May reach into another cell.
|
anchor cell. May reach into another cell.
|
||||||
Value is in millimeters.
|
Value is in workbook units.
|
||||||
@param AScaleX Horizontal scaling factor of the image
|
@param AScaleX Horizontal scaling factor of the image
|
||||||
@param AScaleY Vertical scaling factor of the image
|
@param AScaleY Vertical scaling factor of the image
|
||||||
@return Index into the internal image list.
|
@return Index into the internal image list.
|
||||||
@ -3501,10 +3505,10 @@ end;
|
|||||||
@param AStream Stream which contains the image data
|
@param AStream Stream which contains the image data
|
||||||
@param AOffsetX The image is offset horizontally from the left edge of
|
@param AOffsetX The image is offset horizontally from the left edge of
|
||||||
the anchor cell. May reach into another cell.
|
the anchor cell. May reach into another cell.
|
||||||
Value is in millimeters.
|
Value is in workbook units.
|
||||||
@param AOffsetY The image is offset vertically from the top edge of the
|
@param AOffsetY The image is offset vertically from the top edge of the
|
||||||
anchor cell. May reach into another cell.
|
anchor cell. May reach into another cell.
|
||||||
Value is in millimeters.
|
Value is in workbook units.
|
||||||
@param AScaleX Horizontal scaling factor of the image
|
@param AScaleX Horizontal scaling factor of the image
|
||||||
@param AScaleY Vertical scaling factor of the image
|
@param AScaleY Vertical scaling factor of the image
|
||||||
@return Index into the internal image list.
|
@return Index into the internal image list.
|
||||||
@ -3536,6 +3540,7 @@ begin
|
|||||||
img^.Index := AImageIndex;
|
img^.Index := AImageIndex;
|
||||||
Result := FImages.Add(img);
|
Result := FImages.Add(img);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Removes an image from the internal image list.
|
Removes an image from the internal image list.
|
||||||
The image is identified by its index.
|
The image is identified by its index.
|
||||||
@ -6157,28 +6162,24 @@ end;
|
|||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Calculates the optimum height of a given row. Depends on the font size
|
Calculates the optimum height of a given row. Depends on the font size
|
||||||
of the individual cells in the row.
|
of the individual cells in the row. Is converted to workbook units.
|
||||||
|
|
||||||
@param ARow Index of the row to be considered
|
@param ARow Index of the row to be considered
|
||||||
@return Row height in line count of the default font.
|
@return Row height in workbook units
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsWorksheet.CalcAutoRowHeight(ARow: Cardinal): Single;
|
function TsWorksheet.CalcAutoRowHeight(ARow: Cardinal): Single;
|
||||||
var
|
var
|
||||||
cell: PCell;
|
cell: PCell;
|
||||||
h0: Single;
|
|
||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
h0 := Workbook.GetDefaultFontSize;
|
|
||||||
for cell in Cells.GetRowEnumerator(ARow) do
|
for cell in Cells.GetRowEnumerator(ARow) do
|
||||||
Result := Max(Result, ReadCellFont(cell).Size / h0);
|
Result := Max(Result, ReadCellFont(cell).Size);
|
||||||
|
Result := FWorkbook.ConvertUnits(Result, suPoints, FWorkbook.Units);
|
||||||
// FixMe: This is not correct if text is rotated or wrapped
|
// FixMe: This is not correct if text is rotated or wrapped
|
||||||
{
|
|
||||||
if Result = 0 then
|
|
||||||
Result := DefaultRowHeight;
|
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TsWorksheet.CalcRowHeight(ARow: Cardinal): Single;
|
function TsWorksheet.CalcRowHeight(ARow: Cardinal): Single;
|
||||||
|
// In workbook units
|
||||||
begin
|
begin
|
||||||
Result := CalcAutoRowHeight(ARow);
|
Result := CalcAutoRowHeight(ARow);
|
||||||
if Result = 0 then
|
if Result = 0 then
|
||||||
@ -6327,9 +6328,10 @@ end;
|
|||||||
the default column width is returned.
|
the default column width is returned.
|
||||||
|
|
||||||
@param ACol Index of the column considered
|
@param ACol Index of the column considered
|
||||||
@return Width of the column (in count of "0" characters of the default font)
|
@param AUnits Units for the column width.
|
||||||
|
@return Width of the column
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsWorksheet.GetColWidth(ACol: Cardinal): Single;
|
function TsWorksheet.GetColWidth(ACol: Cardinal; AUnits: TsSizeUnits): Single;
|
||||||
var
|
var
|
||||||
col: PCol;
|
col: PCol;
|
||||||
begin
|
begin
|
||||||
@ -6342,17 +6344,24 @@ begin
|
|||||||
Result := col^.Width
|
Result := col^.Width
|
||||||
else
|
else
|
||||||
Result := FDefaultColWidth;
|
Result := FDefaultColWidth;
|
||||||
|
Result := FWorkbook.ConvertUnits(Result, FWorkbook.Units, AUnits);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TsWorksheet.GetColWidth(ACol: Cardinal): Single;
|
||||||
|
begin
|
||||||
|
Result := GetColWidth(ACol, suChars);
|
||||||
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Returns the height of the given row. If there is no row record then the
|
Returns the height of the given row. If there is no row record then the
|
||||||
default row height is returned
|
default row height is returned
|
||||||
|
|
||||||
@param ARow Index of the row considered
|
@param ARow Index of the row considered
|
||||||
@return Height of the row (in line count of the default font).
|
@param AUnits Units for the row height.
|
||||||
|
@return Height of the row
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsWorksheet.GetRowHeight(ARow: Cardinal): Single;
|
function TsWorksheet.GetRowHeight(ARow: Cardinal; AUnits: TsSizeUnits): Single;
|
||||||
var
|
var
|
||||||
row: PRow;
|
row: PRow;
|
||||||
begin
|
begin
|
||||||
@ -6365,9 +6374,15 @@ begin
|
|||||||
Result := row^.Height
|
Result := row^.Height
|
||||||
else
|
else
|
||||||
Result := FDefaultRowHeight;
|
Result := FDefaultRowHeight;
|
||||||
|
Result := FWorkbook.ConvertUnits(Result, FWorkbook.Units, AUnits);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TsWorksheet.GetRowHeight(ARow: Cardinal): Single;
|
||||||
|
begin
|
||||||
|
Result := GetRowHeight(ARow, suLines);
|
||||||
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Deletes the column at the index specified. Cells with greader column indexes
|
Deletes the column at the index specified. Cells with greader column indexes
|
||||||
are moved one column to the left. Merged cell blocks and cell references in
|
are moved one column to the left. Merged cell blocks and cell references in
|
||||||
@ -6748,7 +6763,8 @@ end;
|
|||||||
Creates a new row record if it does not yet exist.
|
Creates a new row record if it does not yet exist.
|
||||||
|
|
||||||
@param ARow Index of the row record which will be created or modified
|
@param ARow Index of the row record which will be created or modified
|
||||||
@param AData Data to be written.
|
@param AData Data to be written. Expected to be already in the units
|
||||||
|
defined for the workbook
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsWorksheet.WriteRowInfo(ARow: Cardinal; AData: TRow);
|
procedure TsWorksheet.WriteRowInfo(ARow: Cardinal; AData: TRow);
|
||||||
var
|
var
|
||||||
@ -6763,17 +6779,23 @@ end;
|
|||||||
does not yet exist.
|
does not yet exist.
|
||||||
|
|
||||||
@param ARow Index of the row to be considered
|
@param ARow Index of the row to be considered
|
||||||
@param AHeight Row height to be assigned to the row. The row height is
|
@param AHeight Row height to be assigned to the row.
|
||||||
expressed as the line count of the default font size.
|
@param AUnits Units measuring the row height.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsWorksheet.WriteRowHeight(ARow: Cardinal; AHeight: Single);
|
procedure TsWorksheet.WriteRowHeight(ARow: Cardinal; AHeight: Single;
|
||||||
|
AUnits: TsSizeUnits);
|
||||||
var
|
var
|
||||||
AElement: PRow;
|
AElement: PRow;
|
||||||
begin
|
begin
|
||||||
if ARow = UNASSIGNED_ROW_COL_INDEX then
|
if ARow = UNASSIGNED_ROW_COL_INDEX then
|
||||||
exit;
|
exit;
|
||||||
AElement := GetRow(ARow);
|
AElement := GetRow(ARow);
|
||||||
AElement^.Height := AHeight;
|
AElement^.Height := FWorkbook.ConvertUnits(AHeight, AUnits, FWorkbook.FUnits);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TsWorksheet.WriteRowHeight(ARow: Cardinal; AHeight: Single);
|
||||||
|
begin
|
||||||
|
WriteRowHeight(ARow, AHeight, suLines);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -6784,7 +6806,8 @@ end;
|
|||||||
Creates a new column record if it does not yet exist.
|
Creates a new column record if it does not yet exist.
|
||||||
|
|
||||||
@param ACol Index of the column record which will be created or modified
|
@param ACol Index of the column record which will be created or modified
|
||||||
@param AData Data to be written (essentially column width).
|
@param AData Data to be written (essentially column width). The column
|
||||||
|
width is already in the units defined for the workbook.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsWorksheet.WriteColInfo(ACol: Cardinal; AData: TCol);
|
procedure TsWorksheet.WriteColInfo(ACol: Cardinal; AData: TCol);
|
||||||
var
|
var
|
||||||
@ -6799,19 +6822,24 @@ end;
|
|||||||
does not yet exist.
|
does not yet exist.
|
||||||
|
|
||||||
@param ACol Index of the column to be considered
|
@param ACol Index of the column to be considered
|
||||||
@param AWidth Width to be assigned to the column. The column width is
|
@param AWidth Width to be assigned to the column.
|
||||||
expressed as the count of "0" characters of the default font.
|
@param AUnits Units used for parameter AWidth.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single);
|
procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single;
|
||||||
|
AUnits: TsSizeUnits);
|
||||||
var
|
var
|
||||||
AElement: PCol;
|
AElement: PCol;
|
||||||
begin
|
begin
|
||||||
if ACol = UNASSIGNED_ROW_COL_INDEX then
|
if ACol = UNASSIGNED_ROW_COL_INDEX then
|
||||||
exit;
|
exit;
|
||||||
AElement := GetCol(ACol);
|
AElement := GetCol(ACol);
|
||||||
AElement^.Width := AWidth;
|
AElement^.Width := FWorkbook.ConvertUnits(AWidth, AUnits, FWorkbook.FUnits);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single);
|
||||||
|
begin
|
||||||
|
WriteColWidth(ACol, AWidth, suChars);
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
{ TsWorkbook }
|
{ TsWorkbook }
|
||||||
@ -6869,6 +6897,53 @@ begin
|
|||||||
TsWorksheet(sheet).CalcFormulas;
|
TsWorksheet(sheet).CalcFormulas;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{@@ ----------------------------------------------------------------------------
|
||||||
|
Conversion of length values between units
|
||||||
|
-------------------------------------------------------------------------------}
|
||||||
|
function TsWorkbook.ConvertUnits(AValue: Double;
|
||||||
|
AFromUnits, AToUnits: TsSizeUnits): Double;
|
||||||
|
begin
|
||||||
|
if AFromUnits = AToUnits then
|
||||||
|
begin
|
||||||
|
Result := AValue;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
// Convert to mm
|
||||||
|
case AFromUnits of
|
||||||
|
suMillimeters:
|
||||||
|
Result := AValue;
|
||||||
|
suCentimeters:
|
||||||
|
Result := AValue * 10.0;
|
||||||
|
suInches:
|
||||||
|
Result := inToMM(AValue);
|
||||||
|
suPoints:
|
||||||
|
Result := ptsToMM(AValue);
|
||||||
|
suChars:
|
||||||
|
Result := ptsToMM(GetDefaultFont.Size * ZERO_WIDTH_FACTOR * AValue);
|
||||||
|
suLines:
|
||||||
|
Result := ptsToMM(GetDefaultFont.Size * (AValue + ROW_HEIGHT_CORRECTION));
|
||||||
|
else
|
||||||
|
raise Exception.Create('Unit not supported.');
|
||||||
|
end;
|
||||||
|
// Convert from mm
|
||||||
|
case AToUnits of
|
||||||
|
suMillimeters: ; // nothing to do
|
||||||
|
suCentimeters:
|
||||||
|
Result := Result * 0.1;
|
||||||
|
suInches:
|
||||||
|
Result := mmToIn(Result);
|
||||||
|
suPoints:
|
||||||
|
Result := mmToPts(Result);
|
||||||
|
suChars:
|
||||||
|
Result := mmToPts(Result) / (GetDefaultFont.Size * ZERO_WIDTH_FACTOR);
|
||||||
|
suLines:
|
||||||
|
Result := mmToPts(Result) / GetDefaultFont.Size - ROW_HEIGHT_CORRECTION;
|
||||||
|
else
|
||||||
|
raise Exception.Create('Unit not supported.');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Helper method for clearing the spreadsheet list.
|
Helper method for clearing the spreadsheet list.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
@ -6926,6 +7001,7 @@ begin
|
|||||||
FWorksheets := TFPList.Create;
|
FWorksheets := TFPList.Create;
|
||||||
FLog := TStringList.Create;
|
FLog := TStringList.Create;
|
||||||
FFormatID := sfidUnknown;
|
FFormatID := sfidUnknown;
|
||||||
|
FUnits := suMillimeters; // Units for column width and row height
|
||||||
|
|
||||||
FormatSettings := UTF8FormatSettings;
|
FormatSettings := UTF8FormatSettings;
|
||||||
FormatSettings.ShortDateFormat := MakeShortDateFormat(FormatSettings.ShortDateFormat);
|
FormatSettings.ShortDateFormat := MakeShortDateFormat(FormatSettings.ShortDateFormat);
|
||||||
@ -8314,6 +8390,8 @@ var
|
|||||||
rdest, cdest: Integer; // row and column index at destination
|
rdest, cdest: Integer; // row and column index at destination
|
||||||
nselS, nselD: Integer; // count of selected blocks
|
nselS, nselD: Integer; // count of selected blocks
|
||||||
begin
|
begin
|
||||||
|
Unused(ATransposed);
|
||||||
|
|
||||||
if AStream = nil then
|
if AStream = nil then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
@ -8452,13 +8530,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Creates a new "embedded" stream and load the specified file.
|
Creates a new "embedded" stream and loads the specified file.
|
||||||
Returns the index of the embedded file item.
|
Returns the index of the embedded file item.
|
||||||
|
Image dimensions are converted to workbook units.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsWorkbook.AddEmbeddedObj(const AFileName: String): Integer;
|
function TsWorkbook.AddEmbeddedObj(const AFileName: String): Integer;
|
||||||
var
|
var
|
||||||
obj: TsEmbeddedObj = nil;
|
obj: TsEmbeddedObj = nil;
|
||||||
w, h: Double;
|
|
||||||
begin
|
begin
|
||||||
if not FileExists(AFileName) then
|
if not FileExists(AFileName) then
|
||||||
begin
|
begin
|
||||||
@ -8469,8 +8547,11 @@ begin
|
|||||||
|
|
||||||
obj := TsEmbeddedObj.Create;
|
obj := TsEmbeddedObj.Create;
|
||||||
if obj.LoadFromFile(AFileName) then
|
if obj.LoadFromFile(AFileName) then
|
||||||
|
begin
|
||||||
|
obj.ImageWidth := ConvertUnits(obj.ImageWidth, suInches, FUnits);
|
||||||
|
obj.ImageHeight := ConvertUnits(obj.ImageHeight, suInches, FUnits);
|
||||||
Result := FEmbeddedObjList.Add(obj)
|
Result := FEmbeddedObjList.Add(obj)
|
||||||
else
|
end else
|
||||||
begin
|
begin
|
||||||
AddErrorMsg(rsFileFormatNotSupported, [AFileName]);
|
AddErrorMsg(rsFileFormatNotSupported, [AFileName]);
|
||||||
obj.Free;
|
obj.Free;
|
||||||
@ -8486,7 +8567,6 @@ function TsWorkbook.AddEmbeddedObj(AStream: TStream;
|
|||||||
const AName: String = ''): Integer;
|
const AName: String = ''): Integer;
|
||||||
var
|
var
|
||||||
obj: TsEmbeddedObj = nil;
|
obj: TsEmbeddedObj = nil;
|
||||||
w, h: Double;
|
|
||||||
begin
|
begin
|
||||||
obj := TsEmbeddedObj.Create;
|
obj := TsEmbeddedObj.Create;
|
||||||
if obj.LoadFromStream(AStream, AName) then
|
if obj.LoadFromStream(AStream, AName) then
|
||||||
|
@ -84,7 +84,7 @@ type
|
|||||||
TsWorkbookChartSource = class(TCustomChartSource, IsSpreadsheetControl)
|
TsWorkbookChartSource = class(TCustomChartSource, IsSpreadsheetControl)
|
||||||
private
|
private
|
||||||
FWorkbookSource: TsWorkbookSource;
|
FWorkbookSource: TsWorkbookSource;
|
||||||
FWorkbook: TsWorkbook;
|
// FWorkbook: TsWorkbook;
|
||||||
FWorksheets: array[TsXYRange] of TsWorksheet;
|
FWorksheets: array[TsXYRange] of TsWorksheet;
|
||||||
FRangeStr: array[TsXYRange] of String;
|
FRangeStr: array[TsXYRange] of String;
|
||||||
FRanges: array[TsXYRange] of TsCellRangeArray;
|
FRanges: array[TsXYRange] of TsCellRangeArray;
|
||||||
@ -323,13 +323,13 @@ var
|
|||||||
L: TStrings;
|
L: TStrings;
|
||||||
range: TsCellRange;
|
range: TsCellRange;
|
||||||
begin
|
begin
|
||||||
if (FWorkbook = nil) or (FWorksheets[AIndex] = nil) or (Length(FRanges) = 0) then
|
if (Workbook = nil) or (FWorksheets[AIndex] = nil) or (Length(FRanges) = 0) then
|
||||||
exit('');
|
exit('');
|
||||||
|
|
||||||
L := TStringList.Create;
|
L := TStringList.Create;
|
||||||
try
|
try
|
||||||
if AListSeparator = #0 then
|
if AListSeparator = #0 then
|
||||||
L.Delimiter := FWorkbook.FormatSettings.ListSeparator
|
L.Delimiter := Workbook.FormatSettings.ListSeparator
|
||||||
else
|
else
|
||||||
L.Delimiter := AListSeparator;
|
L.Delimiter := AListSeparator;
|
||||||
L.StrictDelimiter := true;
|
L.StrictDelimiter := true;
|
||||||
@ -412,7 +412,7 @@ begin
|
|||||||
Result := WorkbookSource.Workbook
|
Result := WorkbookSource.Workbook
|
||||||
else
|
else
|
||||||
Result := nil;
|
Result := nil;
|
||||||
FWorkbook := Result;
|
// FWorkbook := Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -547,7 +547,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Standard component notification: The ChartSource is notified that the
|
Standard component notification: The ChartSource is notified that the
|
||||||
WorkbookSource is being removed.
|
WorkbookSource is being removed.
|
||||||
@ -582,7 +581,7 @@ const
|
|||||||
var
|
var
|
||||||
range: TsCellRange;
|
range: TsCellRange;
|
||||||
begin
|
begin
|
||||||
if (FWorkbook = nil) or (FRangeStr[AIndex] = '') //or (FWorksheets[AIndex] = nil)
|
if (Workbook = nil) or (FRangeStr[AIndex] = '') //or (FWorksheets[AIndex] = nil)
|
||||||
then begin
|
then begin
|
||||||
FWorksheets[AIndex] := nil;
|
FWorksheets[AIndex] := nil;
|
||||||
SetLength(FRanges[AIndex], 0);
|
SetLength(FRanges[AIndex], 0);
|
||||||
@ -591,7 +590,7 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if FWorkbook.TryStrToCellRanges(FRangeStr[AIndex], FWorksheets[AIndex], FRanges[AIndex])
|
if Workbook.TryStrToCellRanges(FRangeStr[AIndex], FWorksheets[AIndex], FRanges[AIndex])
|
||||||
then begin
|
then begin
|
||||||
for range in FRanges[AIndex] do
|
for range in FRanges[AIndex] do
|
||||||
if (range.Col1 <> range.Col2) and (range.Row1 <> range.Row2) then
|
if (range.Col1 <> range.Col2) and (range.Row1 <> range.Row2) then
|
||||||
@ -602,7 +601,7 @@ begin
|
|||||||
// Make sure to include worksheet name in RangeString.
|
// Make sure to include worksheet name in RangeString.
|
||||||
FRangeStr[AIndex] := BuildRangeStr(AIndex);
|
FRangeStr[AIndex] := BuildRangeStr(AIndex);
|
||||||
end else
|
end else
|
||||||
if (FWorkbook.GetWorksheetCount > 0) then begin
|
if (Workbook.GetWorksheetCount > 0) then begin
|
||||||
if FWorksheets[AIndex] = nil then
|
if FWorksheets[AIndex] = nil then
|
||||||
raise Exception.CreateFmt('Worksheet of %s cell range "%s" does not exist.',
|
raise Exception.CreateFmt('Worksheet of %s cell range "%s" does not exist.',
|
||||||
[XY[AIndex], FRangeStr[AIndex]])
|
[XY[AIndex], FRangeStr[AIndex]])
|
||||||
@ -660,7 +659,7 @@ begin
|
|||||||
FWorkbookSource := AValue;
|
FWorkbookSource := AValue;
|
||||||
if FWorkbookSource <> nil then
|
if FWorkbookSource <> nil then
|
||||||
FWorkbookSource.AddListener(self);
|
FWorkbookSource.AddListener(self);
|
||||||
FWorkbook := GetWorkbook;
|
// FWorkbook := GetWorkbook;
|
||||||
ListenerNotification([lniWorkbook, lniWorksheet]);
|
ListenerNotification([lniWorkbook, lniWorksheet]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -3269,50 +3269,54 @@ begin
|
|||||||
AStrings.Add('Last column=');
|
AStrings.Add('Last column=');
|
||||||
AStrings.Add('Active cell=');
|
AStrings.Add('Active cell=');
|
||||||
AStrings.Add('Selection=');
|
AStrings.Add('Selection=');
|
||||||
|
AStrings.Add('Default column width=');
|
||||||
|
AStrings.Add('Default row height=');
|
||||||
AStrings.Add('Page layout=');
|
AStrings.Add('Page layout=');
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
AStrings.Add(Format('Name=%s', [ASheet.Name]));
|
AStrings.Add('Name=%s', [ASheet.Name]);
|
||||||
AStrings.Add(Format('First row=%d', [Integer(ASheet.GetFirstRowIndex)]));
|
AStrings.Add('First row=%d', [Integer(ASheet.GetFirstRowIndex)]);
|
||||||
AStrings.Add(Format('Last row=%d', [ASheet.GetLastRowIndex]));
|
AStrings.Add('Last row=%d', [ASheet.GetLastRowIndex]);
|
||||||
AStrings.Add(Format('First column=%d', [Integer(ASheet.GetFirstColIndex)]));
|
AStrings.Add('First column=%d', [Integer(ASheet.GetFirstColIndex)]);
|
||||||
AStrings.Add(Format('Last column=%d', [ASheet.GetLastColIndex]));
|
AStrings.Add('Last column=%d', [ASheet.GetLastColIndex]);
|
||||||
AStrings.Add(Format('Active cell=%s', [GetCellString(ASheet.ActiveCellRow, ASheet.ActiveCellCol)]));
|
AStrings.Add('Active cell=%s', [GetCellString(ASheet.ActiveCellRow, ASheet.ActiveCellCol)]);
|
||||||
AStrings.Add(Format('Selection=%s', [ASheet.GetSelectionAsString]));
|
AStrings.Add('Selection=%s', [ASheet.GetSelectionAsString]);
|
||||||
AStrings.Add(Format('Comments=%d items', [ASheet.Comments.Count]));
|
AStrings.Add('Default column width=%.1f %s', [ASheet.DefaultColWidth, SizeUnitNames[ASheet.Workbook.Units]]);
|
||||||
AStrings.Add(Format('Hyperlinks=%d items', [ASheet.Hyperlinks.Count]));
|
AStrings.Add('Default row height=%.1f %s', [ASheet.DefaultRowHeight, SizeUnitNames[ASheet.Workbook.Units]]);
|
||||||
AStrings.Add(Format('MergedCells=%d items', [ASheet.MergedCells.Count]));
|
AStrings.Add('Comments=%d items', [ASheet.Comments.Count]);
|
||||||
|
AStrings.Add('Hyperlinks=%d items', [ASheet.Hyperlinks.Count]);
|
||||||
|
AStrings.Add('MergedCells=%d items', [ASheet.MergedCells.Count]);
|
||||||
|
|
||||||
if ienPageLayout in FExpanded then
|
if ienPageLayout in FExpanded then
|
||||||
begin
|
begin
|
||||||
AStrings.Add('(-) Page layout=');
|
AStrings.Add('(-) Page layout=');
|
||||||
AStrings.Add(Format(' Orientation=%s', [GetEnumName(TypeInfo(TsPageOrientation), ord(ASheet.PageLayout.Orientation))]));
|
AStrings.Add(' Orientation=%s', [GetEnumName(TypeInfo(TsPageOrientation), ord(ASheet.PageLayout.Orientation))]);
|
||||||
AStrings.Add(Format(' Page width=%.1f mm', [ASheet.PageLayout.PageWidth]));
|
AStrings.Add(' Page width=%.1f mm', [ASheet.PageLayout.PageWidth]);
|
||||||
AStrings.Add(Format(' Page height=%.1f mm', [ASheet.PageLayout.PageHeight]));
|
AStrings.Add(' Page height=%.1f mm', [ASheet.PageLayout.PageHeight]);
|
||||||
AStrings.Add(Format(' Left margin=%.1f mm', [ASheet.PageLayout.LeftMargin]));
|
AStrings.Add(' Left margin=%.1f mm', [ASheet.PageLayout.LeftMargin]);
|
||||||
AStrings.Add(Format(' Right margin=%.1f mm', [ASheet.PageLayout.RightMargin]));
|
AStrings.Add(' Right margin=%.1f mm', [ASheet.PageLayout.RightMargin]);
|
||||||
AStrings.Add(Format(' Top margin=%.1f mm', [ASheet.PageLayout.TopMargin]));
|
AStrings.Add(' Top margin=%.1f mm', [ASheet.PageLayout.TopMargin]);
|
||||||
AStrings.Add(Format(' Bottom margin=%.1f mm', [ASheet.PageLayout.BottomMargin]));
|
AStrings.Add(' Bottom margin=%.1f mm', [ASheet.PageLayout.BottomMargin]);
|
||||||
AStrings.Add(Format(' Header distance=%.1f mm', [ASheet.PageLayout.HeaderMargin]));
|
AStrings.Add(' Header distance=%.1f mm', [ASheet.PageLayout.HeaderMargin]);
|
||||||
AStrings.Add(Format(' Footer distance=%.1f mm', [ASheet.PageLayout.FooterMargin]));
|
AStrings.Add(' Footer distance=%.1f mm', [ASheet.PageLayout.FooterMargin]);
|
||||||
if poUseStartPageNumber in ASheet.PageLayout.Options then
|
if poUseStartPageNumber in ASheet.PageLayout.Options then
|
||||||
AStrings.Add(Format(' Start page number=%d', [ASheet.pageLayout.StartPageNumber]))
|
AStrings.Add(' Start page number=%d', [ASheet.pageLayout.StartPageNumber])
|
||||||
else
|
else
|
||||||
AStrings.Add (' Start page number=automatic');
|
AStrings.Add(' Start page number=automatic');
|
||||||
AStrings.Add(Format(' Scaling factor=%d%%', [ASheet.PageLayout.ScalingFactor]));
|
AStrings.Add(' Scaling factor=%d%%', [ASheet.PageLayout.ScalingFactor]);
|
||||||
AStrings.Add(Format(' Copies=%d', [ASheet.PageLayout.Copies]));
|
AStrings.Add(' Copies=%d', [ASheet.PageLayout.Copies]);
|
||||||
if (ASheet.PageLayout.Options * [poDifferentOddEven, poDifferentFirst] <> []) then
|
if (ASheet.PageLayout.Options * [poDifferentOddEven, poDifferentFirst] <> []) then
|
||||||
begin
|
begin
|
||||||
AStrings.Add(Format(' Header (first)=%s', [StringReplace(ASheet.PageLayout.Headers[0], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Header (first)=%s', [StringReplace(ASheet.PageLayout.Headers[0], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
AStrings.Add(Format(' Header (odd)=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Header (odd)=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
AStrings.Add(Format(' Header (even)=%s', [StringReplace(ASheet.PageLayout.Headers[2], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Header (even)=%s', [StringReplace(ASheet.PageLayout.Headers[2], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
AStrings.Add(Format(' Footer (first)=%s', [StringReplace(ASheet.PageLayout.Footers[0], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Footer (first)=%s', [StringReplace(ASheet.PageLayout.Footers[0], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
AStrings.Add(Format(' Footer (odd)=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceall])]));
|
AStrings.Add(' Footer (odd)=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceall])]);
|
||||||
AStrings.Add(Format(' Footer (even)=%s', [StringReplace(ASheet.PageLayout.Footers[2], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Footer (even)=%s', [StringReplace(ASheet.PageLayout.Footers[2], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
AStrings.Add(Format(' Header=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Header=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
AStrings.Add(Format(' Footer=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceAll])]));
|
AStrings.Add(' Footer=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceAll])]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if ASheet.PageLayout.HeaderImages[hfsLeft].Index > -1 then
|
if ASheet.PageLayout.HeaderImages[hfsLeft].Index > -1 then
|
||||||
|
@ -79,8 +79,8 @@ type
|
|||||||
FHyperlinkCell: PCell; // Selected cell if it stores a hyperlink
|
FHyperlinkCell: PCell; // Selected cell if it stores a hyperlink
|
||||||
FOnClickHyperlink: TsHyperlinkClickEvent;
|
FOnClickHyperlink: TsHyperlinkClickEvent;
|
||||||
function CalcAutoRowHeight(ARow: Integer): Integer;
|
function CalcAutoRowHeight(ARow: Integer): Integer;
|
||||||
function CalcColWidth(AWidth: Single): Integer;
|
function CalcColWidthFromSheet(AWidth: Single): Integer;
|
||||||
function CalcRowHeight(AHeight: Single): Integer;
|
function CalcRowHeightFromSheet(AHeight: Single): Integer;
|
||||||
procedure ChangedCellHandler(ASender: TObject; ARow, ACol: Cardinal);
|
procedure ChangedCellHandler(ASender: TObject; ARow, ACol: Cardinal);
|
||||||
procedure ChangedFontHandler(ASender: TObject; ARow, ACol: Cardinal);
|
procedure ChangedFontHandler(ASender: TObject; ARow, ACol: Cardinal);
|
||||||
procedure FixNeighborCellBorders(ACell: PCell);
|
procedure FixNeighborCellBorders(ACell: PCell);
|
||||||
@ -1098,20 +1098,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Converts the column width, given in "characters" of the default font, to pixels.
|
Converts the column width, given in units used by the worksheet, to pixels.
|
||||||
All chars are assumed to have the same width defined by the width of the
|
|
||||||
"0" character. Therefore, this calculation is only approximate.
|
|
||||||
|
|
||||||
@param AWidth Width of a column given as "character count".
|
@param AWidth Width of a column in units used by the worksheet
|
||||||
@return Column width in pixels.
|
@return Column width in pixels.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsCustomWorksheetGrid.CalcColWidth(AWidth: Single): Integer;
|
function TsCustomWorksheetGrid.CalcColWidthFromSheet(AWidth: Single): Integer;
|
||||||
var
|
var
|
||||||
w0: Integer;
|
w_pts: Double;
|
||||||
begin
|
begin
|
||||||
Convert_sFont_to_Font(Workbook.GetFont(0), Canvas.Font);
|
w_pts := Workbook.ConvertUnits(AWidth, Workbook.Units, suPoints);
|
||||||
w0 := Canvas.TextWidth('0');
|
Result := PtsToPx(w_pts, Screen.PixelsPerInch);
|
||||||
Result := Round(AWidth * w0);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -1138,19 +1135,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Converts the row height (from a worksheet row record), given in lines, to
|
Converts the row height (from a worksheet row record), given in units used by
|
||||||
pixels as needed by the grid
|
the sheet, to pixels as needed by the grid
|
||||||
|
|
||||||
@param AHeight Row height expressed as default font line count from the
|
@param AHeight Row height expressed in units used by the worksheet.
|
||||||
worksheet
|
|
||||||
@result Row height in pixels.
|
@result Row height in pixels.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsCustomWorksheetGrid.CalcRowHeight(AHeight: Single): Integer;
|
function TsCustomWorksheetGrid.CalcRowHeightFromSheet(AHeight: Single): Integer;
|
||||||
var
|
var
|
||||||
h_pts: Single;
|
h_pts: Single;
|
||||||
begin
|
begin
|
||||||
h_pts := AHeight * (Workbook.GetFont(0).Size + ROW_HEIGHT_CORRECTION);
|
h_pts := Workbook.ConvertUnits(AHeight, Workbook.Units, suPoints);;
|
||||||
Result := PtsToPX(h_pts, Screen.PixelsPerInch) + 4;
|
Result := PtsToPx(h_pts, Screen.PixelsPerInch); // + 4;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -1158,17 +1154,19 @@ end;
|
|||||||
worksheet.
|
worksheet.
|
||||||
|
|
||||||
@param AValue Column width in pixels
|
@param AValue Column width in pixels
|
||||||
@result Count of characters '0' in the worksheet's default font.
|
@result Column width expressed in units defined by the workbook.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsCustomWorksheetGrid.CalcWorksheetColWidth(AValue: Integer): Single;
|
function TsCustomWorksheetGrid.CalcWorksheetColWidth(AValue: Integer): Single;
|
||||||
|
var
|
||||||
|
w_pts: Double;
|
||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
if Worksheet <> nil then
|
if Worksheet <> nil then
|
||||||
begin
|
begin
|
||||||
// The grid's column width is in "pixels", the worksheet's column width is
|
// The grid's column width is in "pixels", the worksheet's column width
|
||||||
// in "characters".
|
// has the units defined by the workbook.
|
||||||
Convert_sFont_to_Font(Workbook.GetDefaultFont, Canvas.Font);
|
w_pts := PxToPts(AValue, Screen.PixelsPerInch);
|
||||||
Result := AValue / Canvas.TextWidth('0');
|
Result := Workbook.ConvertUnits(w_pts, suPoints, Workbook.Units);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1177,7 +1175,7 @@ end;
|
|||||||
worksheet.
|
worksheet.
|
||||||
|
|
||||||
@param AValue Row height in pixels
|
@param AValue Row height in pixels
|
||||||
@result Row height expressed as default font line count.
|
@result Row height expressed in units defined by the workbook.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function TsCustomWorksheetGrid.CalcWorksheetRowHeight(AValue: Integer): Single;
|
function TsCustomWorksheetGrid.CalcWorksheetRowHeight(AValue: Integer): Single;
|
||||||
var
|
var
|
||||||
@ -1186,10 +1184,10 @@ begin
|
|||||||
Result := 0;
|
Result := 0;
|
||||||
if Worksheet <> nil then
|
if Worksheet <> nil then
|
||||||
begin
|
begin
|
||||||
// The grid's row heights are in "pixels", the worksheet's row heights are
|
// The grid's row heights are in "pixels", the worksheet's row height
|
||||||
// in "lines"
|
// has the units defined by the workbook.
|
||||||
h_pts := PxToPts(AValue - 4, Screen.PixelsPerInch); // height in points
|
h_pts := PxToPts(AValue, Screen.PixelsPerInch);
|
||||||
Result := h_pts / (Workbook.GetDefaultFontSize + ROW_HEIGHT_CORRECTION);
|
Result := Workbook.ConvertUnits(h_pts, suPoints, Workbook.Units);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3471,11 +3469,11 @@ begin
|
|||||||
if IsColumn then
|
if IsColumn then
|
||||||
begin
|
begin
|
||||||
w := CalcWorksheetColWidth(ColWidths[AIndex]);
|
w := CalcWorksheetColWidth(ColWidths[AIndex]);
|
||||||
Worksheet.WriteColWidth(GetWorksheetCol(AIndex), w);
|
Worksheet.WriteColWidth(GetWorksheetCol(AIndex), w, Workbook.Units);
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
h := CalcWorksheetRowHeight(RowHeights[AIndex]);
|
h := CalcWorksheetRowHeight(RowHeights[AIndex]);
|
||||||
Worksheet.WriteRowHeight(GetWorksheetRow(AIndex), h);
|
Worksheet.WriteRowHeight(GetWorksheetRow(AIndex), h, Workbook.Units);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4681,9 +4679,9 @@ begin
|
|||||||
begin
|
begin
|
||||||
lCol := Worksheet.FindCol(i - FHeaderCount);
|
lCol := Worksheet.FindCol(i - FHeaderCount);
|
||||||
if lCol <> nil then
|
if lCol <> nil then
|
||||||
w := CalcColWidth(lCol^.Width)
|
w := CalcColWidthFromSheet(lCol^.Width)
|
||||||
else
|
else
|
||||||
w := CalcColWidth(Worksheet.DefaultColWidth);
|
w := CalcColWidthFromSheet(Worksheet.DefaultColWidth);
|
||||||
end;
|
end;
|
||||||
ColWidths[i] := w;
|
ColWidths[i] := w;
|
||||||
end;
|
end;
|
||||||
@ -4726,7 +4724,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
lRow := Worksheet.FindRow(r - FHeaderCount);
|
lRow := Worksheet.FindRow(r - FHeaderCount);
|
||||||
if (lRow <> nil) then
|
if (lRow <> nil) then
|
||||||
h := CalcRowHeight(lRow^.Height)
|
h := CalcRowHeightFromSheet(lRow^.Height)
|
||||||
else
|
else
|
||||||
h := CalcAutoRowHeight(r);
|
h := CalcAutoRowHeight(r);
|
||||||
end else
|
end else
|
||||||
|
@ -83,18 +83,33 @@ const
|
|||||||
{@@ Index of italic default font in workbook's font list - not used directly }
|
{@@ Index of italic default font in workbook's font list - not used directly }
|
||||||
ITALIC_FONTINDEX = 3;
|
ITALIC_FONTINDEX = 3;
|
||||||
|
|
||||||
{@@ Takes account of effect of cell margins on row height by adding this
|
|
||||||
value to the nominal row height. Note that this is an empirical value
|
|
||||||
and may be wrong. }
|
|
||||||
ROW_HEIGHT_CORRECTION = 0.2;
|
|
||||||
|
|
||||||
{@@ Line ending character in cell texts with fixed line break. Using a
|
{@@ Line ending character in cell texts with fixed line break. Using a
|
||||||
unique value simplifies many things... }
|
unique value simplifies many things... }
|
||||||
FPS_LINE_ENDING = #10;
|
FPS_LINE_ENDING = #10;
|
||||||
|
|
||||||
|
|
||||||
type
|
type
|
||||||
|
{@@ Units for size dimensions }
|
||||||
|
TsSizeUnits = (suChars, suLines, suMillimeters, suCentimeters, suPoints, suInches);
|
||||||
|
|
||||||
|
const
|
||||||
|
{@@ Unit names }
|
||||||
|
SizeUnitNames: array[TsSizeUnits] of string = (
|
||||||
|
'chars', 'lines', 'mm', 'cm', 'pt', 'in');
|
||||||
|
|
||||||
|
{@@ Takes account of effect of cell margins on row height by adding this
|
||||||
|
value to the nominal row height. Note that this is an empirical value
|
||||||
|
and may be wrong. }
|
||||||
|
ROW_HEIGHT_CORRECTION = 0.3;
|
||||||
|
|
||||||
|
{@@ Ratio of the width of the "0" character to the font size.
|
||||||
|
Empirical value to match Excel and LibreOffice column withs.
|
||||||
|
Needed because Excel defines colum width in terms of count of the "0"
|
||||||
|
character. }
|
||||||
|
ZERO_WIDTH_FACTOR = 351/640;
|
||||||
|
|
||||||
|
|
||||||
|
type
|
||||||
{@@ Tokens to identify the <b>elements in an expanded formula</b>.
|
{@@ Tokens to identify the <b>elements in an expanded formula</b>.
|
||||||
|
|
||||||
NOTE: When adding or rearranging items
|
NOTE: When adding or rearranging items
|
||||||
|
@ -1530,6 +1530,7 @@ begin
|
|||||||
Result := true;
|
Result := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Excel's unit of row heights is "twips", i.e. 1/20 point.
|
Excel's unit of row heights is "twips", i.e. 1/20 point.
|
||||||
Converts Twips to points.
|
Converts Twips to points.
|
||||||
@ -1682,8 +1683,10 @@ end;
|
|||||||
@return Value converted to millimeters
|
@return Value converted to millimeters
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
function PtsToMM(AValue: Double): Double;
|
function PtsToMM(AValue: Double): Double;
|
||||||
|
const
|
||||||
|
PTS = 25.4 / 72.0;
|
||||||
begin
|
begin
|
||||||
Result := AValue / 72 * 25.4;
|
Result := AValue * PTS;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -2122,6 +2125,14 @@ end;
|
|||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
Initializes the fields of a TsImage record
|
Initializes the fields of a TsImage record
|
||||||
|
|
||||||
|
@param ARow Index of the anchor row
|
||||||
|
@param ACol Index of the anchor column
|
||||||
|
@param AOffsetX Distance of the left image edge from the left edge of the
|
||||||
|
anchor column. Measured in the units defined by the workbook.
|
||||||
|
@param AOffsetY Distance of the top image edge from the top edge of the
|
||||||
|
anchor row. Measured in the units defined by the workbook.
|
||||||
|
@return TsImage record containing these values.
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure InitImageRecord(out AValue: TsImage; ARow, ACol: Cardinal;
|
procedure InitImageRecord(out AValue: TsImage; ARow, ACol: Cardinal;
|
||||||
AOffsetX, AOffsetY, AScaleX, AScaleY: Double);
|
AOffsetX, AOffsetY, AScaleX, AScaleY: Double);
|
||||||
@ -2143,8 +2154,6 @@ begin
|
|||||||
with AImage do
|
with AImage do
|
||||||
begin
|
begin
|
||||||
Index := -1;
|
Index := -1;
|
||||||
//ScaleX := 1.0;
|
|
||||||
//ScaleY := 1.0;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ begin
|
|||||||
|
|
||||||
// Comment in label cell
|
// Comment in label cell
|
||||||
col := 1;
|
col := 1;
|
||||||
MyWorksheet.WriteUTF8Text(row, col, 'Cell with comment');
|
MyWorksheet.WriteText(row, col, 'Cell with comment');
|
||||||
Myworksheet.WriteComment(row, col, ACommentText);
|
Myworksheet.WriteComment(row, col, ACommentText);
|
||||||
|
|
||||||
// Comment in number cell
|
// Comment in number cell
|
||||||
|
@ -194,7 +194,7 @@ begin
|
|||||||
cctNumber:
|
cctNumber:
|
||||||
cell := MyWorksheet.WriteNumber(row+col, col, SourceCells[row].NumberValue);
|
cell := MyWorksheet.WriteNumber(row+col, col, SourceCells[row].NumberValue);
|
||||||
cctUTF8String:
|
cctUTF8String:
|
||||||
cell := Myworksheet.WriteUTF8Text(row+col, col, SourceCells[row].UTF8StringValue);
|
cell := Myworksheet.WriteText(row+col, col, SourceCells[row].UTF8StringValue);
|
||||||
cctEmpty:
|
cctEmpty:
|
||||||
cell := MyWorksheet.WriteBlank(row+col, col);
|
cell := MyWorksheet.WriteBlank(row+col, col);
|
||||||
end;
|
end;
|
||||||
|
@ -265,7 +265,7 @@ begin
|
|||||||
if s[col+1] = 'x' then s[col+1] := ' ';
|
if s[col+1] = 'x' then s[col+1] := ' ';
|
||||||
end;
|
end;
|
||||||
if s[col+1] = 'x' then
|
if s[col+1] = 'x' then
|
||||||
MyWorksheet.WriteUTF8Text(row, col, CELLTEXT)
|
MyWorksheet.WriteText(row, col, CELLTEXT)
|
||||||
else
|
else
|
||||||
if s[col+1] = 'o' then
|
if s[col+1] = 'o' then
|
||||||
MyWorksheet.WriteBlank(row, col);
|
MyWorksheet.WriteBlank(row, col);
|
||||||
|
@ -112,7 +112,7 @@ begin
|
|||||||
for row := row1 to row2 do begin
|
for row := row1 to row2 do begin
|
||||||
MyWorksheet.WriteBlank(row, 0);
|
MyWorksheet.WriteBlank(row, 0);
|
||||||
MyWorksheet.WriteNumber(row, 1, 1.0);
|
MyWorksheet.WriteNumber(row, 1, 1.0);
|
||||||
MyWorksheet.WriteUTF8Text(row, 2, 'A');
|
MyWorksheet.WriteText(row, 2, 'A');
|
||||||
MyWorksheet.WriteFormula(Row, 3, formula);
|
MyWorksheet.WriteFormula(Row, 3, formula);
|
||||||
MyWorksheet.WriteRPNFormula(row, 4, CreateRPNFormula(
|
MyWorksheet.WriteRPNFormula(row, 4, CreateRPNFormula(
|
||||||
RPNCellValue('A1', nil)));
|
RPNCellValue('A1', nil)));
|
||||||
@ -135,7 +135,7 @@ begin
|
|||||||
for col := col1 to col2 do begin
|
for col := col1 to col2 do begin
|
||||||
MyWorksheet.WriteBlank(0, col);
|
MyWorksheet.WriteBlank(0, col);
|
||||||
MyWorksheet.WriteNumber(1, col, 1.0);
|
MyWorksheet.WriteNumber(1, col, 1.0);
|
||||||
MyWorksheet.WriteUTF8Text(2, col, 'A');
|
MyWorksheet.WriteText(2, col, 'A');
|
||||||
MyWorksheet.WriteFormula(3, col, formula);
|
MyWorksheet.WriteFormula(3, col, formula);
|
||||||
MyWorksheet.WriteRPNFormula(4, col, CreateRPNFormula(
|
MyWorksheet.WriteRPNFormula(4, col, CreateRPNFormula(
|
||||||
RPNCellValue('A1', nil)));
|
RPNCellValue('A1', nil)));
|
||||||
@ -172,7 +172,7 @@ begin
|
|||||||
// to file.
|
// to file.
|
||||||
for row := 0 to palette.Count-1 do
|
for row := 0 to palette.Count-1 do
|
||||||
begin
|
begin
|
||||||
MyWorksheet.WriteUTF8Text(row, 0, s);
|
MyWorksheet.WriteText(row, 0, s);
|
||||||
MyWorksheet.WriteFontColor(row, 0, palette[row]);
|
MyWorksheet.WriteFontColor(row, 0, palette[row]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ begin
|
|||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
try
|
try
|
||||||
MyWorkSheet:= MyWorkBook.AddWorksheet(ERROR_SHEET);
|
MyWorkSheet:= MyWorkBook.AddWorksheet(ERROR_SHEET);
|
||||||
MyWorksheet.WriteUTF8Text(0, 0, s);
|
MyWorksheet.WriteText(0, 0, s);
|
||||||
TempFile:=NewTempFile;
|
TempFile:=NewTempFile;
|
||||||
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
ErrList.Text := MyWorkbook.ErrorMsg;
|
ErrList.Text := MyWorkbook.ErrorMsg;
|
||||||
@ -219,7 +219,7 @@ begin
|
|||||||
MyWorkbook := TsWorkbook.Create;
|
MyWorkbook := TsWorkbook.Create;
|
||||||
try
|
try
|
||||||
MyWorksheet := MyWorkbook.AddWorksheet(ERROR_SHEET);
|
MyWorksheet := MyWorkbook.AddWorksheet(ERROR_SHEET);
|
||||||
Myworksheet.WriteUTF8Text(0, 0, s);
|
Myworksheet.WriteText(0, 0, s);
|
||||||
TempFile := NewTempFile;
|
TempFile := NewTempFile;
|
||||||
Myworkbook.WriteToFile(TempFile, AFormat, true);
|
Myworkbook.WriteToFile(TempFile, AFormat, true);
|
||||||
ErrList.Text := MyWorkbook.ErrorMsg;
|
ErrList.Text := MyWorkbook.ErrorMsg;
|
||||||
|
@ -1186,7 +1186,7 @@ begin
|
|||||||
try
|
try
|
||||||
MyWorkSheet:= MyWorkBook.AddWorksheet(RowHeightSheet);
|
MyWorkSheet:= MyWorkBook.AddWorksheet(RowHeightSheet);
|
||||||
for Row := Low(SollRowHeights) to High(SollRowHeights) do
|
for Row := Low(SollRowHeights) to High(SollRowHeights) do
|
||||||
MyWorksheet.WriteRowHeight(Row, SollRowHeights[Row]);
|
MyWorksheet.WriteRowHeight(Row, SollRowHeights[Row], suLines);
|
||||||
TempFile:=NewTempFile;
|
TempFile:=NewTempFile;
|
||||||
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
finally
|
finally
|
||||||
@ -1205,7 +1205,7 @@ begin
|
|||||||
fail('Error in test code. Failed to get named worksheet');
|
fail('Error in test code. Failed to get named worksheet');
|
||||||
for Row := Low(SollRowHeights) to High(SollRowHeights) do
|
for Row := Low(SollRowHeights) to High(SollRowHeights) do
|
||||||
begin
|
begin
|
||||||
ActualRowHeight := MyWorksheet.GetRowHeight(Row);
|
ActualRowHeight := MyWorksheet.GetRowHeight(Row, suLines);
|
||||||
// Take care of rounding errors - due to missing details of calculation
|
// Take care of rounding errors - due to missing details of calculation
|
||||||
// they can be quite large...
|
// they can be quite large...
|
||||||
if abs(ActualRowHeight - SollRowHeights[Row]) > 1e-2 then
|
if abs(ActualRowHeight - SollRowHeights[Row]) > 1e-2 then
|
||||||
|
@ -210,7 +210,7 @@ begin
|
|||||||
CheckEquals(expected, actual,
|
CheckEquals(expected, actual,
|
||||||
'Test saved hyperlink target, cell '+CellNotation(MyWorksheet, row, col));
|
'Test saved hyperlink target, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
|
|
||||||
actual := MyWorksheet.ReadAsUTF8Text(cell);
|
actual := MyWorksheet.ReadAsText(cell);
|
||||||
if row = 0 then begin
|
if row = 0 then begin
|
||||||
// An originally blank cell shows the hyperlink.Target.
|
// An originally blank cell shows the hyperlink.Target.
|
||||||
// But Worksheet.WriteHyperlink removes the "file:///" protocol
|
// But Worksheet.WriteHyperlink removes the "file:///" protocol
|
||||||
|
@ -987,7 +987,7 @@ begin
|
|||||||
'0'..'9': MyWorksheet.WriteNumber(row, col, StrToInt(s[col+1]));
|
'0'..'9': MyWorksheet.WriteNumber(row, col, StrToInt(s[col+1]));
|
||||||
'F' : MyWorksheet.WriteFormula(row, col, InsDelTestData[ATestIndex].Formula);
|
'F' : MyWorksheet.WriteFormula(row, col, InsDelTestData[ATestIndex].Formula);
|
||||||
'M' : begin
|
'M' : begin
|
||||||
MyWorksheet.WriteUTF8Text(row, col, 'M');
|
MyWorksheet.WriteText(row, col, 'M');
|
||||||
MyWorksheet.MergeCells(
|
MyWorksheet.MergeCells(
|
||||||
row,
|
row,
|
||||||
col,
|
col,
|
||||||
|
@ -130,10 +130,8 @@ const
|
|||||||
var
|
var
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
MyWorkbook: TsWorkbook;
|
MyWorkbook: TsWorkbook;
|
||||||
i, ilast, n, row, col: Integer;
|
i, ilast, row, col: Integer;
|
||||||
TempFile: string; //write xls/xml to this file and read back from it
|
TempFile: string; //write xls/xml to this file and read back from it
|
||||||
L: TStringList;
|
|
||||||
s: String;
|
|
||||||
sortParams: TsSortParams;
|
sortParams: TsSortParams;
|
||||||
actualNumber: Double;
|
actualNumber: Double;
|
||||||
actualString: String;
|
actualString: String;
|
||||||
@ -157,12 +155,12 @@ begin
|
|||||||
0: for i :=0 to High(SollSortNumbers) do // Numbers only
|
0: for i :=0 to High(SollSortNumbers) do // Numbers only
|
||||||
MyWorksheet.WriteNumber(i, col, SollSortNumbers[i]);
|
MyWorksheet.WriteNumber(i, col, SollSortNumbers[i]);
|
||||||
1: for i := 0 to High(SollSortStrings) do // Strings only
|
1: for i := 0 to High(SollSortStrings) do // Strings only
|
||||||
Myworksheet.WriteUTF8Text(i, col, SollSortStrings[i]);
|
Myworksheet.WriteText(i, col, SollSortStrings[i]);
|
||||||
2: begin // Numbers and strings
|
2: begin // Numbers and strings
|
||||||
for i := 0 to High(SollSortNumbers) do
|
for i := 0 to High(SollSortNumbers) do
|
||||||
MyWorkSheet.WriteNumber(i*2, col, SollSortNumbers[i]);
|
MyWorkSheet.WriteNumber(i*2, col, SollSortNumbers[i]);
|
||||||
for i := 0 to High(SollSortStrings) do
|
for i := 0 to High(SollSortStrings) do
|
||||||
MyWorksheet.WriteUTF8Text(i*2+1, col, SollSortStrings[i]);
|
MyWorksheet.WriteText(i*2+1, col, SollSortStrings[i]);
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -171,12 +169,12 @@ begin
|
|||||||
0: for i := 0 to High(SollSortNumbers) do
|
0: for i := 0 to High(SollSortNumbers) do
|
||||||
MyWorksheet.WriteNumber(row, i, SollSortNumbers[i]);
|
MyWorksheet.WriteNumber(row, i, SollSortNumbers[i]);
|
||||||
1: for i := 0 to High(SollSortStrings) do
|
1: for i := 0 to High(SollSortStrings) do
|
||||||
MyWorksheet.WriteUTF8Text(row, i, SollSortStrings[i]);
|
MyWorksheet.WriteText(row, i, SollSortStrings[i]);
|
||||||
2: begin
|
2: begin
|
||||||
for i := 0 to High(SollSortNumbers) do
|
for i := 0 to High(SollSortNumbers) do
|
||||||
myWorkSheet.WriteNumber(row, i*2, SollSortNumbers[i]);
|
myWorkSheet.WriteNumber(row, i*2, SollSortNumbers[i]);
|
||||||
for i:=0 to High(SollSortStrings) do
|
for i:=0 to High(SollSortStrings) do
|
||||||
MyWorksheet.WriteUTF8Text(row, i*2+1, SollSortStrings[i]);
|
MyWorksheet.WriteText(row, i*2+1, SollSortStrings[i]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -257,7 +255,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
1: begin
|
1: begin
|
||||||
cell := MyWorksheet.FindCell(row, col);
|
cell := MyWorksheet.FindCell(row, col);
|
||||||
actualString := MyWorksheet.ReadAsUTF8Text(cell);
|
actualString := MyWorksheet.ReadAsText(cell);
|
||||||
expectedString := char(ord('A') + i);
|
expectedString := char(ord('A') + i);
|
||||||
CheckEquals(expectedstring, actualstring,
|
CheckEquals(expectedstring, actualstring,
|
||||||
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
@ -279,7 +277,7 @@ begin
|
|||||||
CheckEquals(expectednumber, actualnumber,
|
CheckEquals(expectednumber, actualnumber,
|
||||||
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
end else begin
|
end else begin
|
||||||
actualstring := MyWorksheet.ReadAsUTF8Text(row, col);
|
actualstring := MyWorksheet.ReadAsText(row, col);
|
||||||
expectedstring := char(ord('A') + i - Length(SollSortNumbers));
|
expectedstring := char(ord('A') + i - Length(SollSortNumbers));
|
||||||
CheckEquals(expectedstring, actualstring,
|
CheckEquals(expectedstring, actualstring,
|
||||||
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
@ -302,14 +300,9 @@ const
|
|||||||
var
|
var
|
||||||
MyWorksheet: TsWorksheet;
|
MyWorksheet: TsWorksheet;
|
||||||
MyWorkbook: TsWorkbook;
|
MyWorkbook: TsWorkbook;
|
||||||
i, ilast, n, row, col: Integer;
|
i, ilast, row, col: Integer;
|
||||||
MyCell: PCell;
|
|
||||||
TempFile: string; //write xls/xml to this file and read back from it
|
TempFile: string; //write xls/xml to this file and read back from it
|
||||||
L: TStringList;
|
|
||||||
s: String;
|
|
||||||
sortParams: TsSortParams;
|
sortParams: TsSortParams;
|
||||||
sortOptions: TsSortOptions;
|
|
||||||
r1,r2,c1,c2: Cardinal;
|
|
||||||
actualNumber: Double;
|
actualNumber: Double;
|
||||||
actualString: String;
|
actualString: String;
|
||||||
expectedNumber: Double;
|
expectedNumber: Double;
|
||||||
@ -340,14 +333,14 @@ begin
|
|||||||
// We will sort primarily according to column A, and seconarily according
|
// We will sort primarily according to column A, and seconarily according
|
||||||
// to B. The construction allows us to determine if the sorting is correct.
|
// to B. The construction allows us to determine if the sorting is correct.
|
||||||
for i:=0 to iLast do
|
for i:=0 to iLast do
|
||||||
MyWorksheet.WriteUTF8Text(i, col, char(ord('A')+round(SollSortNumbers[i]) div 2));
|
MyWorksheet.WriteText(i, col, char(ord('A')+round(SollSortNumbers[i]) div 2));
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
// The same with the rows...
|
// The same with the rows...
|
||||||
for i:=0 to iLast do
|
for i:=0 to iLast do
|
||||||
MyWorksheet.WriteNumber(row+1, i, SollSortNumbers[i]);
|
MyWorksheet.WriteNumber(row+1, i, SollSortNumbers[i]);
|
||||||
for i:=0 to iLast do
|
for i:=0 to iLast do
|
||||||
MyWorksheet.WriteUTF8Text(row, i, char(ord('A')+round(SollSortNumbers[i]) div 2));
|
MyWorksheet.WriteText(row, i, char(ord('A')+round(SollSortNumbers[i]) div 2));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
MyWorkBook.WriteToFile(TempFile, AFormat, true);
|
||||||
@ -404,7 +397,7 @@ begin
|
|||||||
// Now read the string. It must be the character corresponding to the
|
// Now read the string. It must be the character corresponding to the
|
||||||
// half of the number
|
// half of the number
|
||||||
col := 0;
|
col := 0;
|
||||||
actualString := MyWorksheet.ReadAsUTF8Text(row, col);
|
actualString := MyWorksheet.ReadAsText(row, col);
|
||||||
expectedString := char(ord('A') + round(expectedNumber) div 2);
|
expectedString := char(ord('A') + round(expectedNumber) div 2);
|
||||||
CheckEquals(expectedstring, actualstring,
|
CheckEquals(expectedstring, actualstring,
|
||||||
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
@ -421,7 +414,7 @@ begin
|
|||||||
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
|
|
||||||
row := 0;
|
row := 0;
|
||||||
actualstring := MyWorksheet.ReadAsUTF8Text(row, col);
|
actualstring := MyWorksheet.ReadAsText(row, col);
|
||||||
expectedString := char(ord('A') + round(expectedNumber) div 2);
|
expectedString := char(ord('A') + round(expectedNumber) div 2);
|
||||||
CheckEquals(expectedstring, actualstring,
|
CheckEquals(expectedstring, actualstring,
|
||||||
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
|
||||||
|
@ -111,7 +111,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
for row := Length(SollNumbers) to worksheet.GetLastRowIndex do
|
for row := Length(SollNumbers) to worksheet.GetLastRowIndex do
|
||||||
begin
|
begin
|
||||||
s := worksheet.ReadAsUTF8Text(row, col);
|
s := worksheet.ReadAsText(row, col);
|
||||||
CheckEquals(SollStrings[row - Length(SollNumbers)], s,
|
CheckEquals(SollStrings[row - Length(SollNumbers)], s,
|
||||||
'Test string value mismatch, cell '+CellNotation(workSheet, row, col));
|
'Test string value mismatch, cell '+CellNotation(workSheet, row, col));
|
||||||
end;
|
end;
|
||||||
|
@ -488,7 +488,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
lCol := FWorksheet.FindCol(j);
|
lCol := FWorksheet.FindCol(j);
|
||||||
if lCol <> nil then
|
if lCol <> nil then
|
||||||
lColWidthStr := Format(' width="%.0fpt"', [lCol^.Width*FWorkbook.GetDefaultFontSize*0.5]);
|
lColWidthStr := Format(' width="%.0fpt"',
|
||||||
|
[FWorkbook.ConvertUnits(lCol^.Width, FWorkbook.Units, suPoints)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Row height (to be considered in first column)
|
// Row height (to be considered in first column)
|
||||||
@ -496,7 +497,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
lRow := FWorksheet.FindRow(i);
|
lRow := FWorksheet.FindRow(i);
|
||||||
if lRow <> nil then
|
if lRow <> nil then
|
||||||
lRowHeightStr := Format(' height="%.0fpt"', [lRow^.Height*FWorkbook.GetDefaultFontSize]);
|
lRowHeightStr := Format(' height="%.0fpt"',
|
||||||
|
[FWorkbook.ConvertUnits(lRow^.Height, FWorkbook.Units, suPoints)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Font
|
// Font
|
||||||
|
@ -363,10 +363,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsSpreadBIFF2Reader.ReadColWidth(AStream: TStream);
|
procedure TsSpreadBIFF2Reader.ReadColWidth(AStream: TStream);
|
||||||
|
const
|
||||||
|
EPS = 1E-3;
|
||||||
var
|
var
|
||||||
c, c1, c2: Cardinal;
|
c, c1, c2: Cardinal;
|
||||||
w: Word;
|
w: Word;
|
||||||
col: TCol;
|
colwidth: Single;
|
||||||
begin
|
begin
|
||||||
// read column start and end index of column range
|
// read column start and end index of column range
|
||||||
c1 := AStream.ReadByte;
|
c1 := AStream.ReadByte;
|
||||||
@ -374,22 +376,25 @@ begin
|
|||||||
// read col width in 1/256 of the width of "0" character
|
// read col width in 1/256 of the width of "0" character
|
||||||
w := WordLEToN(AStream.ReadWord);
|
w := WordLEToN(AStream.ReadWord);
|
||||||
// calculate width in units of "characters"
|
// calculate width in units of "characters"
|
||||||
col.Width := w / 256;
|
colwidth := FWorkbook.ConvertUnits(w / 256, suChars, FWorkbook.Units);
|
||||||
// assign width to columns, but only if different from default column width.
|
// assign width to columns, but only if different from default column width.
|
||||||
if not SameValue(col.Width, FWorksheet.DefaultColWidth) then
|
if not SameValue(colwidth, FWorksheet.DefaultColWidth, EPS) then
|
||||||
for c := c1 to c2 do
|
for c := c1 to c2 do
|
||||||
FWorksheet.WriteColInfo(c, col);
|
FWorksheet.WriteColWidth(c, colwidth, FWorkbook.Units);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsSpreadBIFF2Reader.ReadDefRowHeight(AStream: TStream);
|
procedure TsSpreadBIFF2Reader.ReadDefRowHeight(AStream: TStream);
|
||||||
var
|
var
|
||||||
hw: word;
|
hw: word;
|
||||||
h : Single;
|
|
||||||
begin
|
begin
|
||||||
hw := WordLEToN(AStream.ReadWord);
|
hw := WordLEToN(AStream.ReadWord);
|
||||||
|
FWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(
|
||||||
|
TwipsToPts(hw and $8000), suPoints, FWorkbook.Units);
|
||||||
|
{
|
||||||
h := TwipsToPts(hw and $8000) / FWorkbook.GetDefaultFontSize;
|
h := TwipsToPts(hw and $8000) / FWorkbook.GetDefaultFontSize;
|
||||||
if h > ROW_HEIGHT_CORRECTION then
|
if h > ROW_HEIGHT_CORRECTION then
|
||||||
FWorksheet.DefaultRowHeight := h - ROW_HEIGHT_CORRECTION;
|
FWorksheet.DefaultRowHeight := h - ROW_HEIGHT_CORRECTION;
|
||||||
|
}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsSpreadBIFF2Reader.ReadFONT(AStream: TStream);
|
procedure TsSpreadBIFF2Reader.ReadFONT(AStream: TStream);
|
||||||
@ -789,12 +794,16 @@ begin
|
|||||||
begin
|
begin
|
||||||
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
|
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
|
||||||
// Row height is encoded into the 15 remaining bits in units "twips" (1/20 pt)
|
// Row height is encoded into the 15 remaining bits in units "twips" (1/20 pt)
|
||||||
|
lRow^.Height := FWorkbook.ConvertUnits(
|
||||||
|
TwipsToPts(h and $7FFF), suPoints, FWorkbook.Units);
|
||||||
|
{
|
||||||
// We need it in "lines" units.
|
// We need it in "lines" units.
|
||||||
lRow^.Height := TwipsToPts(h and $7FFF) / Workbook.GetFont(0).Size;
|
lRow^.Height := TwipsToPts(h and $7FFF) / Workbook.GetFont(0).Size;
|
||||||
if lRow^.Height > ROW_HEIGHT_CORRECTION then
|
if lRow^.Height > ROW_HEIGHT_CORRECTION then
|
||||||
lRow^.Height := lRow^.Height - ROW_HEIGHT_CORRECTION
|
lRow^.Height := lRow^.Height - ROW_HEIGHT_CORRECTION
|
||||||
else
|
else
|
||||||
lRow^.Height := 0;
|
lRow^.Height := 0;
|
||||||
|
}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1227,7 +1236,7 @@ begin
|
|||||||
|
|
||||||
{ Column width }
|
{ Column width }
|
||||||
{ calculate width to be in units of 1/256 of pixel width of character "0" }
|
{ calculate width to be in units of 1/256 of pixel width of character "0" }
|
||||||
w := round(ACol^.Width * 256);
|
w := round(FWorkbook.ConvertUnits(ACol^.Width, FWorkbook.Units, suChars)*256);
|
||||||
rec.ColWidth := WordToLE(w);
|
rec.ColWidth := WordToLE(w);
|
||||||
|
|
||||||
{ Write out }
|
{ Write out }
|
||||||
@ -1780,7 +1789,8 @@ begin
|
|||||||
{ Default height for unused rows, in twips = 1/20 of a point
|
{ Default height for unused rows, in twips = 1/20 of a point
|
||||||
Bits 0-14: Default height for unused rows, in twips
|
Bits 0-14: Default height for unused rows, in twips
|
||||||
Bit 15 = 1: Row height not changed manually }
|
Bit 15 = 1: Row height not changed manually }
|
||||||
h := (AWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * FWorkbook.GetDefaultFontSize;
|
h := FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints);
|
||||||
|
// h := (AWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * FWorkbook.GetDefaultFontSize;
|
||||||
AStream.WriteWord(WordToLE(PtsToTwips(h)));
|
AStream.WriteWord(WordToLE(PtsToTwips(h)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1964,7 +1974,6 @@ var
|
|||||||
containsXF: Boolean;
|
containsXF: Boolean;
|
||||||
rowheight: Word;
|
rowheight: Word;
|
||||||
w: Word;
|
w: Word;
|
||||||
h: Single;
|
|
||||||
begin
|
begin
|
||||||
if (ARowIndex >= FLimitations.MaxRowCount) or (AFirstColIndex >= FLimitations.MaxColCount)
|
if (ARowIndex >= FLimitations.MaxRowCount) or (AFirstColIndex >= FLimitations.MaxColCount)
|
||||||
or (ALastColIndex >= FLimitations.MaxColCount)
|
or (ALastColIndex >= FLimitations.MaxColCount)
|
||||||
@ -1988,14 +1997,17 @@ begin
|
|||||||
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
|
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
|
||||||
|
|
||||||
{ Row height (in twips, 1/20 point) and info on custom row height }
|
{ Row height (in twips, 1/20 point) and info on custom row height }
|
||||||
h := Workbook.GetFont(0).Size;
|
|
||||||
if (ARow = nil) or (ARow^.Height = ASheet.DefaultRowHeight) then
|
if (ARow = nil) or (ARow^.Height = ASheet.DefaultRowHeight) then
|
||||||
rowheight := PtsToTwips((ASheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * h)
|
rowheight := PtsToTwips(FWorkbook.ConvertUnits(
|
||||||
|
ASheet.DefaultRowHeight, FWorkbook.Units, suPoints))
|
||||||
|
// rowheight := PtsToTwips((ASheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * h)
|
||||||
else
|
else
|
||||||
if (ARow^.Height = 0) then
|
if (ARow^.Height = 0) then
|
||||||
rowheight := 0
|
rowheight := 0
|
||||||
else
|
else
|
||||||
rowheight := PtsToTwips((ARow^.Height + ROW_HEIGHT_CORRECTION) * h);
|
rowheight := PtsToTwips(FWorkbook.ConvertUnits(
|
||||||
|
ARow^.Height, FWorkbook.Units, suPoints));
|
||||||
|
// rowheight := PtsToTwips((ARow^.Height + ROW_HEIGHT_CORRECTION) * h);
|
||||||
w := rowheight and $7FFF;
|
w := rowheight and $7FFF;
|
||||||
AStream.WriteWord(WordToLE(w));
|
AStream.WriteWord(WordToLE(w));
|
||||||
|
|
||||||
|
@ -691,8 +691,8 @@ var
|
|||||||
begin
|
begin
|
||||||
// read width in 1/256 of the width of "0" character
|
// read width in 1/256 of the width of "0" character
|
||||||
w := WordLEToN(AStream.ReadWord);
|
w := WordLEToN(AStream.ReadWord);
|
||||||
// calculate width in units of "characters" and use it as DefaultColWidth
|
// calculate width in workbook units and use it as DefaultColWidth
|
||||||
ASheet.DefaultColWidth := w / 256;
|
ASheet.DefaultColWidth := FWorkbook.ConvertUnits(w / 256, suChars, FWorkbook.Units);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Reads a STRING record which contains the result of string formula. }
|
{ Reads a STRING record which contains the result of string formula. }
|
||||||
@ -1322,6 +1322,8 @@ procedure TsSpreadBIFF5Writer.WriteDefinedName(AStream: TStream;
|
|||||||
var
|
var
|
||||||
sheetIdx: Integer;
|
sheetIdx: Integer;
|
||||||
begin
|
begin
|
||||||
|
Unused(AIndexToREF);
|
||||||
|
|
||||||
sheetIdx := FWorkbook.GetWorksheetIndex(AWorksheet);
|
sheetIdx := FWorkbook.GetWorksheetIndex(AWorksheet);
|
||||||
|
|
||||||
{ Token for tArea3dR }
|
{ Token for tArea3dR }
|
||||||
|
@ -1399,7 +1399,7 @@ const
|
|||||||
var
|
var
|
||||||
c, c1, c2: Cardinal;
|
c, c1, c2: Cardinal;
|
||||||
w: Word;
|
w: Word;
|
||||||
col: TCol;
|
colwidth: Double;
|
||||||
begin
|
begin
|
||||||
// read column start and end index of column range
|
// read column start and end index of column range
|
||||||
c1 := WordLEToN(AStream.ReadWord);
|
c1 := WordLEToN(AStream.ReadWord);
|
||||||
@ -1407,11 +1407,11 @@ begin
|
|||||||
// read col width in 1/256 of the width of "0" character
|
// read col width in 1/256 of the width of "0" character
|
||||||
w := WordLEToN(AStream.ReadWord);
|
w := WordLEToN(AStream.ReadWord);
|
||||||
// calculate width in units of "characters"
|
// calculate width in units of "characters"
|
||||||
col.Width := w / 256;
|
colwidth := FWorkbook.ConvertUnits(w / 256, suChars, FWorkbook.Units);
|
||||||
// assign width to columns, but only if different from default column width
|
// assign width to columns, but only if different from default column width
|
||||||
if not SameValue(col.Width, FWorksheet.DefaultColWidth, EPS) then
|
if not SameValue(colwidth, FWorksheet.DefaultColWidth, EPS) then
|
||||||
for c := c1 to c2 do
|
for c := c1 to c2 do
|
||||||
FWorksheet.WriteColInfo(c, col);
|
FWorksheet.WriteColWidth(c, colwidth, FWorkbook.Units);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -1511,9 +1511,12 @@ end;
|
|||||||
Reads the default column width
|
Reads the default column width
|
||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsSpreadBIFFReader.ReadDefColWidth(AStream: TStream);
|
procedure TsSpreadBIFFReader.ReadDefColWidth(AStream: TStream);
|
||||||
|
var
|
||||||
|
w: Word;
|
||||||
begin
|
begin
|
||||||
// The file contains the column width in characters
|
// The file contains the column width in characters
|
||||||
FWorksheet.DefaultColWidth := WordLEToN(AStream.ReadWord);
|
w := WordLEToN(AStream.ReadWord);
|
||||||
|
FWorksheet.DefaultColWidth := FWorkbook.ConvertUnits(w, suChars, FWorkbook.Units);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -1523,16 +1526,14 @@ end;
|
|||||||
procedure TsSpreadBIFFReader.ReadDefRowHeight(AStream: TStream);
|
procedure TsSpreadBIFFReader.ReadDefRowHeight(AStream: TStream);
|
||||||
var
|
var
|
||||||
hw: Word;
|
hw: Word;
|
||||||
h: Single;
|
|
||||||
begin
|
begin
|
||||||
// Options
|
// Options
|
||||||
AStream.ReadWord;
|
AStream.ReadWord;
|
||||||
|
|
||||||
// Height, in Twips (1/20 pt).
|
// Height, in Twips (1/20 pt).
|
||||||
hw := WordLEToN(AStream.ReadWord);
|
hw := WordLEToN(AStream.ReadWord);
|
||||||
h := TwipsToPts(hw) / FWorkbook.GetDefaultFontSize;
|
FWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(
|
||||||
if h > ROW_HEIGHT_CORRECTION then
|
TwipsToPts(hw), suPoints, FWorkbook.Units);
|
||||||
FWorksheet.DefaultRowHeight := h - ROW_HEIGHT_CORRECTION;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -2089,13 +2090,8 @@ begin
|
|||||||
if rowrec.Flags and $00000040 <> 0 then begin
|
if rowrec.Flags and $00000040 <> 0 then begin
|
||||||
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
|
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
|
||||||
// row height is encoded into the 15 lower bits in units "twips" (1/20 pt)
|
// row height is encoded into the 15 lower bits in units "twips" (1/20 pt)
|
||||||
// we need it in "lines", i.e. we divide the points by the point size of the default font
|
|
||||||
h := WordLEToN(rowrec.Height) and $7FFF;
|
h := WordLEToN(rowrec.Height) and $7FFF;
|
||||||
lRow^.Height := TwipsToPts(h) / FWorkbook.GetDefaultFontSize;
|
lRow^.Height := FWorkbook.ConvertUnits(TwipsToPts(h), suPoints, FWorkbook.Units);
|
||||||
if lRow^.Height > ROW_HEIGHT_CORRECTION then
|
|
||||||
lRow^.Height := lRow^.Height - ROW_HEIGHT_CORRECTION
|
|
||||||
else
|
|
||||||
lRow^.Height := 0;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3183,7 +3179,7 @@ begin
|
|||||||
rec.EndCol := WordToLE(ACol^.Col);
|
rec.EndCol := WordToLE(ACol^.Col);
|
||||||
|
|
||||||
{ calculate width to be in units of 1/256 of pixel width of character "0" }
|
{ calculate width to be in units of 1/256 of pixel width of character "0" }
|
||||||
w := round(ACol^.Width * 256);
|
w := round(FWorkbook.ConvertUnits(ACol^.Width, FWorkbook.Units, suChars)*256);
|
||||||
|
|
||||||
rec.ColWidth := WordToLE(w);
|
rec.ColWidth := WordToLE(w);
|
||||||
rec.XFIndex := WordToLE(15); // Index of XF record, not used
|
rec.XFIndex := WordToLE(15); // Index of XF record, not used
|
||||||
@ -3309,13 +3305,16 @@ end;
|
|||||||
-------------------------------------------------------------------------------}
|
-------------------------------------------------------------------------------}
|
||||||
procedure TsSpreadBIFFWriter.WriteDefaultColWidth(AStream: TStream;
|
procedure TsSpreadBIFFWriter.WriteDefaultColWidth(AStream: TStream;
|
||||||
AWorksheet: TsWorksheet);
|
AWorksheet: TsWorksheet);
|
||||||
|
var
|
||||||
|
colwidth: Single;
|
||||||
begin
|
begin
|
||||||
{ BIFF record header }
|
{ BIFF record header }
|
||||||
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFCOLWIDTH, 2);
|
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFCOLWIDTH, 2);
|
||||||
|
|
||||||
{ Column width in characters, using the width of the zero character
|
{ Column width in characters, using the width of the zero character
|
||||||
from default font (first FONT record in the file). }
|
from default font (first FONT record in the file). }
|
||||||
AStream.WriteWord(round(FWorksheet.DefaultColWidth));
|
colwidth := FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suChars);
|
||||||
|
AStream.WriteWord(round(colwidth));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{@@ ----------------------------------------------------------------------------
|
{@@ ----------------------------------------------------------------------------
|
||||||
@ -3327,7 +3326,7 @@ end;
|
|||||||
procedure TsSpreadBIFFWriter.WriteDefaultRowHeight(AStream: TStream;
|
procedure TsSpreadBIFFWriter.WriteDefaultRowHeight(AStream: TStream;
|
||||||
AWorksheet: TsWorksheet);
|
AWorksheet: TsWorksheet);
|
||||||
var
|
var
|
||||||
h: Single;
|
h: Double;
|
||||||
begin
|
begin
|
||||||
{ BIFF record header }
|
{ BIFF record header }
|
||||||
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFROWHEIGHT, 4);
|
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFROWHEIGHT, 4);
|
||||||
@ -3340,7 +3339,7 @@ begin
|
|||||||
AStream.WriteWord(WordToLE($0001));
|
AStream.WriteWord(WordToLE($0001));
|
||||||
|
|
||||||
{ Default height for unused rows, in twips = 1/20 of a point }
|
{ Default height for unused rows, in twips = 1/20 of a point }
|
||||||
h := (AWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * FWorkbook.GetDefaultFontSize;
|
h := FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints);
|
||||||
AStream.WriteWord(WordToLE(PtsToTwips(h)));
|
AStream.WriteWord(WordToLE(PtsToTwips(h)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4243,7 +4242,6 @@ var
|
|||||||
spaceabove, spacebelow: Boolean;
|
spaceabove, spacebelow: Boolean;
|
||||||
colindex: Cardinal;
|
colindex: Cardinal;
|
||||||
rowheight: Word;
|
rowheight: Word;
|
||||||
h: Single;
|
|
||||||
fmt: PsCellFormat;
|
fmt: PsCellFormat;
|
||||||
begin
|
begin
|
||||||
if (ARowIndex >= FLimitations.MaxRowCount) or
|
if (ARowIndex >= FLimitations.MaxRowCount) or
|
||||||
@ -4287,14 +4285,13 @@ begin
|
|||||||
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
|
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
|
||||||
|
|
||||||
{ Row height (in twips, 1/20 point) and info on custom row height }
|
{ Row height (in twips, 1/20 point) and info on custom row height }
|
||||||
h := Workbook.GetFont(0).Size; // Point size of default font
|
|
||||||
if (ARow = nil) or (ARow^.Height = ASheet.DefaultRowHeight) then
|
if (ARow = nil) or (ARow^.Height = ASheet.DefaultRowHeight) then
|
||||||
rowheight := PtsToTwips((ASheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * h)
|
rowheight := PtsToTwips(FWorkbook.ConvertUnits(ASheet.DefaultRowHeight, FWorkbook.Units, suPoints))
|
||||||
else
|
else
|
||||||
if (ARow^.Height = 0) then
|
if (ARow^.Height = 0) then
|
||||||
rowheight := 0
|
rowheight := 0
|
||||||
else
|
else
|
||||||
rowheight := PtsToTwips((ARow^.Height + ROW_HEIGHT_CORRECTION)*h);
|
rowheight := PtsToTwips(FWorkbook.ConvertUnits(ARow^.Height, FWorkbook.Units, suPoints));
|
||||||
w := rowheight and $7FFF;
|
w := rowheight and $7FFF;
|
||||||
AStream.WriteWord(WordToLE(w));
|
AStream.WriteWord(WordToLE(w));
|
||||||
|
|
||||||
|
@ -671,15 +671,9 @@ var
|
|||||||
cell: PCell;
|
cell: PCell;
|
||||||
rowheightStr: String;
|
rowheightStr: String;
|
||||||
colwidthStr: String;
|
colwidthStr: String;
|
||||||
defFnt: TsFont;
|
|
||||||
col: PCol;
|
col: PCol;
|
||||||
row: PRow;
|
row: PRow;
|
||||||
cw_fact, rh_fact: Double;
|
|
||||||
begin
|
begin
|
||||||
defFnt := FWorkbook.GetDefaultFont;
|
|
||||||
cw_fact := defFnt.Size * 0.5; // ColWidthFactor = Approx width of "0" character in pts
|
|
||||||
rh_fact := defFnt.Size; // RowHeightFactor = Height of a single line
|
|
||||||
|
|
||||||
r1 := 0;
|
r1 := 0;
|
||||||
c1 := 0;
|
c1 := 0;
|
||||||
r2 := AWorksheet.GetLastRowIndex;
|
r2 := AWorksheet.GetLastRowIndex;
|
||||||
@ -691,8 +685,8 @@ begin
|
|||||||
'ss:DefaultRowHeight="%.2f">' + LF,
|
'ss:DefaultRowHeight="%.2f">' + LF,
|
||||||
[
|
[
|
||||||
AWorksheet.GetLastColIndex + 1, AWorksheet.GetLastRowIndex + 1,
|
AWorksheet.GetLastColIndex + 1, AWorksheet.GetLastRowIndex + 1,
|
||||||
FWorksheet.DefaultColWidth * cw_fact,
|
FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suPoints),
|
||||||
(FWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * rh_fact
|
FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints)
|
||||||
],
|
],
|
||||||
FPointSeparatorSettings
|
FPointSeparatorSettings
|
||||||
));
|
));
|
||||||
@ -700,11 +694,10 @@ begin
|
|||||||
for c := c1 to c2 do
|
for c := c1 to c2 do
|
||||||
begin
|
begin
|
||||||
col := FWorksheet.FindCol(c);
|
col := FWorksheet.FindCol(c);
|
||||||
// column width in the worksheet is in multiples of the "0" character width.
|
// column width is needed in pts.
|
||||||
// In the xml file, it is needed in pts.
|
|
||||||
if Assigned(col) then
|
if Assigned(col) then
|
||||||
colwidthStr := Format(' ss:Width="%0.2f"',
|
colwidthStr := Format(' ss:Width="%0.2f"',
|
||||||
[col^.Width * cw_fact],
|
[FWorkbook.ConvertUnits(col^.Width, FWorkbook.Units, suPoints)],
|
||||||
FPointSeparatorSettings)
|
FPointSeparatorSettings)
|
||||||
else
|
else
|
||||||
colwidthStr := '';
|
colwidthStr := '';
|
||||||
@ -715,11 +708,10 @@ begin
|
|||||||
for r := r1 to r2 do
|
for r := r1 to r2 do
|
||||||
begin
|
begin
|
||||||
row := FWorksheet.FindRow(r);
|
row := FWorksheet.FindRow(r);
|
||||||
// Row height in the worksheet is in multiples of the default font height
|
// Row height is needed in pts.
|
||||||
// In the xml file, it is needed in pts.
|
|
||||||
if Assigned(row) then
|
if Assigned(row) then
|
||||||
rowheightStr := Format(' ss:Height="%.2f"',
|
rowheightStr := Format(' ss:Height="%.2f"',
|
||||||
[(row^.Height + ROW_HEIGHT_CORRECTION) * rh_fact],
|
[FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
|
||||||
FPointSeparatorSettings
|
FPointSeparatorSettings
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
|
@ -982,7 +982,7 @@ end;
|
|||||||
|
|
||||||
procedure TsSpreadOOXMLReader.ReadCols(ANode: TDOMNode; AWorksheet: TsWorksheet);
|
procedure TsSpreadOOXMLReader.ReadCols(ANode: TDOMNode; AWorksheet: TsWorksheet);
|
||||||
const
|
const
|
||||||
EPS = 1e-2;
|
EPS = 1e-3;
|
||||||
var
|
var
|
||||||
colNode: TDOMNode;
|
colNode: TDOMNode;
|
||||||
col, col1, col2: Cardinal;
|
col, col1, col2: Cardinal;
|
||||||
@ -1008,7 +1008,7 @@ begin
|
|||||||
if (s <> '') and TryStrToFloat(s, w, FPointSeparatorSettings) then
|
if (s <> '') and TryStrToFloat(s, w, FPointSeparatorSettings) then
|
||||||
if not SameValue(w, AWorksheet.DefaultColWidth, EPS) then
|
if not SameValue(w, AWorksheet.DefaultColWidth, EPS) then
|
||||||
for col := col1 to col2 do
|
for col := col1 to col2 do
|
||||||
AWorksheet.WriteColWidth(col, w);
|
AWorksheet.WriteColWidth(col, w, suChars);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
colNode := colNode.NextSibling;
|
colNode := colNode.NextSibling;
|
||||||
@ -1719,7 +1719,6 @@ var
|
|||||||
s: String;
|
s: String;
|
||||||
ht: Single;
|
ht: Single;
|
||||||
r: Cardinal;
|
r: Cardinal;
|
||||||
row: PRow;
|
|
||||||
begin
|
begin
|
||||||
if ANode = nil then
|
if ANode = nil then
|
||||||
exit;
|
exit;
|
||||||
@ -1729,12 +1728,7 @@ begin
|
|||||||
r := StrToInt(s) - 1;
|
r := StrToInt(s) - 1;
|
||||||
s := GetAttrValue(ANode, 'ht');
|
s := GetAttrValue(ANode, 'ht');
|
||||||
ht := StrToFloat(s, FPointSeparatorSettings); // seems to be in "Points"
|
ht := StrToFloat(s, FPointSeparatorSettings); // seems to be in "Points"
|
||||||
row := AWorksheet.GetRow(r);
|
AWorksheet.WriteRowHeight(r, ht, suPoints);
|
||||||
row^.Height := ht / FWorkbook.GetDefaultFontSize;
|
|
||||||
if row^.Height > ROW_HEIGHT_CORRECTION then
|
|
||||||
row^.Height := row^.Height - ROW_HEIGHT_CORRECTION
|
|
||||||
else
|
|
||||||
row^.Height := 0;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1808,7 +1802,7 @@ end;
|
|||||||
procedure TsSpreadOOXMLReader.ReadSheetFormatPr(ANode: TDOMNode;
|
procedure TsSpreadOOXMLReader.ReadSheetFormatPr(ANode: TDOMNode;
|
||||||
AWorksheet: TsWorksheet);
|
AWorksheet: TsWorksheet);
|
||||||
var
|
var
|
||||||
w, h: Single;
|
w, h: Double;
|
||||||
s: String;
|
s: String;
|
||||||
begin
|
begin
|
||||||
if ANode = nil then
|
if ANode = nil then
|
||||||
@ -1816,16 +1810,11 @@ begin
|
|||||||
|
|
||||||
s := GetAttrValue(ANode, 'defaultColWidth'); // is in characters
|
s := GetAttrValue(ANode, 'defaultColWidth'); // is in characters
|
||||||
if (s <> '') and TryStrToFloat(s, w, FPointSeparatorSettings) then
|
if (s <> '') and TryStrToFloat(s, w, FPointSeparatorSettings) then
|
||||||
AWorksheet.DefaultColWidth := w;
|
AWorksheet.DefaultColWidth := FWorkbook.ConvertUnits(w, suChars, FWorkbook.Units);
|
||||||
|
|
||||||
s := GetAttrValue(ANode, 'defaultRowHeight'); // in in points
|
s := GetAttrValue(ANode, 'defaultRowHeight'); // is in points
|
||||||
if (s <> '') and TryStrToFloat(s, h, FPointSeparatorSettings) then begin
|
if (s <> '') and TryStrToFloat(s, h, FPointSeparatorSettings) then //begin
|
||||||
h := h / Workbook.GetDefaultFontSize;
|
AWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(h, suPoints, FWorkbook.Units);
|
||||||
if h > ROW_HEIGHT_CORRECTION then begin
|
|
||||||
h := h - ROW_HEIGHT_CORRECTION;
|
|
||||||
AWorksheet.DefaultRowHeight := h;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TsSpreadOOXMLReader.ReadSheetList(ANode: TDOMNode; AList: TStrings);
|
procedure TsSpreadOOXMLReader.ReadSheetList(ANode: TDOMNode; AList: TStrings);
|
||||||
@ -2474,22 +2463,17 @@ var
|
|||||||
c: Integer;
|
c: Integer;
|
||||||
w: Single;
|
w: Single;
|
||||||
begin
|
begin
|
||||||
{
|
|
||||||
if AWorksheet.Cols.Count = 0 then
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
AppendToStream(AStream,
|
AppendToStream(AStream,
|
||||||
'<cols>');
|
'<cols>');
|
||||||
|
|
||||||
for c:=0 to AWorksheet.GetLastColIndex do begin
|
for c:=0 to AWorksheet.GetLastColIndex do begin
|
||||||
col := AWorksheet.FindCol(c);
|
col := AWorksheet.FindCol(c);
|
||||||
if col <> nil then
|
if col <> nil then
|
||||||
w := col^.Width
|
w := FWorkbook.ConvertUnits(col^.Width, FWorkbook.Units, suChars)
|
||||||
else
|
else
|
||||||
w := AWorksheet.DefaultColWidth;
|
w := FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suChars);
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<col min="%d" max="%d" width="%g" customWidth="1" />',
|
'<col min="%d" max="%d" width="%.2f" customWidth="1" />',
|
||||||
[c+1, c+1, w], FPointSeparatorSettings)
|
[c+1, c+1, w], FPointSeparatorSettings)
|
||||||
);
|
);
|
||||||
end;
|
end;
|
||||||
@ -2910,10 +2894,7 @@ var
|
|||||||
styleCell: PCell;
|
styleCell: PCell;
|
||||||
cell: PCell;
|
cell: PCell;
|
||||||
rh: String;
|
rh: String;
|
||||||
h0: Single;
|
|
||||||
begin
|
begin
|
||||||
h0 := Workbook.GetDefaultFontSize; // Point size of default font
|
|
||||||
|
|
||||||
AppendToStream(AStream,
|
AppendToStream(AStream,
|
||||||
'<sheetData>');
|
'<sheetData>');
|
||||||
|
|
||||||
@ -2924,8 +2905,8 @@ begin
|
|||||||
for r := 0 to r2 do begin
|
for r := 0 to r2 do begin
|
||||||
row := AWorksheet.FindRow(r);
|
row := AWorksheet.FindRow(r);
|
||||||
if row <> nil then
|
if row <> nil then
|
||||||
rh := Format(' ht="%g" customHeight="1"', [
|
rh := Format(' ht="%.2f" customHeight="1"',
|
||||||
(row^.Height + ROW_HEIGHT_CORRECTION)*h0],
|
[FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
|
||||||
FPointSeparatorSettings)
|
FPointSeparatorSettings)
|
||||||
else
|
else
|
||||||
rh := '';
|
rh := '';
|
||||||
@ -2981,14 +2962,15 @@ begin
|
|||||||
// If the row has a custom height add this value to the <row> specification
|
// If the row has a custom height add this value to the <row> specification
|
||||||
row := AWorksheet.FindRow(r);
|
row := AWorksheet.FindRow(r);
|
||||||
if row <> nil then
|
if row <> nil then
|
||||||
rh := Format(' ht="%g" customHeight="1"', [
|
rh := Format(' ht="%.2f" customHeight="1"',
|
||||||
(row^.Height + ROW_HEIGHT_CORRECTION)*h0], FPointSeparatorSettings)
|
[FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
|
||||||
|
FPointSeparatorSettings)
|
||||||
else
|
else
|
||||||
rh := '';
|
rh := '';
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<row r="%d" spans="%d:%d"%s>', [r+1, c1+1, c2+1, rh]));
|
'<row r="%d" spans="%d:%d"%s>', [r+1, c1+1, c2+1, rh]));
|
||||||
// Write cells belonging to this row.
|
|
||||||
|
|
||||||
|
// Write cells belonging to this row.
|
||||||
{ // Strange: the RowEnumerator is very slow here... ?!
|
{ // Strange: the RowEnumerator is very slow here... ?!
|
||||||
for cell in AWorksheet.Cells.GetRowEnumerator(r) do
|
for cell in AWorksheet.Cells.GetRowEnumerator(r) do
|
||||||
WriteCellToStream(AStream, cell);
|
WriteCellToStream(AStream, cell);
|
||||||
@ -3013,10 +2995,11 @@ procedure TsSpreadOOXMLWriter.WriteSheetFormatPr(AStream: TStream;
|
|||||||
var
|
var
|
||||||
w, h: Single;
|
w, h: Single;
|
||||||
begin
|
begin
|
||||||
w := AWorksheet.DefaultColWidth;
|
// Excel has column width in characters, and row heights in pts.
|
||||||
h := (AWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * Workbook.GetDefaultFontSize;
|
w := FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suChars);
|
||||||
|
h := FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints);
|
||||||
AppendToStream(AStream, Format(
|
AppendToStream(AStream, Format(
|
||||||
'<sheetFormatPr baseColWidth="%g" defaultRowHeight="%g" customHeight="true" />',
|
'<sheetFormatPr baseColWidth="%.2f" defaultRowHeight="%.2f" customHeight="true" />',
|
||||||
[w, h],
|
[w, h],
|
||||||
FPointSeparatorSettings));
|
FPointSeparatorSettings));
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user