diff --git a/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi b/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi
index 9b90a89bd..42b4a8748 100644
--- a/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi
+++ b/components/fpspreadsheet/examples/db_import_export/db_export_import.lpi
@@ -46,7 +46,6 @@
-
diff --git a/components/fpspreadsheet/examples/db_import_export/main.lfm b/components/fpspreadsheet/examples/db_import_export/main.lfm
index a5f4a10dd..f899d966e 100644
--- a/components/fpspreadsheet/examples/db_import_export/main.lfm
+++ b/components/fpspreadsheet/examples/db_import_export/main.lfm
@@ -8,7 +8,7 @@ object Form1: TForm1
ClientWidth = 521
OnCreate = FormCreate
OnDestroy = FormDestroy
- LCLVersion = '1.5'
+ LCLVersion = '1.7'
object PageControl: TPageControl
Left = 4
Height = 302
diff --git a/components/fpspreadsheet/examples/db_import_export/main.pas b/components/fpspreadsheet/examples/db_import_export/main.pas
index 0c2bbbaed..a0255fb02 100644
--- a/components/fpspreadsheet/examples/db_import_export/main.pas
+++ b/components/fpspreadsheet/examples/db_import_export/main.pas
@@ -127,6 +127,7 @@ var
i: Integer;
startDate: TDate;
maxAge: Integer = 80 * 365;
+ f: TField;
begin
if FExportDataset <> nil then
FExportDataset.Free;
@@ -137,7 +138,7 @@ begin
FExportDataset := TDbf.Create(self);
FExportDataset.FilePathFull := DATADIR + DirectorySeparator;
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.FieldDefs.Add('Last 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
// defined in the FIRST_NAMES, LAST_NAMES and CITIES arrays. We also add a
// random birthday.
+
for i:=1 to StrToInt(EdRecordCount.Text) do begin
if (i mod 1000 = 0) then
begin
@@ -165,8 +167,8 @@ begin
FExportDataset.FieldByName('City').AsString := CITIES[Random(NUM_CITIES)];
FExportDataset.FieldByName('Birthday').AsDateTime := startDate - random(maxAge);
FExportDataset.FieldByName('Salary').AsFloat := 1000+Random(9000);
- FExportDataSet.FieldByName('Work begin').AsDateTime := 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 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.Post;
end;
FExportDataset.Close;
diff --git a/components/fpspreadsheet/examples/other/demo_expression_parser.lpi b/components/fpspreadsheet/examples/other/demo_expression_parser.lpi
index 23a7af816..95621c6d0 100644
--- a/components/fpspreadsheet/examples/other/demo_expression_parser.lpi
+++ b/components/fpspreadsheet/examples/other/demo_expression_parser.lpi
@@ -40,7 +40,6 @@
-
diff --git a/components/fpspreadsheet/examples/other/demo_expression_parser.pas b/components/fpspreadsheet/examples/other/demo_expression_parser.pas
index abe1e06da..7d23ae617 100644
--- a/components/fpspreadsheet/examples/other/demo_expression_parser.pas
+++ b/components/fpspreadsheet/examples/other/demo_expression_parser.pas
@@ -25,25 +25,28 @@ begin
try
worksheet := workbook.AddWorksheet('Test');
- worksheet.WriteNumber(0, 0, 1); // A1
- worksheet.WriteNumber(0, 1, 2.5); // B1
+ worksheet.WriteNumber(0, 0, 1); // A1
+ 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
- worksheet.WriteUTF8Text(0, 1, 'World'); // B1
- cell := worksheet.WriteFormula(1, 0, '=4+5'); // A2
- cell := worksheet.WriteFormula(2, 0, 'AND(TRUE(), TRUE(), TRUE())');
- cell := worksheet.WriteFormula(3, 0, 'SIN(A1+B1)');
- cell := worksheet.WriteFormula(4, 0, '=TRUE()');
- cell := worksheet.WriteFormula(5, 0, '=1-(4/2)^2*2-1'); // A2
- cell := Worksheet.WriteFormula(6, 0, 'datedif(today(),Date(2014,1,1),"D")');
- cell := Worksheet.WriteFormula(7, 0, 'Day(Date(2014, 1, 12))');
- cell := Worksheet.WriteFormula(8, 0, 'SUM(1,2,3)');
- cell := Worksheet.WriteFormula(9, 0, 'CELL("address",A1)');
- cell := Worksheet.WriteFormula(10, 0, 'REPT("Hallo", 3)');
- cell := Worksheet.WriteFormula(11, 0, '#REF!');
+ { Select one of these formulas }
+ //cell := worksheet.WriteFormula(1, 0, '=4+5'); // A2
+ //cell := worksheet.WriteFormula(1, 0, 'AND(TRUE(), TRUE(), TRUE())');
+ cell := worksheet.WriteFormula(1, 0, 'SIN(A1+B1)');
+ //cell := worksheet.WriteFormula(1, 0, '=TRUE()');
+ //cell := worksheet.WriteFormula(1, 0, '=1-(4/2)^2*2-1'); // A2
+ //cell := Worksheet.WriteFormula(1, 0, 'datedif(today(),Date(2014,1,1),"D")');
+ //cell := Worksheet.WriteFormula(1, 0, 'Day(Date(2014, 1, 12))');
+ //cell := Worksheet.WriteFormula(1, 0, 'SUM(1,2,3)');
+ //cell := Worksheet.WriteFormula(1, 0, 'CELL("address",A1)');
+ //cell := Worksheet.WriteFormula(1, 0, 'REPT("Hallo", 3)');
+ //cell := Worksheet.WriteFormula(1, 0, '#REF!');
- WriteLn('A1: ', worksheet.ReadAsUTF8Text(0, 0));
- WriteLn('B1: ', worksheet.ReadAsUTF8Text(0, 1));
+ WriteLn('A1: ', worksheet.ReadAsText(0, 0));
+ WriteLn('B1: ', worksheet.ReadAsText(0, 1));
parser := TsSpreadsheetParser.Create(worksheet);
try
diff --git a/components/fpspreadsheet/examples/other/demo_recursive_calc.lpi b/components/fpspreadsheet/examples/other/demo_recursive_calc.lpi
index 100aa9695..7d51ad825 100644
--- a/components/fpspreadsheet/examples/other/demo_recursive_calc.lpi
+++ b/components/fpspreadsheet/examples/other/demo_recursive_calc.lpi
@@ -40,7 +40,6 @@
-
diff --git a/components/fpspreadsheet/examples/other/demo_recursive_calc.pas b/components/fpspreadsheet/examples/other/demo_recursive_calc.pas
index f53f2aa20..3705d5fef 100644
--- a/components/fpspreadsheet/examples/other/demo_recursive_calc.pas
+++ b/components/fpspreadsheet/examples/other/demo_recursive_calc.pas
@@ -32,24 +32,20 @@ begin
worksheet := workbook.AddWorksheet('Calc_test');
worksheet.WriteColWidth(0, 20);
- // A1
- worksheet.WriteUTF8Text(0, 0, '=B2+1');
- // B1
- worksheet.WriteFormula(0, 1, 'B2+1');
- // A2
- worksheet.WriteUTF8Text(1, 0, '=B3+1');
- // B2
- worksheet.WriteFormula(1, 1, 'B3+1');
- // A3
- worksheet.WriteUTF8Text(2, 0, '(not dependent)');
- // B3
- worksheet.WriteNumber(2, 1, 1);
+ worksheet.WriteUTF8Text(0, 0, '=B2+1'); // A1
+ worksheet.WriteFormula(0, 1, 'B2+1'); // B1
+ worksheet.WriteUTF8Text(1, 0, '=B3+1'); // A2
+ worksheet.WriteFormula(1, 1, 'B3+1'); // B2
+ worksheet.WriteUTF8Text(2, 0, '(not dependent)'); // A3
+ worksheet.WriteNumber(2, 1, 1); // B3
workbook.WriteToFile(OutputFile, sfExcel8, true);
writeln('Finished.');
writeln;
writeln('Please open "'+OutputFile+'" in "fpsgrid".');
writeLn('It must show correct calculation results in cells B1 and B2.');
+
+ ReadLn;
finally
workbook.Free;
end;
diff --git a/components/fpspreadsheet/examples/other/demo_sorting.lpi b/components/fpspreadsheet/examples/other/demo_sorting.lpi
index 62cc1b40b..d81f66b6c 100644
--- a/components/fpspreadsheet/examples/other/demo_sorting.lpi
+++ b/components/fpspreadsheet/examples/other/demo_sorting.lpi
@@ -40,7 +40,6 @@
-
diff --git a/components/fpspreadsheet/examples/other/demo_sorting.pas b/components/fpspreadsheet/examples/other/demo_sorting.pas
index bcfaeabd4..e7d857cf9 100644
--- a/components/fpspreadsheet/examples/other/demo_sorting.pas
+++ b/components/fpspreadsheet/examples/other/demo_sorting.pas
@@ -289,16 +289,16 @@ var
try
worksheet := workbook.AddWorksheet('Test');
- worksheet.WriteUTF8Text(0, 0, 'E');
- worksheet.WriteUTF8Text(1, 0, 'E');
- worksheet.WriteUTF8Text(2, 0, 'C');
- worksheet.WriteUTF8Text(3, 0, 'B');
- worksheet.WriteUTF8Text(4, 0, 'D');
- worksheet.WriteUTF8Text(5, 0, 'D');
- worksheet.WriteUTF8Text(6, 0, 'A');
- worksheet.WriteUTF8Text(7, 0, 'B');
- worksheet.WriteUTF8Text(8, 0, 'C');
- worksheet.WriteUTF8Text(9, 0, 'A');
+ worksheet.WriteText(0, 0, 'E');
+ worksheet.WriteText(1, 0, 'E');
+ worksheet.WriteText(2, 0, 'C');
+ worksheet.WriteText(3, 0, 'B');
+ worksheet.WriteText(4, 0, 'D');
+ worksheet.WriteText(5, 0, 'D');
+ worksheet.WriteText(6, 0, 'A');
+ worksheet.WriteText(7, 0, 'B');
+ worksheet.WriteText(8, 0, 'C');
+ worksheet.WriteText(9, 0, 'A');
worksheet.WriteNumber(0, 1, 9); // A2 --> E
worksheet.WriteNumber(1, 1, 8); // B2 --> E
@@ -322,7 +322,7 @@ var
WriteLn(#9, 'A', #9, 'B');
for i:=0 to 9 do
begin
- s := worksheet.ReadAsUTF8Text(i, 0);
+ s := worksheet.ReadAsText(i, 0);
n := worksheet.ReadAsNumber(i, 1);
WriteLn(i, #9, s, #9, FloatToStr(n));
end;
@@ -345,16 +345,16 @@ var
try
worksheet := workbook.AddWorksheet('Test');
- worksheet.WriteUTF8Text(0, 0, 'E');
- worksheet.WriteUTF8Text(0, 1, 'E');
- worksheet.WriteUTF8Text(0, 2, 'C');
- worksheet.WriteUTF8Text(0, 3, 'B');
- worksheet.WriteUTF8Text(0, 4, 'D');
- worksheet.WriteUTF8Text(0, 5, 'D');
- worksheet.WriteUTF8Text(0, 6, 'A');
- worksheet.WriteUTF8Text(0, 7, 'B');
- worksheet.WriteUTF8Text(0, 8, 'C');
- worksheet.WriteUTF8Text(0, 9, 'A');
+ worksheet.WriteText(0, 0, 'E');
+ worksheet.WriteText(0, 1, 'E');
+ worksheet.WriteText(0, 2, 'C');
+ worksheet.WriteText(0, 3, 'B');
+ worksheet.WriteText(0, 4, 'D');
+ worksheet.WriteText(0, 5, 'D');
+ worksheet.WriteText(0, 6, 'A');
+ worksheet.WriteText(0, 7, 'B');
+ worksheet.WriteText(0, 8, 'C');
+ worksheet.WriteText(0, 9, 'A');
worksheet.WriteNumber(1, 0, 9); // A2 --> E
worksheet.WriteNumber(1, 1, 8); // B2 --> E
@@ -382,7 +382,7 @@ var
Write('1', #9);
for i:=0 to 9 do
- Write(worksheet.ReadAsUTF8Text(0, i), #9);
+ Write(worksheet.ReadAsText(0, i), #9);
WriteLn;
Write('2', #9);
@@ -411,5 +411,7 @@ begin
SortTwoColumns_TwoKeys_1;
SortTwoRows_TwoKeys_1;
+
+ ReadLn;
end.
diff --git a/components/fpspreadsheet/examples/other/demo_write_colors.lpr b/components/fpspreadsheet/examples/other/demo_write_colors.lpr
index 178c185db..f00cb5bf9 100644
--- a/components/fpspreadsheet/examples/other/demo_write_colors.lpr
+++ b/components/fpspreadsheet/examples/other/demo_write_colors.lpr
@@ -41,7 +41,7 @@ begin
// Write colors to worksheet
for row := 0 to palette.Count-1 do begin
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.WriteHorAlignment(row, 0, haCenter);
end;
@@ -49,7 +49,7 @@ begin
palette.Free;
end;
- MyWorksheet.WriteColWidth(0, 25);
+ MyWorksheet.WriteColWidth(0, 5.0, suCentimeters);
// Save the spreadsheet to a file
MyWorkbook.WriteToFile(MyDir + TestFile, sfExcel8, True);
diff --git a/components/fpspreadsheet/examples/other/demo_write_formatting.pas b/components/fpspreadsheet/examples/other/demo_write_formatting.pas
index dc2b2da7e..de4f2e2a0 100644
--- a/components/fpspreadsheet/examples/other/demo_write_formatting.pas
+++ b/components/fpspreadsheet/examples/other/demo_write_formatting.pas
@@ -26,69 +26,69 @@ begin
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
// 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^.Border := [];
- MyWorksheet.WriteUTF8Text(1, 3, '[N]');// D2
+ MyWorksheet.WriteText(1, 3, '[N]'); // D2
MyCell := MyWorksheet.GetCell(1, 3);
MyCell^.Border := [cbNorth];
- MyWorksheet.WriteUTF8Text(1, 5, '[W]');// F2
+ MyWorksheet.WriteText(1, 5, '[W]'); // F2
MyCell := MyWorksheet.GetCell(1, 5);
MyCell^.Border := [cbWest];
- MyWorksheet.WriteUTF8Text(1, 7, '[E]');// H2
+ MyWorksheet.WriteText(1, 7, '[E]'); // H2
MyCell := MyWorksheet.GetCell(1, 7);
MyCell^.Border := [cbEast];
- MyWorksheet.WriteUTF8Text(1, 9, '[S]');// J2
+ MyWorksheet.WriteText(1, 9, '[S]'); // J2
MyCell := MyWorksheet.GetCell(1, 9);
MyCell^.Border := [cbSouth];
- MyWorksheet.WriteUTF8Text(3, 1, '[N,W]');// B4
+ MyWorksheet.WriteText(3, 1, '[N,W]'); // B4
MyCell := MyWorksheet.GetCell(3, 1);
MyCell^.Border := [cbNorth, cbWest];
- MyWorksheet.WriteUTF8Text(3, 3, '[N,E]');// D4
+ MyWorksheet.WriteText(3, 3, '[N,E]'); // D4
MyCell := MyWorksheet.GetCell(3, 3);
MyCell^.Border := [cbNorth, cbEast];
- MyWorksheet.WriteUTF8Text(3, 5, '[N,S]');// F4
+ MyWorksheet.WriteText(3, 5, '[N,S]'); // F4
MyCell := MyWorksheet.GetCell(3, 5);
MyCell^.Border := [cbNorth, cbSouth];
- MyWorksheet.WriteUTF8Text(3, 7, '[W,E]');// H4
+ MyWorksheet.WriteText(3, 7, '[W,E]'); // H4
MyCell := MyWorksheet.GetCell(3, 7);
MyCell^.Border := [cbWest, cbEast];
- MyWorksheet.WriteUTF8Text(3, 9, '[W,S]');// J4
+ MyWorksheet.WriteText(3, 9, '[W,S]'); // J4
MyCell := MyWorksheet.GetCell(3, 9);
MyCell^.Border := [cbWest, cbSouth];
- MyWorksheet.WriteUTF8Text(3, 11, '[E,S]');// L4
+ MyWorksheet.WriteText(3, 11, '[E,S]'); // L4
MyCell := MyWorksheet.GetCell(3, 11);
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^.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^.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^.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^.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^.Border := [cbNorth, cbWest, cbEast, cbSouth];
MyCell^.BackgroundColor := scGreen;
@@ -102,36 +102,36 @@ begin
// Line 1
- MyWorksheet.WriteUTF8Text(1, 1, 'Relatório');
+ MyWorksheet.WriteText(1, 1, 'Relatório');
MyCell := MyWorksheet.GetCell(1, 1);
MyCell^.Border := [cbNorth, cbWest, cbSouth];
MyCell^.BackgroundColor := scGrey20pct;
- MyWorksheet.WriteUTF8Text(1, 2, ' ');
+ MyWorksheet.WriteText(1, 2, ' ');
MyCell := MyWorksheet.GetCell(1, 2);
MyCell^.Border := [cbNorth, cbEast, cbSouth];
MyCell^.BackgroundColor := scGrey20pct;
// Line 2
- MyWorksheet.WriteUTF8Text(2, 1, 'Compras');
+ MyWorksheet.WriteText(2, 1, 'Compras');
MyCell := MyWorksheet.GetCell(2, 1);
MyCell^.Border := [cbWest];
MyCell^.BackgroundColor := scGrey10pct;
- MyWorksheet.WriteUTF8Text(2, 2, 'R$ 20');
+ MyWorksheet.WriteText(2, 2, 'R$ 20');
MyCell := MyWorksheet.GetCell(2, 2);
MyCell^.Border := [cbEast];
MyCell^.BackgroundColor := scGrey10pct;
// Line 3
- MyWorksheet.WriteUTF8Text(3, 1, 'Total:');
+ MyWorksheet.WriteText(3, 1, 'Total:');
MyCell := MyWorksheet.GetCell(3, 1);
MyCell^.Border := [cbWest, cbSouth];
MyCell^.BackgroundColor := scGrey10pct;
- MyWorksheet.WriteUTF8Text(3, 2, 'R$ 20');
+ MyWorksheet.WriteText(3, 2, 'R$ 20');
MyCell := MyWorksheet.GetCell(3, 2);
MyCell^.Border := [cbEast, cbSouth];
MyCell^.BackgroundColor := scGrey10pct;
diff --git a/components/fpspreadsheet/examples/other/demo_write_formula.pas b/components/fpspreadsheet/examples/other/demo_write_formula.pas
index 582efc788..f1c0bfa2c 100644
--- a/components/fpspreadsheet/examples/other/demo_write_formula.pas
+++ b/components/fpspreadsheet/examples/other/demo_write_formula.pas
@@ -29,17 +29,17 @@ begin
MyWorksheet := MyWorkbook.AddWorksheet('Worksheet1');
// Write some cells
- MyWorksheet.WriteUTF8Text(0, 1, 'Text Formula');// B1
- MyWorksheet.WriteUTF8Text(0, 2, 'RPN');// C1
+ MyWorksheet.WriteText(0, 1, 'Text Formula');// B1
+ MyWorksheet.WriteText(0, 2, 'RPN'); // C1
- MyWorksheet.WriteNumber(0, 4, -3.14); // E1
- MyWorksheet.WriteNumber(1, 4, 100); // E2
- MyWorksheet.WriteNumber(2, 4, 200); // E3
- Myworksheet.WriteNumber(3, 4, 300); // E4
- MyWorksheet.WriteNumber(4, 4, 250); // E5
+ MyWorksheet.WriteNumber(0, 4, -3.14); // E1
+ MyWorksheet.WriteNumber(1, 4, 100); // E2
+ MyWorksheet.WriteNumber(2, 4, 200); // E3
+ Myworksheet.WriteNumber(3, 4, 300); // E4
+ MyWorksheet.WriteNumber(4, 4, 250); // E5
// =Sum(E2:E5)
- MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:E5)'); // A2
+ MyWorksheet.WriteText(1, 0, '=Sum(E2:E5)'); // A2
MyFormula := '=Sum(E2:E5)';
MyWorksheet.WriteFormula(1, 1, MyFormula); // B2
MyWorksheet.WriteRPNFormula(1, 2, CreateRPNFormula( // C2
@@ -48,7 +48,7 @@ begin
nil))));
// 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.WriteRPNFormula(2, 2, CreateRPNFormula( // C3
RPNCellValue('E1',
@@ -56,7 +56,7 @@ begin
nil))));
// 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.WriteRPNFormula(3, 2, CreateRPNFormula( //C4
RPNNumber(4.0,
@@ -73,7 +73,7 @@ begin
// Line 1
- MyWorksheet.WriteUTF8Text(1, 1, 'Relatório');
+ MyWorksheet.WriteText(1, 1, 'Relatório');
MyCell := MyWorksheet.GetCell(1, 1);
MyWorksheet.WriteBorders(MyCell, [cbNorth, cbWest, cbSouth]);
Myworksheet.WriteBackgroundColor(MyCell, scGray20pct);
diff --git a/components/fpspreadsheet/examples/other/demo_write_images.lpr b/components/fpspreadsheet/examples/other/demo_write_images.lpr
index 6d51df7e2..82f05fc30 100644
--- a/components/fpspreadsheet/examples/other/demo_write_images.lpr
+++ b/components/fpspreadsheet/examples/other/demo_write_images.lpr
@@ -10,8 +10,7 @@ var
MyWorkbook: TsWorkbook;
MyWorksheet: TsWorksheet;
MyDir: string;
- cell: PCell;
- i, r, c: Integer;
+ i: Integer;
const
image1 = '../../images/components/TSWORKBOOKSOURCE.png';
@@ -25,7 +24,11 @@ begin
MyWorkbook := TsWorkbook.Create;
try
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'); //
// 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
diff --git a/components/fpspreadsheet/examples/read_write/csvdemo/csvread.lpr b/components/fpspreadsheet/examples/read_write/csvdemo/csvread.lpr
index 950e5cda4..3fbacf6e4 100644
--- a/components/fpspreadsheet/examples/read_write/csvdemo/csvread.lpr
+++ b/components/fpspreadsheet/examples/read_write/csvdemo/csvread.lpr
@@ -54,7 +54,7 @@ begin
WriteLn(
'Row: ', CurCell^.Row,
' Col: ', CurCell^.Col,
- ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
+ ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
);
end;
@@ -62,5 +62,11 @@ begin
// Finalization
MyWorkbook.Free;
end;
+
+ {$ifdef WINDOWS}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ ReadLn;
+ {$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/csvdemo/csvwrite.lpr b/components/fpspreadsheet/examples/read_write/csvdemo/csvwrite.lpr
index 15eb56968..a2a0a5fbd 100644
--- a/components/fpspreadsheet/examples/read_write/csvdemo/csvwrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/csvdemo/csvwrite.lpr
@@ -29,10 +29,10 @@ begin
MyWorkbook := TsWorkbook.Create;
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet');
- //MyWorksheet.WriteColWidth(0, 5);
- //MyWorksheet.WriteColWidth(1, 30);
-
- MyWorksheet.WriteRowHeight(0, 3); // 3 lines
+ // Note: ColWidth and RowHeight is not available in CSV
+ MyWorksheet.WriteColWidth(0, 5, suChars);
+ MyWorksheet.WriteColWidth(1, 30, suChars);
+ MyWorksheet.WriteRowHeight(0, 3, suLines); // 3 lines
// Turn off grid lines and hide headers
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
@@ -49,32 +49,32 @@ begin
MyWorksheet.WriteNumber(0, 3, 4.0);
// 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.WriteUTF8Text(1, 1, 'Second');
- MyWorksheet.WriteUTF8Text(1, 2, 'Third');
- MyWorksheet.WriteUTF8Text(1, 3, 'Fourth');
+ MyWorksheet.WriteText(1, 1, 'Second');
+ MyWorksheet.WriteText(1, 2, 'Third');
+ MyWorksheet.WriteText(1, 3, 'Fourth');
// Write current date/time
MyWorksheet.WriteDateTime(2, 0, now);
// Write cell with background color
- MyWorksheet.WriteUTF8Text(3, 0, 'Text');
+ MyWorksheet.WriteText(3, 0, 'Text');
MyWorksheet.WriteBackgroundColor(3, 0, scSilver);
// Empty cell with background color
MyWorksheet.WriteBackgroundColor(3, 1, scGrey);
// 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, 1, [cbNorth, cbSouth]);
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
// Left, center, right aligned texts
- MyWorksheet.WriteUTF8Text(5, 0, 'L');
- MyWorksheet.WriteUTF8Text(5, 1, 'C');
- MyWorksheet.WriteUTF8Text(5, 2, 'R');
+ MyWorksheet.WriteText(5, 0, 'L');
+ MyWorksheet.WriteText(5, 1, 'C');
+ MyWorksheet.WriteText(5, 2, 'R');
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
MyWorksheet.WriteHorAlignment(5, 2, haRight);
@@ -93,96 +93,96 @@ begin
// Write current date/time and test numbers for various formatting options
inc(r, 2);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
+ MyWorksheet.WriteText(r, 0, 'nfShortDate');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
inc(r);
MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
+ MyWorksheet.WriteText(r, 0, 'nfLongTime');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, ''dd/mmm''');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, ''dd/mmm''');
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm''');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, ''mmm/yy''');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, ''mmm/yy''');
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
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.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
// Write formatted numbers
number := 12345.67890123456789;
inc(r, 2);
- MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
- MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
+ MyWorksheet.WriteText(r, 1, '12345.67890123456789');
+ MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
+ MyWorksheet.WriteText(r, 0, 'nfGeneral');
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
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, 2, -number, nfFixed, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixed, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
MyWorksheet.WriteFontColor(r, 2, scGray);
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, 2, -number, nfFixed, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixed, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
MyWorksheet.WriteFontColor(r, 2, scGray);
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, 2, -number, nfFixedTh, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixedTh, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
MyWorksheet.WriteFontColor(r, 2, scGray);
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, 2, -number, nfFixedTh, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixedTh, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
MyWorksheet.WriteFontColor(r, 2, scGray);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 1 dec');
+ MyWorksheet.WriteText(r, 0, 'nfExp, 1 dec');
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
@@ -192,13 +192,13 @@ begin
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
MyWorksheet.WriteFontColor(r, 4, scGray);
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, 2, -number, nfExp, 2);
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfExp, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
@@ -208,17 +208,17 @@ begin
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
MyWorksheet.WriteFontColor(r, 4, scGray);
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, 2, -number, nfCurrency, 0, '$');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
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, 2, -number, nfCurrencyRed, 0, 'USD');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
@@ -226,7 +226,7 @@ begin
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
MyWorksheet.WriteFontColor(r, 2, scGray);
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.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
@@ -235,7 +235,7 @@ begin
MyWorksheet.WriteFontColor(r, 2, scGray);
inc(r);
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
+ MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 1, scGray);
@@ -244,7 +244,7 @@ begin
MyWorksheet.WriteFontColor(r, 2, scGray);
inc(r);
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.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 1, scGray);
@@ -252,7 +252,7 @@ begin
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 2, scGray);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteFontColor(r, 1, scGray);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
@@ -264,34 +264,34 @@ begin
MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
MyWorksheet.WriteFontColor(r, 1, scGray);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
MyWorksheet.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
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.WriteFontColor(r, 1, scGray);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
MyWorksheet.WriteFontColor(r, 1, scGray);
inc(r);
diff --git a/components/fpspreadsheet/examples/read_write/excel2demo/excel2read.lpr b/components/fpspreadsheet/examples/read_write/excel2demo/excel2read.lpr
index 9e292d599..644dbd2f6 100644
--- a/components/fpspreadsheet/examples/read_write/excel2demo/excel2read.lpr
+++ b/components/fpspreadsheet/examples/read_write/excel2demo/excel2read.lpr
@@ -47,7 +47,7 @@ begin
for CurCell in MyWorksheet.Cells do
begin
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
Write(' (Formula ', CurCell^.FormulaValue, ')');
@@ -58,5 +58,11 @@ begin
// Finalization
MyWorkbook.Free;
end;
+
+ {$ifdef Windows}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ ReadLn;
+ {$endif}
end.
diff --git a/components/fpspreadsheet/examples/read_write/excel2demo/excel2write.lpr b/components/fpspreadsheet/examples/read_write/excel2demo/excel2write.lpr
index 9214e6395..e7fe4fbe1 100644
--- a/components/fpspreadsheet/examples/read_write/excel2demo/excel2write.lpr
+++ b/components/fpspreadsheet/examples/read_write/excel2demo/excel2write.lpr
@@ -21,10 +21,9 @@ var
MyRPNFormula: TsRPNFormula;
MyDir: string;
number: Double;
- lCol: TCol;
- lRow: TRow;
r: Integer;
fmt: String;
+ lCol: TCol;
begin
// Open the output file
MyDir := ExtractFilePath(ParamStr(0));
@@ -33,11 +32,6 @@ begin
MyWorkbook := TsWorkbook.Create;
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
//MyWorksheet.Options := MyWorksheet.Options - [soShowGridLines, soShowHeaders];
@@ -81,32 +75,32 @@ begin
MyWorksheet.WriteFormula(0, 7, '=SIN(A1+B1)');
// 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.WriteUTF8Text(1, 1, 'Second');
- MyWorksheet.WriteUTF8Text(1, 2, 'Third');
- MyWorksheet.WriteUTF8Text(1, 3, 'Fourth');
+ MyWorksheet.WriteText(1, 1, 'Second');
+ MyWorksheet.WriteText(1, 2, 'Third');
+ MyWorksheet.WriteText(1, 3, 'Fourth');
// Write current date/time
MyWorksheet.WriteDateTime(2, 0, now);
// Write cell with background color
- MyWorksheet.WriteUTF8Text(3, 0, 'Text');
+ MyWorksheet.WriteText(3, 0, 'Text');
MyWorksheet.WriteBackgroundColor(3, 0, NA_COLOR);
// Empty cell with background color
MyWorksheet.WriteBackgroundColor(3, 1, NA_COLOR);
// 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, 1, [cbNorth, cbSouth]);
MyWorksheet.WriteBorders(4, 2, [cbNorth, cbSouth]);
// Left, center, right aligned texts
- MyWorksheet.WriteUTF8Text(5, 0, 'L');
- MyWorksheet.WriteUTF8Text(5, 1, 'C');
- MyWorksheet.WriteUTF8Text(5, 2, 'R');
+ MyWorksheet.WriteText(5, 0, 'L');
+ MyWorksheet.WriteText(5, 1, 'C');
+ MyWorksheet.WriteText(5, 2, 'R');
MyWorksheet.WriteHorAlignment(5, 0, haLeft);
MyWorksheet.WriteHorAlignment(5, 1, haCenter);
MyWorksheet.WriteHorAlignment(5, 2, haRight);
@@ -124,99 +118,100 @@ begin
r:= 10;
// 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);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
+ MyWorksheet.WriteText(r, 0, 'nfShortDate');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
+ MyWorksheet.WriteText(r, 0, 'nfLongDate');
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
+ MyWorksheet.WriteText(r, 0, 'nfLongTime');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfDayMonth');
+ MyWorksheet.WriteText(r, 0, 'nfDayMonth');
MyWorksheet.WriteDateTime(r, 1, now, nfDayMonth);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfMonthYear');
+ MyWorksheet.WriteText(r, 0, 'nfMonthYear');
MyWorksheet.WriteDateTime(r, 1, now, nfMonthYear);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
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.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
-
+ *)
// Write formatted numbers
number := 12345.67890123456789;
inc(r, 2);
- MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
- MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
+ MyWorksheet.WriteText(r, 1, '12345.67890123456789');
+ MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
+ MyWorksheet.WriteText(r, 0, 'nfGeneral');
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
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, 2, -number, nfFixed, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixed, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 1);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 1);
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
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, 2, -number, nfFixed, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixed, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixed, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixed, 3);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfFixed, 3);
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
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, 2, -number, nfFixedTh, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixedTh, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 1);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 1);
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
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, 2, -number, nfFixedTh, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFixedTh, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfFixedTh, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfFixedTh, 3);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfFixedTh, 3);
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 1 dec');
+ MyWorksheet.WriteText(r, 0, 'nfExp, 1 dec');
MyWorksheet.WriteNumber(r, 1, number, nfExp, 1);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 1);
@@ -226,13 +221,13 @@ begin
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
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, 2, -number, nfExp, 2);
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfExp, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfExp, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfExp, 3);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number, nfExp, 3);
@@ -242,23 +237,25 @@ begin
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
MyWorksheet.WriteFontColor(r, 4, NA_COLOR);
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, 2, -number, nfCurrency, 0, '$');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, '$');
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, 2, -number, nfCurrencyRed, 0, 'USD');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
- inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
+ inc(r); *)
+ MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
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.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
@@ -267,7 +264,7 @@ begin
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
inc(r);
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
+ MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
@@ -276,15 +273,16 @@ begin
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
inc(r);
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.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
+ *)
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
@@ -293,53 +291,53 @@ begin
MyWorksheet.WriteFontColor(r, 2, NA_COLOR);
inc(r, 2);
number := 1.333333333;
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 0 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
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.WriteFontColor(r, 1, NA_COLOR);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
MyWorksheet.WriteFontColor(r, 1, NA_COLOR);
inc(r);
// Set width of columns 0 to 3
- MyWorksheet.WriteColWidth(0, 48); // 48 characters, default is 12 --> 4x default width
- lCol.Width := 24; // 24 characters, default is 12 --> 2x default width
+ MyWorksheet.WriteColWidth(0, 10, suCentimeters); // 10 cm
+ lCol.Width := 40; // WriteColInfo uses workbook units, i.e. mm
MyWorksheet.WriteColInfo(1, lCol);
MyWorksheet.WriteColInfo(2, 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
- lRow.Height := 4; // 4 lines
- MyWorksheet.WriteRowInfo(5, lRow);
- lRow.Height := 2; // 2 lines
- MyWorksheet.WriteRowInfo(6, lRow);
+ MyWorksheet.WriteRowHeight(5, 4, suLines); // Lines
+ MyWorksheet.WriteRowHeight(6, 2); // Lines is default...
// Save the spreadsheet to a file
MyWorkbook.WriteToFile(MyDir + 'test' + STR_EXCEL_EXTENSION, sfExcel2, true);
diff --git a/components/fpspreadsheet/examples/read_write/excel5demo/excel5read.lpr b/components/fpspreadsheet/examples/read_write/excel5demo/excel5read.lpr
index 6a8c30635..d9fc15711 100644
--- a/components/fpspreadsheet/examples/read_write/excel5demo/excel5read.lpr
+++ b/components/fpspreadsheet/examples/read_write/excel5demo/excel5read.lpr
@@ -46,7 +46,7 @@ begin
begin
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
Write(' - Formula: ', CurCell^.FormulaValue);
WriteLn;
@@ -56,5 +56,11 @@ begin
// Finalization
MyWorkbook.Free;
end;
+
+ {$ifdef Windows}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ Readln;
+ {$endif}
end.
diff --git a/components/fpspreadsheet/examples/read_write/excel5demo/excel5write.lpr b/components/fpspreadsheet/examples/read_write/excel5demo/excel5write.lpr
index 646c16c06..dbc61e581 100644
--- a/components/fpspreadsheet/examples/read_write/excel5demo/excel5write.lpr
+++ b/components/fpspreadsheet/examples/read_write/excel5demo/excel5write.lpr
@@ -48,10 +48,10 @@ begin
MyWorkbook.AddFont('Calibri', 20, [], scRed);
// 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
- MyWorksheet.WriteColWidth(0, 40);
+ MyWorksheet.WriteColWidth(0, 40); // characters
MyWorksheet.WriteColWidth(1, 20);
MyWorksheet.WriteColWidth(2, 20);
MyWorksheet.WriteColWidth(3, 15);
@@ -61,12 +61,11 @@ begin
MyWorksheet.WriteNumber(0, 0, 1.0);// A1
MyWorksheet.WriteVertAlignment(0, 0, vaCenter);
-
MyWorksheet.WriteNumber(0, 1, 2.0);// B1
MyWorksheet.WriteNumber(0, 2, 3.0);// C1
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.WriteFontColor(4, 2, scRed);
MyWorksheet.WriteBackgroundColor(4, 2, scSilver);
@@ -74,35 +73,35 @@ begin
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.WriteHorAlignment(4, 4, haCenter);
- MyWorksheet.WriteUTF8Text(4, 5, 'Stacked text');
+ MyWorksheet.WriteText(4, 5, 'Stacked text');
MyWorksheet.WriteTextRotation(4, 5, rtStacked);
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.WriteUTF8Text(4, 7, 'CCW-rotated text');
+ MyWorksheet.WriteText(4, 7, 'CCW-rotated text');
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.WriteVertAlignment(4, 8, vaTop);
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.WriteVertAlignment(4, 9, vaTop);
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.WriteVertAlignment(4, 10, vaCenter);
- MyWorksheet.WriteUTF8Text(4, 11, 'CCW-rotated text');
+ MyWorksheet.WriteText(4, 11, 'CCW-rotated text');
MyWorksheet.WriteTextRotation(4, 11, rt90DegreeCounterClockwiseRotation);
MyWorksheet.WriteVertAlignment(4, 11, vaCenter);
@@ -170,133 +169,134 @@ begin
r := 10;
// Write current date/time to cells B11:B16
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDate');
+ MyWorksheet.WriteText(r, 0, 'nfShortDate');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDate);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongDate');
+ MyWorksheet.WriteText(r, 0, 'nfLongDate');
MyWorksheet.WriteDateTime(r, 1, now, nfLongDate);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTime');
+ MyWorksheet.WriteText(r, 0, 'nfLongTime');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortDateTime');
+ MyWorksheet.WriteText(r, 0, 'nfShortDateTime');
MyWorksheet.WriteDateTime(r, 1, now, nfShortDateTime);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, dd/mmm');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, dd/mmm');
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'dd/mmm');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, mmm/yy');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, mmm/yy');
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'mmm/yy');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfShortTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfShortTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfShortTimeAM);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfLongTimeAM');
+ MyWorksheet.WriteText(r, 0, 'nfLongTimeAM');
MyWorksheet.WriteDateTime(r, 1, now, nfLongTimeAM);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, nn:ss');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, nn:ss');
MyWorksheet.WriteDateTime(r, 1, now, nfCustom, 'nn:ss');
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');
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');
// Write formatted numbers
number := 12345.67890123456789;
inc(r, 2);
- MyWorksheet.WriteUTF8Text(r, 1, '12345.67890123456789');
- MyWorksheet.WriteUTF8Text(r, 2, '-12345.67890123456789');
+ MyWorksheet.WriteText(r, 1, '12345.67890123456789');
+ MyWorksheet.WriteText(r, 2, '-12345.67890123456789');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfGeneral');
+ MyWorksheet.WriteText(r, 0, 'nfGeneral');
MyWorksheet.WriteNumber(r, 1, number, nfGeneral);
MyWorksheet.WriteNumber(r, 2, -number, nfGeneral);
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, 2, -number, nfFixed, 0);
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, 2, -number, nfFixed, 1);
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, 2, -number, nfFixed, 2);
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, 2, -number, nfFixed, 3);
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, 2, -number, nfFixedTh, 0);
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, 2, -number, nfFixedTh, 1);
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, 2, -number, nfFixedTh, 2);
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, 2, -number, nfFixedTh, 3);
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, 2, -number, nfExp, 1);
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 1);
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 1);
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, 2, -number, nfExp, 2);
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 2);
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 2);
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, 2, -number, nfExp, 3);
MyWorksheet.WriteNumber(r, 3, 1.0/number, nfExp, 3);
MyWorksheet.WriteNumber(r, 4, -1.0/number, nfExp, 3);
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, 2, -number, nfCurrency, 0, 'USD');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrency, 0, 'USD');
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, 2, -number, nfCurrencyRed, 0, 'USD');
MyWorksheet.WriteCurrency(r, 3, 0.0, nfCurrencyRed, 0, 'USD');
inc(r, 2);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, "$"#,##0_);("$"#,##0)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0_);("$"#,##0)');
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0_);("$"#,##0)');
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.WriteNumberFormat(r, 1, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '"$"#,##0.0_);[Red]("$"#,##0.0)');
inc(r);
fmt := '"€"#,##0.0_);[Red]("€"#,##0.0)';
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
+ MyWorksheet.WriteText(r, 0, 'nfCustom, '+fmt);
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, UTF8ToAnsi(fmt));
MyWorksheet.WriteNumber(r, 2, -number);
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';
MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, '+fmt);
MyWorksheet.WriteNumber(r, 1, number);
@@ -304,46 +304,46 @@ begin
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, UTF8ToAnsi(fmt));
inc(r); }
- MyWorksheet.WriteUTF8Text(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
+ MyWorksheet.WriteText(r, 0, 'nfCustom, _("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteNumberFormat(r, 1, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
MyWorksheet.WriteNumber(r, 2, -number);
MyWorksheet.WriteNumberFormat(r, 2, nfCustom, '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)');
inc(r, 2);
number := 1.333333333;
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 0 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 0 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 0);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 1 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 1 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 1);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 2 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 2 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfPercentage, 3 decs');
+ MyWorksheet.WriteText(r, 0, 'nfPercentage, 3 decs');
MyWorksheet.WriteNumber(r, 1, number, nfPercentage, 3);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm:ss');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm:ss');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval);
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');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, hh:mm');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, hh:mm');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'hh:mm');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h:m');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h:m');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h:m');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfTimeInterval, h');
+ MyWorksheet.WriteText(r, 0, 'nfTimeInterval, h');
MyWorksheet.WriteDateTime(r, 1, number, nfTimeInterval, 'h');
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFraction, ??/??');
+ MyWorksheet.WriteText(r, 0, 'nfFraction, ??/??');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteFractionFormat(r, 1, false, 2, 2);
inc(r);
- MyWorksheet.WriteUTF8Text(r, 0, 'nfFraction, # ??/??');
+ MyWorksheet.WriteText(r, 0, 'nfFraction, # ??/??');
MyWorksheet.WriteNumber(r, 1, number);
MyWorksheet.WriteFractionFormat(r, 1, true, 2, 2);
@@ -353,10 +353,10 @@ begin
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
// Write some string cells
- MyWorksheet.WriteUTF8Text(0, 0, Str_First);
- MyWorksheet.WriteUTF8Text(0, 1, Str_Second);
- MyWorksheet.WriteUTF8Text(0, 2, Str_Third);
- MyWorksheet.WriteUTF8Text(0, 3, Str_Fourth);
+ MyWorksheet.WriteText(0, 0, Str_First);
+ MyWorksheet.WriteText(0, 1, Str_Second);
+ MyWorksheet.WriteText(0, 2, Str_Third);
+ MyWorksheet.WriteText(0, 3, Str_Fourth);
// Creates a new worksheet
MyWorksheet := MyWorkbook.AddWorksheet('Colors');
@@ -366,7 +366,7 @@ begin
for i:=0 to palette.Count-1 do begin
MyWorksheet.WriteBlank(i, 0);
Myworksheet.WriteBackgroundColor(i, 0, palette[i]);
- MyWorksheet.WriteUTF8Text(i, 1, GetColorName(palette[i]));
+ MyWorksheet.WriteText(i, 1, GetColorName(palette[i]));
end;
finally
palette.Free;
diff --git a/components/fpspreadsheet/examples/read_write/excel8demo/excel8read.lpr b/components/fpspreadsheet/examples/read_write/excel8demo/excel8read.lpr
index 66df1d5df..afc537f31 100644
--- a/components/fpspreadsheet/examples/read_write/excel8demo/excel8read.lpr
+++ b/components/fpspreadsheet/examples/read_write/excel8demo/excel8read.lpr
@@ -63,5 +63,11 @@ begin
// Finalization
MyWorkbook.Free;
end;
+
+ {$IFDEF WINDOWS}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ ReadLn;
+ {$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/excelxmldemo/excelxmlwrite.lpr b/components/fpspreadsheet/examples/read_write/excelxmldemo/excelxmlwrite.lpr
index 651c68b41..94b39ac58 100644
--- a/components/fpspreadsheet/examples/read_write/excelxmldemo/excelxmlwrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/excelxmldemo/excelxmlwrite.lpr
@@ -365,17 +365,17 @@ begin
Myworksheet.WriteNumber(r, 1, number, nfFraction, '# ??/??');
// Set width of columns 0, 1 and 5
- MyWorksheet.WriteColWidth(0, 30);
- lCol.Width := 25;
- MyWorksheet.WriteColInfo(1, lCol);
- MyWorksheet.WriteColWidth(2, 15);
- MyWorksheet.WriteColWidth(3, 15);
- MyWorksheet.WriteColWidth(4, 15);
- lCol.Width := 5;
+ MyWorksheet.WriteColWidth(0, 30, suChars);
+ lCol.Width := 60;
+ MyWorksheet.WriteColInfo(1, lCol); // ColInfo uses by default workbook units --> mm
+ MyWorksheet.WriteColWidth(2, 15, suChars);
+ MyWorksheet.WriteColWidth(3, 15, suChars);
+ MyWorksheet.WriteColWidth(4, 15, suChars);
+ lCol.Width := 12; // mm
MyWorksheet.WriteColInfo(5, lCol);
// Set height of rows 0
- MyWorksheet.WriteRowHeight(0, 5); // 5 lines
+ MyWorksheet.WriteRowHeight(0, 5, suLines); // 5 lines
// Creates a new worksheet
MyWorksheet := MyWorkbook.AddWorksheet(Str_Worksheet2);
diff --git a/components/fpspreadsheet/examples/read_write/htmldemo/htmlread.lpr b/components/fpspreadsheet/examples/read_write/htmldemo/htmlread.lpr
index 4387d8e3e..cf5584808 100644
--- a/components/fpspreadsheet/examples/read_write/htmldemo/htmlread.lpr
+++ b/components/fpspreadsheet/examples/read_write/htmldemo/htmlread.lpr
@@ -61,9 +61,9 @@ begin
MyWorkbook.Free;
end;
- {$IFDEF MSWINDOWS}
+ {$IFDEF WINDOWS}
WriteLn;
- WriteLn('Press ENTER to exit.');
+ WriteLn('Press ENTER to quit...');
ReadLn;
{$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/htmldemo/htmlread_http.lpr b/components/fpspreadsheet/examples/read_write/htmldemo/htmlread_http.lpr
index 6406d943b..bc9bfa82d 100644
--- a/components/fpspreadsheet/examples/read_write/htmldemo/htmlread_http.lpr
+++ b/components/fpspreadsheet/examples/read_write/htmldemo/htmlread_http.lpr
@@ -54,7 +54,7 @@ begin
Write(
'Row: ', CurCell^.Row,
' Col: ', CurCell^.Col,
- ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(CurCell^.Row, CurCell^.Col))
+ ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(CurCell^.Row, CurCell^.Col))
);
if MyWorksheet.HasHyperlink(CurCell) then
Write(' Hyperlink: ', MyWorksheet.ReadHyperlink(CurCell).Target);
@@ -69,9 +69,9 @@ begin
stream.Free;
end;
- {$IFDEF MSWINDOWS}
+ {$IFDEF WINDOWS}
WriteLn;
- WriteLn('Press ENTER to exit.');
+ WriteLn('Press ENTER to quit...');
ReadLn;
{$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/htmldemo/htmlwrite.lpr b/components/fpspreadsheet/examples/read_write/htmldemo/htmlwrite.lpr
index 0dbddc4f0..e15c05747 100644
--- a/components/fpspreadsheet/examples/read_write/htmldemo/htmlwrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/htmldemo/htmlwrite.lpr
@@ -31,136 +31,136 @@ begin
Myworksheet.LeftPaneWidth := 1;
// Write colwidth
- Myworksheet.WriteColWidth(1, 25); // 25 characters
+ Myworksheet.WriteColWidth(1, 25, suChars); // approx 25 characters
// Write some cells
row := 0;
MyWorksheet.WriteBlank(row, 0);
- MyWorksheet.WriteUTF8Text(row, 1, 'Description');
- MyWorksheet.WriteUTF8Text(row, 2, 'Example');
+ MyWorksheet.WriteText(row, 1, 'Description');
+ MyWorksheet.WriteText(row, 2, 'Example');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is a text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Hello world!');
+ MyWorksheet.WriteText(row, 1, 'This is a text:');
+ MyWorksheet.WriteText(row, 2, 'Hello world!');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is bold text:');
- Myworksheet.WriteUTF8Text(row, 2, 'Hello world!');
+ MyWorksheet.WriteText(row, 1, 'This is bold text:');
+ Myworksheet.WriteText(row, 2, 'Hello world!');
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
inc(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.WriteHorAlignment(row, 2, haRight);
inc(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());
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text, indeed');
+ MyWorksheet.WriteText(row, 1, 'This is a long text:');
+ MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text, indeed');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Centered text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'I am in the center.');
+ MyWorksheet.WriteText(row, 1, 'Centered text:');
+ MyWorksheet.WriteText(row, 2, 'I am in the center.');
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
inc(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.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);
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.WriteUTF8Text(row, 2, 'A');
+ MyWorksheet.WriteText(row, 2, 'A');
inc(row);
- MyWorksheet.WriteUTF8Text(row, 2, 'B');
+ MyWorksheet.WriteText(row, 2, 'B');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Merged columns');
+ MyWorksheet.WriteText(row, 1, 'Merged columns');
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
MyWorksheet.MergeCells(row, 1, row, 2);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Right border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'medium / red');
+ MyWorksheet.WriteText(row, 1, 'Right border:');
+ MyWorksheet.WriteText(row, 2, 'medium / red');
MyWorksheet.WriteBorders(row, 2, [cbEast]);
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Top border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'top / dashed');
+ MyWorksheet.WriteText(row, 1, 'Top border:');
+ MyWorksheet.WriteText(row, 2, 'top / dashed');
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Left border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'left / dotted');
+ MyWorksheet.WriteText(row, 1, 'Left border:');
+ MyWorksheet.WriteText(row, 2, 'left / dotted');
MyWorksheet.WriteBorders(row, 2, [cbWest]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Bottom border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'bottom / double');
+ MyWorksheet.WriteText(row, 1, 'Bottom border:');
+ MyWorksheet.WriteText(row, 2, 'bottom / double');
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
inc(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);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Colors:');
- MyWorksheet.WriteUTF8Text(row, 2, 'yellow on blue');
+ MyWorksheet.WriteText(row, 1, 'Colors:');
+ MyWorksheet.WriteText(row, 2, 'yellow on blue');
MyWorksheet.WriteFontColor(row, 2, scYellow);
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'RGB background color:');
- MyWorksheet.WriteUTF8Text(row, 2, 'color #FF77C3'); // HTML colors are big-endian
+ MyWorksheet.WriteText(row, 1, 'RGB background color:');
+ MyWorksheet.WriteText(row, 2, 'color #FF77C3'); // HTML colors are big-endian
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Bold text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Bold text');
+ MyWorksheet.WriteText(row, 1, 'Bold text:');
+ MyWorksheet.WriteText(row, 2, 'Bold text');
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Italic text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Italic text');
+ MyWorksheet.WriteText(row, 1, 'Italic text:');
+ MyWorksheet.WriteText(row, 2, 'Italic text');
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Underlined text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Underlined text');
+ MyWorksheet.WriteText(row, 1, 'Underlined text:');
+ MyWorksheet.WriteText(row, 2, 'Underlined text');
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Strike-through text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Strike-through text');
+ MyWorksheet.WriteText(row, 1, 'Strike-through text:');
+ MyWorksheet.WriteText(row, 2, 'Strike-through text');
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
inc(row);
diff --git a/components/fpspreadsheet/examples/read_write/hyperlinkdemo/collectlinks.lpr b/components/fpspreadsheet/examples/read_write/hyperlinkdemo/collectlinks.lpr
index 7902b1cf1..c67ee50dd 100644
--- a/components/fpspreadsheet/examples/read_write/hyperlinkdemo/collectlinks.lpr
+++ b/components/fpspreadsheet/examples/read_write/hyperlinkdemo/collectlinks.lpr
@@ -37,28 +37,28 @@ begin
try
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#''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.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.WriteUTF8Text(3, 0, 'Web-Hyperlink');
+ sheet.WriteText(3, 0, 'Web-Hyperlink');
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'));
// 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.
- sheet.WriteUTF8Text(5, 0, 'Jump to A10');
+ sheet.WriteText(5, 0, 'Jump to A10');
sheet.WriteHyperlink(5, 0, '#A10');
- sheet.WriteColWidth(0, 40);
+ sheet.WriteColWidth(0, 40, suChars);
srcWorkbook.WriteToFile(srcFile, true);
finally
@@ -124,7 +124,6 @@ begin
WriteLn('Failure finding linked worksheet.');
continue;
end;
-// linkedSheet := linkedWorkbook.GetWorksheetByName(bookmark);
// Copy linked worksheet to new sheet in destination workbook
destSheet := destWorkbook.CopyWorksheetFrom(linkedSheet);
// Create sheet name
@@ -152,8 +151,11 @@ begin
end else
WriteLn('No hyperlinks found.');
+ {$IFDEF Windows}
+ WriteLn;
WriteLn('Press ENTER to close...');
ReadLn;
+ {$ENDIF}
finally
// Clean up
diff --git a/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlread.lpr b/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlread.lpr
index 4865fe2d2..50d0beb62 100644
--- a/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlread.lpr
+++ b/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlread.lpr
@@ -25,7 +25,7 @@ begin
// Open the input file
MyDir := ExtractFilePath(ParamStr(0));
- InputFileName := MyDir + 'a.xlsx';
+ InputFileName := MyDir + 'test.xlsx';
if not FileExists(InputFileName) then begin
WriteLn('Input file ', InputFileName, ' does not exist. Please run opendocwrite first.');
Halt;
@@ -49,10 +49,16 @@ begin
WriteLn(
'Row: ', cell^.Row,
' Col: ', cell^.Col,
- ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(cell^.Row, cell^.Col))
+ ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(cell^.Row, cell^.Col))
);
// Finalization
MyWorkbook.Free;
+
+ {$ifdef WINDOWS}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ ReadLn;
+ {$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlwrite.lpr b/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlwrite.lpr
index ee2914c39..ddf872f2f 100644
--- a/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlwrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/ooxmldemo/ooxmlwrite.lpr
@@ -34,10 +34,10 @@ begin
MyWorksheet.WriteNumber(0, 3, 4.0);
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.WriteRowHeight(0, 4);
+ MyWorksheet.WriteColWidth(0, 20, suChars);
+ MyWorksheet.WriteRowHeight(0, 4, suLines);
// Write some formulas
Myworksheet.WriteFormula(0, 5, '=A1-B1');
@@ -47,10 +47,10 @@ begin
// Uncomment this to test large XLS files
for i := 2 to 2{20} do
begin
- MyWorksheet.WriteUTF8Text(i, 0, ParamStr(0));
- MyWorksheet.WriteUTF8Text(i, 1, ParamStr(0));
- MyWorksheet.WriteUTF8Text(i, 2, ParamStr(0));
- MyWorksheet.WriteUTF8Text(i, 3, ParamStr(0));
+ MyWorksheet.WriteText(i, 0, ParamStr(0));
+ MyWorksheet.WriteText(i, 1, ParamStr(0));
+ MyWorksheet.WriteText(i, 2, ParamStr(0));
+ MyWorksheet.WriteText(i, 3, ParamStr(0));
end;
// Test for Bold
@@ -64,32 +64,32 @@ begin
MyCell^.FontIndex := BOLD_FONTINDEX;
// Background and text color
- MyWorksheet.WriteUTF8Text(4, 0, 'white on red');
+ MyWorksheet.WriteText(4, 0, 'white on red');
Myworksheet.WriteBackgroundColor(4, 0, scRed);
MyWorksheet.WriteFontColor(4, 0, scWhite);
// Border
- MyWorksheet.WriteUTF8Text(4, 2, 'left/right');
+ MyWorksheet.WriteText(4, 2, 'left/right');
Myworksheet.WriteBorders(4, 2, [cbWest, cbEast]);
MyWorksheet.WriteHorAlignment(4, 2, haCenter);
- Myworksheet.WriteUTF8Text(4, 4, 'top/bottom');
+ Myworksheet.WriteText(4, 4, 'top/bottom');
Myworksheet.WriteBorders(4, 4, [cbNorth, cbSouth]);
MyWorksheet.WriteBorderStyle(4, 4, cbSouth, lsThick, scBlue);
Myworksheet.WriteHorAlignment(4, 4, haRight);
// 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);
// Creates a new worksheet
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
// Write some string cells
- MyWorksheet.WriteUTF8Text(0, 0, 'First');
- MyWorksheet.WriteUTF8Text(0, 1, 'Second');
- MyWorksheet.WriteUTF8Text(0, 2, 'Third');
- MyWorksheet.WriteUTF8Text(0, 3, 'Fourth');
+ MyWorksheet.WriteText(0, 0, 'First');
+ MyWorksheet.WriteText(0, 1, 'Second');
+ MyWorksheet.WriteText(0, 2, 'Third');
+ MyWorksheet.WriteText(0, 3, 'Fourth');
// Write current date/time
MyWorksheet.WriteDateTime(0, 5, now, nfShortDate);
diff --git a/components/fpspreadsheet/examples/read_write/opendocdemo/opendocread.lpr b/components/fpspreadsheet/examples/read_write/opendocdemo/opendocread.lpr
index 2f6badcb9..5e5f4dda1 100644
--- a/components/fpspreadsheet/examples/read_write/opendocdemo/opendocread.lpr
+++ b/components/fpspreadsheet/examples/read_write/opendocdemo/opendocread.lpr
@@ -49,10 +49,16 @@ begin
WriteLn(
'Row: ', cell^.Row,
' Col: ', cell^.Col,
- ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsUTF8Text(cell^.Row, cell^.Col))
+ ' Value: ', UTF8ToConsole(MyWorkSheet.ReadAsText(cell^.Row, cell^.Col))
);
// Finalization
MyWorkbook.Free;
+
+ {$IFDEF WINDOWS}
+ WriteLn;
+ Writeln('Press ENTER to quit...');
+ ReadLn;
+ {$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/opendocdemo/opendocwrite.lpr b/components/fpspreadsheet/examples/read_write/opendocdemo/opendocwrite.lpr
index 9102c082f..da1e9da80 100644
--- a/components/fpspreadsheet/examples/read_write/opendocdemo/opendocwrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/opendocdemo/opendocwrite.lpr
@@ -43,7 +43,7 @@ begin
MyWorksheet.WriteNumber(0, 1, 2.0); // B1
MyWorksheet.WriteNumber(0, 2, 3.0); // C1
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.WriteDateTime(5, 0, now);
@@ -52,9 +52,9 @@ begin
MyWorksheet.WriteFont(0, 1, 'Times New Roman', 16, [], scRed);
// Show number formats
- MyWorksheet.WriteUTF8Text(row, 0, 'Number formats:');
+ MyWorksheet.WriteText(row, 0, 'Number formats:');
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfGeneral');
+ MyWorksheet.WriteText(row, 0, 'nfGeneral');
MyWorksheet.WriteNumber(row, 1, number1, nfGeneral);
MyWorksheet.WriteNumber(row, 2, number2, nfGeneral);
MyWorksheet.WriteNumber(row, 3, number3, nfGeneral);
@@ -64,7 +64,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfGeneral);
MyWorksheet.WriteNumber(row, 8, number8, nfGeneral);
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, 2, number2, nfFixed, 0);
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 0);
@@ -74,7 +74,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 0);
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 0);
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, 2, number2, nfFixed, 2);
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 2);
@@ -84,7 +84,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 2);
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 2);
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, 2, number2, nfFixed, 3);
MyWorksheet.WriteNumber(row, 3, number3, nfFixed, 3);
@@ -94,7 +94,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixed, 3);
MyWorksheet.WriteNumber(row, 8, number8, nfFixed, 3);
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, 2, number2, nfFixedTh, 0);
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 0);
@@ -104,7 +104,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 0);
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 0);
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, 2, number2, nfFixedTh, 2);
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 2);
@@ -114,7 +114,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 2);
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 2);
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, 2, number2, nfFixedTh, 3);
MyWorksheet.WriteNumber(row, 3, number3, nfFixedTh, 3);
@@ -124,7 +124,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfFixedTh, 3);
MyWorksheet.WriteNumber(row, 8, number8, nfFixedTh, 3);
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, 2, number2, nfPercentage, 0);
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 0);
@@ -134,7 +134,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 0);
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 0);
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, 2, number2, nfPercentage, 2);
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 2);
@@ -144,7 +144,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 2);
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 2);
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, 2, number2, nfPercentage, 3);
MyWorksheet.WriteNumber(row, 3, number3, nfPercentage, 3);
@@ -154,7 +154,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfPercentage, 3);
MyWorksheet.WriteNumber(row, 8, number8, nfPercentage, 3);
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, 2, number2, nfExp, 0);
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 0);
@@ -164,7 +164,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 0);
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 0);
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, 2, number2, nfExp, 2);
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 2);
@@ -174,7 +174,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 2);
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 2);
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, 2, number2, nfExp, 3);
MyWorksheet.WriteNumber(row, 3, number3, nfExp, 3);
@@ -184,7 +184,7 @@ begin
MyWorksheet.WriteNumber(row, 7, number7, nfExp, 3);
MyWorksheet.WriteNumber(row, 8, number8, nfExp, 3);
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, 2, number2, nfCurrency, 2, '$');
MyWorksheet.WriteCurrency(row, 3, number3, nfCurrency, 2, '$');
@@ -194,7 +194,7 @@ begin
MyWorksheet.WriteCurrency(row, 7, number7, nfCurrency, 2, '$');
MyWorksheet.WriteCurrency(row, 8, number8, nfCurrency, 2, '$');
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, 2, number2, 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, 8, number8, nfCurrencyRed, 2, '$', pcfCSV, ncfBCSVB);
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, 2, number2, nfFraction, '# ???/???');
MyWorksheet.WriteNumber(row, 3, number3, nfFraction, '# ???/???');
@@ -215,74 +215,73 @@ begin
MyWorksheet.WriteNumber(row, 8, number8, nfFraction, '# ???/???');
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);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfShortDateTime');
+ MyWorksheet.WriteText(row, 0, 'nfShortDateTime');
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDateTime);
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDateTime);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfShortDate');
+ MyWorksheet.WriteText(row, 0, 'nfShortDate');
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortDate);
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortDate);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfLongDate');
+ MyWorksheet.WriteText(row, 0, 'nfLongDate');
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongDate);
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongDate);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfShortTime');
+ MyWorksheet.WriteText(row, 0, 'nfShortTime');
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTime);
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTime);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfLongTime');
+ MyWorksheet.WriteText(row, 0, 'nfLongTime');
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTime);
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTime);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfShortTimeAM');
+ MyWorksheet.WriteText(row, 0, 'nfShortTimeAM');
MyWorksheet.WriteDateTime(row, 1, dt1, nfShortTimeAM);
MyWorksheet.WriteDateTime(row, 2, dt2, nfShortTimeAM);
inc(row);
- MyWorksheet.WriteUTF8Text(row, 0, 'nfLongTimeAM');
+ MyWorksheet.WriteText(row, 0, 'nfLongTimeAM');
MyWorksheet.WriteDateTime(row, 1, dt1, nfLongTimeAM);
MyWorksheet.WriteDateTime(row, 2, dt2, nfLongTimeAM);
inc(row,2);
- MyWorksheet.WriteUTF8Text(row, 0, 'Some custom formats');
+ MyWorksheet.WriteText(row, 0, 'Some custom formats');
inc(row);
// 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)
- 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, 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.WriteUTF8Text(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
+ MyWorksheet.WriteText(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
+ MyWorksheet.WriteText(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
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, 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.WriteUTF8Text(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
+ MyWorksheet.WriteText(row, 3, 'The semicolon must be escaped otherwise it would be misunderstood as a section separator.');
+ MyWorksheet.WriteText(row, 4, 'This format is not displayed correctly by Open/LibreOffice.');
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, 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);
- 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, 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);
- 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, 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
MyWorksheet := MyWorkbook.AddWorksheet('My Worksheet 2');
// Save the spreadsheet to a file
- MyWorkbook.WriteToFile(MyDir + 'test.ods',
- sfOpenDocument);
+ MyWorkbook.WriteToFile(MyDir + 'test.ods', sfOpenDocument);
MyWorkbook.Free;
end.
diff --git a/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitableread.lpr b/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitableread.lpr
index 525a24b22..4b15b1264 100644
--- a/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitableread.lpr
+++ b/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitableread.lpr
@@ -50,7 +50,7 @@ begin
begin
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
WriteLn(' Formula: ', CurCell^.FormulaValue)
@@ -60,5 +60,11 @@ begin
// Finalization
MyWorkbook.Free;
+
+ {$IFDEF WINDOWS}
+ WriteLn;
+ WriteLn('Press ENTER to quit...');
+ ReadLn;
+ {$ENDIF}
end.
diff --git a/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitablewrite.lpr b/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitablewrite.lpr
index ce3940f06..face5acc1 100644
--- a/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitablewrite.lpr
+++ b/components/fpspreadsheet/examples/read_write/wikitabledemo/wikitablewrite.lpr
@@ -30,136 +30,136 @@ begin
Myworksheet.LeftPaneWidth := 1;
// Write colwidth
- Myworksheet.WriteColWidth(1, 25); // 25 characters
+ Myworksheet.WriteColWidth(1, 25, suChars); // 25 characters
// Write some cells
row := 0;
MyWorksheet.WriteBlank(row, 0);
- MyWorksheet.WriteUTF8Text(row, 1, 'Description');
- MyWorksheet.WriteUTF8Text(row, 2, 'Example');
+ MyWorksheet.WriteText(row, 1, 'Description');
+ MyWorksheet.WriteText(row, 2, 'Example');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is a text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Hello world!');
+ MyWorksheet.WriteText(row, 1, 'This is a text:');
+ MyWorksheet.WriteText(row, 2, 'Hello world!');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is bold text:');
- Myworksheet.WriteUTF8Text(row, 2, 'Hello world!');
+ MyWorksheet.WriteText(row, 1, 'This is bold text:');
+ Myworksheet.WriteText(row, 2, 'Hello world!');
Myworksheet.WriteFontStyle(row, 2, [fssBold]);
inc(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.WriteHorAlignment(row, 2, haRight);
inc(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());
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'This is a long text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'A very, very, very, very long text, indeed');
+ MyWorksheet.WriteText(row, 1, 'This is a long text:');
+ MyWorksheet.WriteText(row, 2, 'A very, very, very, very long text, indeed');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Centered text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'I am in the center.');
+ MyWorksheet.WriteText(row, 1, 'Centered text:');
+ MyWorksheet.WriteText(row, 2, 'I am in the center.');
MyWorksheet.WriteHorAlignment(row, 2, haCenter);
inc(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.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);
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.WriteUTF8Text(row, 2, 'A');
+ MyWorksheet.WriteText(row, 2, 'A');
inc(row);
- MyWorksheet.WriteUTF8Text(row, 2, 'B');
+ MyWorksheet.WriteText(row, 2, 'B');
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Merged columns');
+ MyWorksheet.WriteText(row, 1, 'Merged columns');
MyWorksheet.WriteHorAlignment(row, 1, haCenter);
MyWorksheet.MergeCells(row, 1, row, 2);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Right border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'medium / red');
+ MyWorksheet.WriteText(row, 1, 'Right border:');
+ MyWorksheet.WriteText(row, 2, 'medium / red');
MyWorksheet.WriteBorders(row, 2, [cbEast]);
MyWorksheet.WriteBorderStyle(row, 2, cbEast, lsMedium, scRed);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Top border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'top / dashed');
+ MyWorksheet.WriteText(row, 1, 'Top border:');
+ MyWorksheet.WriteText(row, 2, 'top / dashed');
MyWorksheet.WriteBorders(row, 2, [cbNorth]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbNorth, lsDashed);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Left border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'left / dotted');
+ MyWorksheet.WriteText(row, 1, 'Left border:');
+ MyWorksheet.WriteText(row, 2, 'left / dotted');
MyWorksheet.WriteBorders(row, 2, [cbWest]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbWest, lsDotted);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Bottom border:');
- MyWorksheet.WriteUTF8Text(row, 2, 'bottom / double');
+ MyWorksheet.WriteText(row, 1, 'Bottom border:');
+ MyWorksheet.WriteText(row, 2, 'bottom / double');
MyWorksheet.WriteBorders(row, 2, [cbSouth]);
MyWorksheet.WriteBorderLineStyle(row, 2, cbSouth, lsDouble);
inc(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);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Colors:');
- MyWorksheet.WriteUTF8Text(row, 2, 'yellow on blue');
+ MyWorksheet.WriteText(row, 1, 'Colors:');
+ MyWorksheet.WriteText(row, 2, 'yellow on blue');
MyWorksheet.WriteFontColor(row, 2, scYellow);
MyWorksheet.WriteBackgroundColor(row, 2, scBlue);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'RGB background color:');
- MyWorksheet.WriteUTF8Text(row, 2, 'color #FF77C3'); // HTML colors are big-endian
+ MyWorksheet.WriteText(row, 1, 'RGB background color:');
+ MyWorksheet.WriteText(row, 2, 'color #FF77C3'); // HTML colors are big-endian
MyWorksheet.WriteBackgroundColor(row, 2, $C377FF); // fps colors are little-endian
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Bold text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Bold text');
+ MyWorksheet.WriteText(row, 1, 'Bold text:');
+ MyWorksheet.WriteText(row, 2, 'Bold text');
MyWorksheet.WriteFontStyle(row, 2, [fssBold]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Italic text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Italic text');
+ MyWorksheet.WriteText(row, 1, 'Italic text:');
+ MyWorksheet.WriteText(row, 2, 'Italic text');
MyWorksheet.WriteFontStyle(row, 2, [fssItalic]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Underlined text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Underlined text');
+ MyWorksheet.WriteText(row, 1, 'Underlined text:');
+ MyWorksheet.WriteText(row, 2, 'Underlined text');
MyWorksheet.WriteFontStyle(row, 2, [fssUnderline]);
inc(row);
MyWorksheet.WriteNumber(row, 0, row);
- MyWorksheet.WriteUTF8Text(row, 1, 'Strike-through text:');
- MyWorksheet.WriteUTF8Text(row, 2, 'Strike-through text');
+ MyWorksheet.WriteText(row, 1, 'Strike-through text:');
+ MyWorksheet.WriteText(row, 2, 'Strike-through text');
MyWorksheet.WriteFontStyle(row, 2, [fssStrikeout]);
inc(row);
diff --git a/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/fpschartsource.lpi b/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/fpschartsource.lpi
index 52a0a9779..8e5f3323b 100644
--- a/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/fpschartsource.lpi
+++ b/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/fpschartsource.lpi
@@ -73,7 +73,6 @@
-
diff --git a/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/mainform.lfm b/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/mainform.lfm
index 43faf2de5..01319f44a 100644
--- a/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/mainform.lfm
+++ b/components/fpspreadsheet/examples/visual/fpschart/workbookchartsource-deprecated/mainform.lfm
@@ -7,7 +7,7 @@ object Form1: TForm1
ClientHeight = 634
ClientWidth = 877
OnCreate = FormCreate
- LCLVersion = '1.5'
+ LCLVersion = '1.7'
object Panel1: TPanel
Left = 0
Height = 40
@@ -78,6 +78,8 @@ object Form1: TForm1
Align = alClient
AutoAdvance = aaDown
ColCount = 27
+ DefaultColWidth = 64
+ DefaultRowHeight = 22
Font.Color = clBlack
Font.Height = -15
Font.Name = 'Calibri'
@@ -125,7 +127,6 @@ object Form1: TForm1
)
Title.Visible = True
Align = alTop
- ParentColor = False
object Chart1AreaSeries1: TAreaSeries
AreaBrush.Color = clSkyBlue
AreaLinesPen.Style = psClear
@@ -158,7 +159,6 @@ object Form1: TForm1
)
Title.Visible = True
Align = alClient
- ParentColor = False
object Chart2BarSeries1: TBarSeries
Marks.Distance = 15
Marks.Format = '%0:.2f'
@@ -199,7 +199,6 @@ object Form1: TForm1
)
Title.Visible = True
Align = alBottom
- ParentColor = False
object Chart3PieSeries1: TPieSeries
Legend.Multiplicity = lmPoint
Marks.Distance = 8
diff --git a/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.lfm b/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.lfm
index f75c2e3ab..560f98636 100644
--- a/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.lfm
+++ b/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.lfm
@@ -7,12 +7,20 @@ object FPSChartForm: TFPSChartForm
ClientHeight = 382
ClientWidth = 697
OnCreate = FormCreate
- LCLVersion = '1.5'
+ LCLVersion = '1.7'
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
- Height = 264
- Top = 112
- Width = 336
+ Height = 263
+ Top = 111
+ Width = 337
AxisList = <
item
Minors = <>
@@ -34,23 +42,39 @@ object FPSChartForm: TFPSChartForm
Title.Text.Strings = (
'TAChart'
)
- ParentColor = False
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ BorderSpacing.Top = 8
+ BorderSpacing.Right = 8
+ BorderSpacing.Bottom = 8
object MyChartBarSeries1: TBarSeries
BarBrush.Color = clRed
Source = FPSChartSource
end
end
object WorksheetGrid: TsWorksheetGrid
+ AnchorSideLeft.Control = Owner
+ AnchorSideTop.Control = editXAxis
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Bevel1
+ AnchorSideBottom.Control = Owner
+ AnchorSideBottom.Side = asrBottom
Left = 8
- Height = 264
- Top = 112
+ Height = 263
+ Top = 111
Width = 336
FrozenCols = 0
FrozenRows = 0
ReadFormulas = False
TextOverflow = True
+ WorkbookSource = WorksheetGrid.internal
+ Anchors = [akTop, akLeft, akRight, akBottom]
AutoAdvance = aaDown
+ BorderSpacing.Left = 8
+ BorderSpacing.Top = 8
+ BorderSpacing.Bottom = 8
ColCount = 27
+ DefaultColWidth = 64
+ DefaultRowHeight = 22
ExtendedSelect = False
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goThumbTracking]
RowCount = 101
@@ -70,6 +94,7 @@ object FPSChartForm: TFPSChartForm
Height = 42
Top = 4
Width = 678
+ Anchors = [akTop, akLeft, akRight]
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.'
ParentColor = False
@@ -147,6 +172,15 @@ object FPSChartForm: TFPSChartForm
TabOrder = 6
Text = 'B3:B14'
end
+ object Bevel1: TBevel
+ AnchorSideLeft.Control = Owner
+ AnchorSideLeft.Side = asrCenter
+ Left = 344
+ Height = 50
+ Top = 83
+ Width = 8
+ Shape = bsSpacer
+ end
object FPSChartSource: TsWorksheetChartSource
PointsNumber = 5
YFirstCellCol = 1
diff --git a/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.pas b/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.pas
index 684d79c15..64882e44d 100644
--- a/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.pas
+++ b/components/fpspreadsheet/examples/visual/fpschart/worksheetchartsource/mainform.pas
@@ -15,6 +15,7 @@ type
{ TFPSChartForm }
TFPSChartForm = class(TForm)
+ Bevel1: TBevel;
btnCreateGraphic: TButton;
btnLoadSpreadsheet: TButton;
editSourceFile: TFileNameEdit;
diff --git a/components/fpspreadsheet/examples/visual/fpsgrid/mainform.lfm b/components/fpspreadsheet/examples/visual/fpsgrid/mainform.lfm
index 20f24c11a..017b087d6 100644
--- a/components/fpspreadsheet/examples/visual/fpsgrid/mainform.lfm
+++ b/components/fpspreadsheet/examples/visual/fpsgrid/mainform.lfm
@@ -120,8 +120,6 @@ object Form1: TForm1
FrozenCols = 0
FrozenRows = 0
ReadFormulas = True
- SelectionPen.JoinStyle = pjsMiter
- SelectionPen.Width = 3
WorkbookSource = WorksheetGrid.internal
Align = alClient
AutoAdvance = aaDown
diff --git a/components/fpspreadsheet/examples/visual/fpsgrid/mainform.pas b/components/fpspreadsheet/examples/visual/fpsgrid/mainform.pas
index e9e961da7..4cb44063c 100644
--- a/components/fpspreadsheet/examples/visual/fpsgrid/mainform.pas
+++ b/components/fpspreadsheet/examples/visual/fpsgrid/mainform.pas
@@ -5,7 +5,7 @@ unit mainform;
interface
uses
- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Menus, ExtCtrls, ActnList, Spin, Buttons, ButtonPanel,
fpspreadsheetgrid, fpsallformats;
@@ -47,7 +47,8 @@ var
implementation
uses
- fpcanvas, fpstypes, fpsutils, fpsRegFileFormats, fpspreadsheet;
+ fpcanvas, lazutf8,
+ fpstypes, fpsutils, fpsRegFileFormats, fpspreadsheet;
{ TForm1 }
diff --git a/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.lfm b/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.lfm
index fecd89c90..b85c963c8 100644
--- a/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.lfm
+++ b/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.lfm
@@ -11,7 +11,7 @@ object MainFrm: TMainFrm
OnCreate = FormCreate
OnDestroy = FormDestroy
ShowHint = True
- LCLVersion = '1.5'
+ LCLVersion = '1.7'
object MainToolBar: TToolBar
Left = 0
Height = 28
diff --git a/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.pas b/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.pas
index 0399d6d86..90ef9ad30 100644
--- a/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.pas
+++ b/components/fpspreadsheet/examples/visual/wikitablemaker/wtmain.pas
@@ -5,7 +5,7 @@ unit wtMain;
interface
uses
- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Grids, ColorBox, SynEdit,
SynEditHighlighter, SynHighlighterHTML, SynHighlighterMulti,
SynHighlighterCss, SynGutterCodeFolding, fpspreadsheetgrid,
@@ -216,9 +216,9 @@ var
implementation
uses
- TypInfo, LCLIntf, LCLType, LCLVersion, clipbrd, fpcanvas,
+ TypInfo, LazUtf8, LCLIntf, LCLType, LCLVersion, clipbrd, fpcanvas,
SynHighlighterWikiTable,
- fpsutils;
+ fpsutils, fpsRegFileFormats;
const
DROPDOWN_COUNT = 24;
@@ -264,7 +264,7 @@ begin
BeginUpdate;
try
if TAction(Sender).Tag = 0 then begin
- CellBorders[Selection] := [];
+ CellBorders[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := [];
exit;
end;
// Top and bottom edges
@@ -421,7 +421,7 @@ begin
if AcFontItalic.Checked then Include(style, fssItalic);
if AcFontStrikeout.Checked then Include(style, fssStrikeout);
if AcFontUnderline.Checked then Include(style, fssUnderline);
- CellFontStyles[Selection] := style;
+ CellFontStyles[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom] := style;
end;
end;
@@ -433,7 +433,8 @@ begin
hor_align := TsHorAlignment(TAction(Sender).Tag - HORALIGN_TAG)
else
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;
end;
@@ -521,13 +522,15 @@ begin
vert_align := TsVertAlignment(TAction(Sender).Tag - VERTALIGN_TAG)
else
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;
end;
procedure TMainFrm.AcWordwrapExecute(Sender: TObject);
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;
procedure TMainFrm.BeforeRun;
@@ -558,9 +561,13 @@ var
clr: TsColor;
begin
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
- 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;
procedure TMainFrm.FontComboBoxSelect(Sender: TObject);
@@ -569,7 +576,8 @@ var
begin
fname := FontCombobox.Items[FontCombobox.ItemIndex];
if fname <> '' then
- with WorksheetGrid do CellFontNames[Selection] := fName;
+ with WorksheetGrid do
+ CellFontNames[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] := fName;
end;
procedure TMainFrm.FontSizeComboBoxSelect(Sender: TObject);
@@ -578,7 +586,8 @@ var
begin
sz := StrToInt(FontSizeCombobox.Items[FontSizeCombobox.ItemIndex]);
if sz > 0 then
- with WorksheetGrid do CellFontSizes[Selection] := sz;
+ with WorksheetGrid do
+ CellFontSizes[Selection.Left, selection.Top, Selection.Right, Selection.Bottom] := sz;
end;
procedure TMainFrm.FormActivate(Sender: TObject);
@@ -698,8 +707,9 @@ begin
// Update user interface
Caption := Format('wikitable maker - %s (%s)', [
AFilename,
- GetFileFormatName(WorksheetGrid.Workbook.FileFormat)
+ GetSpreadTechnicalName(WorksheetGrid.Workbook.FileFormatID)
]);
+
AcShowGridLines.Checked := WorksheetGrid.ShowGridLines;
AcShowHeaders.Checked := WorksheetGrid.ShowHeaders;
AcRowTitles.Checked := WorksheetGrid.FrozenCols <> 0;
@@ -740,7 +750,8 @@ procedure TMainFrm.UpdateBackgroundColorIndex;
var
clr: TsColor;
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
CbBackgroundColor.ItemIndex := 0 // no fill
else
@@ -753,7 +764,8 @@ var
ac: TAction;
hor_align: TsHorAlignment;
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
ac := TAction(ActionList.Actions[i]);
if (ac.Tag >= HORALIGN_TAG) and (ac.Tag < HORALIGN_TAG+10) then
@@ -765,7 +777,8 @@ procedure TMainFrm.UpdateFontNameIndex;
var
fname: String;
begin
- with WorksheetGrid do fname := CellFontNames[Selection];
+ with WorksheetGrid do
+ fname := CellFontNames[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
if fname = '' then
FontCombobox.ItemIndex := -1
else
@@ -776,7 +789,8 @@ procedure TMainFrm.UpdateFontSizeIndex;
var
sz: Single;
begin
- with WorksheetGrid do sz := CellFontSizes[Selection];
+ with WorksheetGrid do
+ sz := CellFontSizes[Selection.Left, Selection.Top, Selection.Right, Selection.Bottom];
if sz < 0 then
FontSizeCombobox.ItemIndex := -1
else
@@ -787,7 +801,8 @@ procedure TMainFrm.UpdateFontStyleActions;
var
style: TsFontStyles;
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;
AcFontItalic.Checked := fssItalic in style;
AcFontUnderline.Checked := fssUnderline in style;
@@ -800,7 +815,8 @@ var
ac: TAction;
vert_align: TsVertAlignment;
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
ac := TAction(ActionList.Actions[i]);
if (ac.Tag >= VERTALIGN_TAG) and (ac.Tag < VERTALIGN_TAG+10) then
diff --git a/components/fpspreadsheet/fpsexport.pas b/components/fpspreadsheet/fpsexport.pas
index 64ccb3b79..bc16ff8e1 100644
--- a/components/fpspreadsheet/fpsexport.pas
+++ b/components/fpspreadsheet/fpsexport.pas
@@ -192,7 +192,7 @@ begin
begin
for i:=0 to ExportFields.Count-1 do
begin
- FSheet.WriteUTF8Text(FRow,i,ExportFields[i].ExportedName);
+ FSheet.WriteText(FRow,i,ExportFields[i].ExportedName);
end;
inc(FRow);
end;
@@ -304,13 +304,13 @@ begin
else if Field.Datatype in [ftBCD,ftCurrency,ftFloat,ftFMTBcd] then
FSheet.WriteCurrency(FRow, EF.Index, Field.AsFloat)
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
- 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
let ftWideMemo end up at the right place }
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
FSheet.WriteBoolValue(FRow, EF.Index, Field.AsBoolean)
else if Field.DataType in DateFieldTypes then
@@ -327,7 +327,7 @@ begin
FSheet.WriteDateTime(FRow, EF.Index, Field.AsDateTime, nfShortDateTime);
end
else //fallback to string
- FSheet.WriteUTF8Text(FRow, EF.Index, Field.AsString);
+ FSheet.WriteText(FRow, EF.Index, Field.AsString);
end;
end;
diff --git a/components/fpspreadsheet/fpshtml.pas b/components/fpspreadsheet/fpshtml.pas
index de9cf31a0..a386cc059 100644
--- a/components/fpspreadsheet/fpshtml.pas
+++ b/components/fpspreadsheet/fpshtml.pas
@@ -1321,7 +1321,7 @@ begin
if (col <> nil) and (col^.Width > 0) then
w := col^.Width;
end;
- w := w * FWorkbook.GetDefaultFont.Size;
+ w := FWorkbook.ConvertUnits(w, FWorkbook.Units, suPoints);
Result:= Format(' width="%.1fpt"', [w], FPointSeparatorSettings);
end;
@@ -1396,7 +1396,7 @@ begin
row := FWorksheet.FindRow(ARowIndex);
if row <> nil then
h := row^.Height;
- h := (h + ROW_HEIGHT_CORRECTION) * FWorkbook.GetDefaultFont.Size;
+ h := FWorkbook.ConvertUnits(h, FWorkbook.Units, suPoints);
Result := Format(' height="%.1fpt"', [h], FPointSeparatorSettings);
end;
diff --git a/components/fpspreadsheet/fpsimages.pas b/components/fpspreadsheet/fpsimages.pas
index db11db01f..99c5ecf47 100644
--- a/components/fpspreadsheet/fpsimages.pas
+++ b/components/fpspreadsheet/fpsimages.pas
@@ -54,8 +54,8 @@ type
function LoadFromStream(AStream: TStream; AName: String): Boolean;
property FileName: String read FFileName;
property ImageType: TsImagetype read FImageType;
- property ImageWidth: Double read FWidth;
- property ImageHeight: Double read FHeight;
+ property ImageWidth: Double read FWidth write FWidth;
+ property ImageHeight: Double read FHeight write FWidth;
property Stream: TMemoryStream read FStream;
end;
@@ -866,17 +866,10 @@ begin
end;
function TsEmbeddedObj.CheckStream(AImageType: TsImageType): Boolean;
-var
- w, h: Double;
begin
- FImageType := GetImageInfo(FStream, w, h, AImageType);
- if FImageType <> itUnknown then
- begin
- FWidth := inToMM(w);
- FHeight := inToMM(h);
- Result := true;
- end else
- Result := false;
+ FImageType := GetImageInfo(FStream, FWidth, FHeight, AImageType);
+ // FWidth and FHeight are in inches here.
+ Result := FImageType <> itUnknown;
end;
function TsEmbeddedObj.LoadFromFile(const AFileName: String): Boolean;
diff --git a/components/fpspreadsheet/fpsnumformat.pas b/components/fpspreadsheet/fpsnumformat.pas
index f2813612c..0d5892720 100644
--- a/components/fpspreadsheet/fpsnumformat.pas
+++ b/components/fpspreadsheet/fpsnumformat.pas
@@ -1436,7 +1436,7 @@ function ApplyTextFormat(AText: String; AParams: TsNumFormatParams): String;
var
sct: TsNumFormatSection;
element: TsNumFormatElement;
- i, n: Integer;
+ i: Integer;
begin
Result := '';
for sct in AParams.Sections do
diff --git a/components/fpspreadsheet/fpsopendocument.pas b/components/fpspreadsheet/fpsopendocument.pas
index 8dda6aede..4ff619fff 100755
--- a/components/fpspreadsheet/fpsopendocument.pas
+++ b/components/fpspreadsheet/fpsopendocument.pas
@@ -328,8 +328,8 @@ const
FALSE_TRUE: Array[boolean] of String = ('false', 'true');
- COLWIDTH_EPS = 1e-2; // for mm
- ROWHEIGHT_EPS = 1e-2; // for lines
+ COLWIDTH_EPS = 1e-3;
+ ROWHEIGHT_EPS = 1e-3;
type
@@ -344,22 +344,22 @@ type
TColumnStyleData = class
public
Name: String;
- ColWidth: Double; // in mm
+ ColWidth: Double; // in workbook units
end;
{ Column data items stored in the ColumnList }
TColumnData = class
public
Col: Integer;
- ColStyleIndex: integer; // index into FColumnStyleList of reader
- DefaultCellStyleIndex: Integer; // Index of default cell style in FCellStyleList of reader
+ ColStyleIndex: integer; // index into FColumnStyleList of reader
+ DefaultCellStyleIndex: Integer; // Index of default cell style in FCellStyleList of reader
end;
{ Row style items stored in RowStyleList of the reader }
TRowStyleData = class
public
Name: String;
- RowHeight: Double; // in mm
+ RowHeight: Double; // in workbook units
AutoRowHeight: Boolean;
end;
@@ -1030,31 +1030,20 @@ end;
procedure TsSpreadOpenDocReader.ApplyColWidths;
var
colIndex: Integer;
- colWidth: Single;
colStyleIndex: Integer;
colStyle: TColumnStyleData;
- factor: Double;
- col: PCol;
i: Integer;
begin
- factor := FWorkbook.GetDefaultFont.Size/2;
for i:=0 to FColumnList.Count-1 do
begin
colIndex := TColumnData(FColumnList[i]).Col;
colStyleIndex := TColumnData(FColumnList[i]).ColStyleIndex;
colStyle := TColumnStyleData(FColumnStyleList[colStyleIndex]);
- { The column width stored in colStyle is in mm (see ReadColumnStyles).
- We convert it to character count by converting it to points and then by
- dividing the points by the approximate width of the '0' character which
- is assumed to be 50% of the default font point size. }
- colWidth := mmToPts(colStyle.ColWidth)/factor;
- { 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;
+ // Add only column records to the worksheet if their width is different from
+ // the default column width. The column width stored in colStyle is already
+ // in workbook units (see ReadColumnStyles).
+ if not SameValue(colStyle.ColWidth, FWorksheet.DefaultColWidth, COLWIDTH_EPS) then
+ FWorksheet.WriteColWidth(colIndex, colStyle.ColWidth, FWorkbook.Units);
end;
end;
@@ -1828,7 +1817,8 @@ begin
s := GetAttrValue(styleChildNode, 'style:column-width');
if s <> '' then
begin
- colWidth := PtsToMM(HTMLLengthStrToPts(s)); // convert to mm
+ colWidth := FWorkbook.ConvertUnits(HTMLLengthStrToPts(s), suPoints, FWorkbook.Units);
+ // convert to workbook units
break;
end;
end;
@@ -3235,7 +3225,7 @@ var
rowStyleName: String;
rowStyleIndex: Integer;
rowStyle: TRowStyleData;
- rowHeight: Single;
+ rowHeight: Double;
autoRowHeight: Boolean;
col: Integer;
cellNode: TDOMNode;
@@ -3254,11 +3244,7 @@ var
if rowStyleIndex > -1 then // just for safety
begin
rowStyle := TRowStyleData(FRowStyleList[rowStyleIndex]);
- rowHeight := rowStyle.RowHeight; // in mm (see ReadRowStyles)
- rowHeight := mmToPts(rowHeight) / Workbook.GetDefaultFontSize;
- if rowHeight > ROW_HEIGHT_CORRECTION
- then rowHeight := rowHeight - ROW_HEIGHT_CORRECTION // in "lines"
- else rowHeight := 0;
+ rowHeight := rowStyle.RowHeight; // in Workbook units (see ReadRowStyles)
autoRowHeight := rowStyle.AutoRowHeight;
end else
autoRowHeight := true;
@@ -3356,7 +3342,7 @@ var
// Transfer non-default row heights to sheet's rows
if not autoRowHeight then
for i:=1 to rowsRepeated do
- FWorksheet.WriteRowHeight(row + i - 1, rowHeight);
+ FWorksheet.WriteRowHeight(row + i - 1, rowHeight, FWorkbook.Units);
row := row + rowsRepeated;
end;
@@ -3416,7 +3402,8 @@ begin
begin
s := GetAttrValue(styleChildNode, 'style:row-height');
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');
if s = 'true' then
auto := true;
@@ -4206,21 +4193,19 @@ var
found: Boolean;
colstyle: TColumnStyleData;
w: Double;
- multiplier: Double;
begin
{ At first, add the default column width }
colStyle := TColumnStyleData.Create;
colStyle.Name := 'co1';
- colStyle.ColWidth := 12; //Workbook.DefaultColWidth;
+ colStyle.ColWidth := FWorkbook.ConvertUnits(12, suChars, FWorkbook.Units);
FColumnStyleList.Add(colStyle);
for i:=0 to Workbook.GetWorksheetCount-1 do
begin
sheet := Workbook.GetWorksheetByIndex(i);
-// colStyle.ColWidth := sheet.DefaultColWidth;
for c:=0 to sheet.GetLastColIndex do
begin
- w := sheet.GetColWidth(c);
+ w := sheet.GetColWidth(c, FWorkbook.Units);
// Look for this width in the current ColumnStyleList
found := false;
for j := 0 to FColumnStyleList.Count-1 do
@@ -4239,7 +4224,7 @@ begin
end;
end;
end;
-
+ (*
{ 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
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;
TColumnStyleData(FColumnStyleList[i]).ColWidth := PtsToMM(w);
end;
+ *)
end;
{ Collects the fonts used by headers and footers in the FHeaderFooterFontList }
@@ -4308,13 +4294,13 @@ var
row: PRow;
found: Boolean;
rowstyle: TRowStyleData;
- h, multiplier: Double;
+ h: Double;
begin
{ 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.Name := 'ro1';
- rowStyle.RowHeight := 1; //Workbook.DefaultRowHeight;
+ rowStyle.RowHeight := FWorkbook.ConvertUnits(15, suPoints, FWorkbook.Units);
rowStyle.AutoRowHeight := true;
FRowStyleList.Add(rowStyle);
@@ -4326,7 +4312,7 @@ begin
row := sheet.FindRow(r);
if row <> nil then
begin
- h := sheet.GetRowHeight(r);
+ h := sheet.GetRowHeight(r, FWorkbook.Units);
// Look for this height in the current RowStyleList
found := false;
for j:=0 to FRowStyleList.Count-1 do
@@ -4348,7 +4334,7 @@ begin
end;
end;
end;
-
+ (*
{ 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
to points and then to millimeters as needed by ods. }
@@ -4357,7 +4343,7 @@ begin
begin
h := (TRowStyleData(FRowStyleList[i]).RowHeight + ROW_HEIGHT_CORRECTION) * multiplier;
TRowStyleData(FRowStyleList[i]).RowHeight := PtsToMM(h);
- end;
+ end; *)
end;
{ Is called before zipping the individual file parts. Rewinds the streams. }
@@ -4847,7 +4833,8 @@ begin
// Column width
AppendToStream(AStream, Format(
'',
- [colStyle.ColWidth], FPointSeparatorSettings));
+ [FWorkbook.ConvertUnits(colStyle.ColWidth, FWorkbook.Units, suMillimeters)],
+ FPointSeparatorSettings));
// End
AppendToStream(AStream,
@@ -4860,15 +4847,16 @@ procedure TsSpreadOpenDocWriter.WriteColumns(AStream: TStream;
var
lastCol: Integer;
c, k: Integer;
- w, w_mm: Double;
- widthMultiplier: Double;
+ w: Double;
+// w, w_mm: Double;
+// widthMultiplier: Double;
styleName: String;
colsRepeated: Integer;
colsRepeatedStr: String;
firstRepeatedPrintCol, lastRepeatedPrintCol: Longint;
headerCols: Boolean;
begin
- widthMultiplier := Workbook.GetFont(0).Size / 2;
+// widthMultiplier := Workbook.GetFont(0).Size / 2;
lastCol := ASheet.GetLastColIndex;
firstRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.FirstIndex;
lastRepeatedPrintCol := ASheet.PageLayout.RepeatedCols.LastIndex;
@@ -4881,9 +4869,7 @@ begin
c := 0;
while (c <= lastCol) do
begin
- w := ASheet.GetColWidth(c);
- // Convert to mm
- w_mm := PtsToMM(w * widthMultiplier);
+ w := ASheet.GetColWidth(c, FWorkbook.Units);
if (c = firstRepeatedPrintCol) then
begin
@@ -4894,7 +4880,7 @@ begin
// Find width in ColumnStyleList to retrieve corresponding style name
styleName := '';
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;
break;
end;
@@ -4907,7 +4893,7 @@ begin
if headerCols then
while (k <= lastCol) and (k <= lastRepeatedPrintCol) do
begin
- if ASheet.GetColWidth(k) = w then
+ if ASheet.GetColWidth(k, FWorkbook.Units) = w then
inc(colsRepeated)
else
break;
@@ -4916,7 +4902,7 @@ begin
else
while (k <= lastCol) and (k < firstRepeatedPrintCol) do
begin
- if ASheet.GetColWidth(k) = w then
+ if ASheet.GetColWidth(k, FWorkbook.Units) = w then
inc(colsRepeated)
else
break;
@@ -5231,8 +5217,7 @@ var
cell: PCell; // current cell
styleName: String;
k: Integer;
- h, h_mm: Single; // row height in "lines" and millimeters, respectively
- h1: Single;
+ h, h1: Double;
colsRepeated: Cardinal;
rowsRepeated: Cardinal;
colsRepeatedStr: String;
@@ -5240,12 +5225,10 @@ var
firstCol, firstRow, lastCol, lastRow: Cardinal;
firstRepeatedPrintRow, lastRepeatedPrintRow: Cardinal;
rowStyleData: TRowStyleData;
- defFontSize: Single;
emptyRowsAbove: Boolean;
headerRows: Boolean;
begin
// some abbreviations...
- defFontSize := Workbook.GetFont(0).Size;
GetSheetDimensions(ASheet, firstRow, lastRow, firstCol, lastCol);
emptyRowsAbove := firstRow > 0;
@@ -5278,12 +5261,11 @@ begin
begin
styleName := '';
- h := row^.Height; // row height in "lines"
- h_mm := PtsToMM((h + ROW_HEIGHT_CORRECTION) * defFontSize); // in mm
+ h := row^.Height; // row height in workbook units
for k := 0 to FRowStyleList.Count-1 do begin
rowStyleData := TRowStyleData(FRowStyleList[k]);
// 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
styleName := rowStyleData.Name;
break;
@@ -5318,7 +5300,7 @@ begin
begin
if ASheet.Cells.GetFirstCellOfRow(rr) <> nil then
break;
- h1 := ASheet.GetRowHeight(rr);
+ h1 := ASheet.GetRowHeight(rr, FWorkbook.Units);
if not SameValue(h, h1, ROWHEIGHT_EPS) then
break;
inc(rr);
@@ -5431,7 +5413,9 @@ begin
// Column width
AppendToStream(AStream, Format(
- '');
@@ -6041,25 +6025,20 @@ function TsSpreadOpenDocWriter.WritePageLayoutAsXMLString(AStyleName: String;
function CalcStyleStr(AName, AHeaderFooterImageStr: String;
APageMargin, AHeaderFooterMargin: Double): String;
var
- h: Double;
marginKind: String;
begin
- h := PtsToMM(FWorkbook.GetDefaultFontSize);
if AName = 'header' then marginKind := 'bottom' else marginKind := 'top';
Result := Format(
'' + // e.g.
'' +
'%s' +
'' +
'', [
AName,
- APageMargin - AHeaderFooterMargin, marginKind, 0.0, // - h, marginKind, h,
-// AHeaderFooterMargin, marginKind, APageMargin-AHeaderFooterMargin-h,
-// AHeaderFooterMargin-APageMargin-h, marginKind, AHeaderFooterMargin-APageMargin,
+ APageMargin - AHeaderFooterMargin, marginKind, 0.0,
AHeaderFooterImageStr,
AName
], FPointSeparatorSettings);
@@ -6387,19 +6366,17 @@ var
value: variant;
styleCell: PCell;
styleName: String;
- h, h_mm: Single; // row height in "lines" and millimeters, respectively
+ h: Single; // row height workbook units
k: Integer;
rowStyleData: TRowStyleData;
rowsRepeated: Cardinal;
colsRepeated: Cardinal;
colsRepeatedStr: String;
- defFontSize: Single;
lastCol, lastRow: Cardinal;
begin
// some abbreviations...
lastCol := Workbook.VirtualColCount - 1;
lastRow := Workbook.VirtualRowCount - 1;
- defFontSize := Workbook.GetFont(0).Size;
rowsRepeated := 1;
r := 0;
@@ -6413,13 +6390,12 @@ begin
begin
styleName := '';
- h := row^.Height; // row height in "lines"
- h_mm := PtsToMM((h + ROW_HEIGHT_CORRECTION) * defFontSize); // in mm
+ h := row^.Height; // row height in workbook units
for k := 0 to FRowStyleList.Count-1 do
begin
rowStyleData := TRowStyleData(FRowStyleList[k]);
// 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
styleName := rowStyleData.Name;
break;
@@ -6431,7 +6407,6 @@ begin
// No empty rows allowed here for the moment!
-
// Write the row XML
AppendToStream(AStream, Format(
'', [styleName]));
diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas
index 47d299c05..65ff85bb9 100755
--- a/components/fpspreadsheet/fpspreadsheet.pas
+++ b/components/fpspreadsheet/fpspreadsheet.pas
@@ -54,13 +54,13 @@ type
}
{@@ The record TRow contains information about a spreadsheet row:
- @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 Row The index of the row (beginning with 0)
+ @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
row record. }
TRow = record
Row: Cardinal;
- Height: Single; // in "lines"
+ Height: Single;
end;
{@@ Pointer to a TRow record }
@@ -68,11 +68,11 @@ type
{@@ The record TCol contains information about a spreadsheet column:
@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. }
TCol = record
Col: Cardinal;
- Width: Single; // in "characters". Excel uses the width of char "0" in 1st font
+ Width: Single;
end;
{@@ Pointer to a TCol record }
@@ -428,9 +428,11 @@ type
function GetCellCountInRow(ARow: Cardinal): Cardinal;
function GetCellCountInCol(ACol: Cardinal): Cardinal;
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 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 DeleteRow(ARow: Cardinal);
procedure InsertCol(ACol: Cardinal);
@@ -440,9 +442,11 @@ type
procedure RemoveCol(ACol: Cardinal);
procedure RemoveRow(ARow: Cardinal);
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 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
procedure Sort(const ASortParams: TsSortParams;
@@ -491,12 +495,12 @@ type
procedure UnmergeCells(ARange: String); overload;
{ 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;
out ARow1, ACol1, ARow2, ACol2: Cardinal;
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: 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 GetImageCount: Integer;
procedure RemoveAllImages;
@@ -650,6 +654,7 @@ type
FLockCount: Integer;
FLog: TStringList;
FSearchEngine: TObject;
+ FUnits: TsSizeUnits;
{ Setter/Getter }
function GetErrorMsg: String;
@@ -784,6 +789,7 @@ type
procedure RemoveAllEmbeddedObj;
{ Utilities }
+ function ConvertUnits(AValue: Double; AFromUnits, AToUnits: TsSizeUnits): Double;
procedure DisableNotifications;
procedure EnableNotifications;
function NotificationsEnabled: Boolean;
@@ -806,6 +812,7 @@ type
property VirtualColCount: cardinal read FVirtualColCount write SetVirtualColCount;
property VirtualRowCount: cardinal read FVirtualRowCount write SetVirtualRowCount;
property Options: TsWorkbookOptions read FOptions write FOptions;
+ property Units: TsSizeUnits read FUnits;
{@@ This event fires whenever a new worksheet is added }
property OnAddWorksheet: TsWorksheetEvent read FOnAddWorksheet write FOnAddWorksheet;
@@ -1029,8 +1036,8 @@ begin
FPageLayout := TsPageLayout.Create(self);
- FDefaultColWidth := 12;
- FDefaultRowHeight := 1;
+ FDefaultColWidth := ptsToMM(72); // Excel: about 72 pts
+ FDefaultRowHeight := ptsToMM(15); // Excel: 15pts
FFirstRowIndex := UNASSIGNED_ROW_COL_INDEX;
FFirstColIndex := UNASSIGNED_ROW_COL_INDEX;
@@ -3336,16 +3343,15 @@ end;
procedure TsWorksheet.CalcImageCell(AIndex: Integer; x, y, AWidth, AHeight: Double;
out ARow, ACol: Cardinal; out ARowOffs, AColOffs, AScaleX, AScaleY: Double);
+// All lengths are in workbook units!
var
colW, rowH, sum: Double;
- factor: Double;
embobj: TsEmbeddedObj;
begin
- factor := FWorkbook.GetDefaultFont.Size/2; // Width of "0" character in pts
ACol := 0;
sum := 0;
repeat
- colW := ptsToMM(GetColWidth(ACol) * factor);
+ colW := GetColWidth(ACol, FWorkbook.Units);;
sum := sum + colW;
inc(ACol);
until sum > x;
@@ -3353,11 +3359,10 @@ begin
AColOffs := x - sum;
dec(ACol);
- factor := FWorkbook.GetDefaultFont.Size; // Height of line in pts
ARow := 0;
sum := 0;
repeat
- rowH := ptsToMM(CalcRowHeight(ARow) * factor); // row height in mm
+ rowH := CalcRowHeight(ARow);
sum := sum + rowH;
inc(ARow);
until sum > y;
@@ -3377,32 +3382,33 @@ end;
@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 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 AColOffs1 Distance between the left edge of image and column 1, in mm
- @param ARowOffs2 Distance between the bottom edge of image and top of row 2, in mm
- @param AColOffs2 Distance between the right edge of image and left of col 2, in mm
- @param x Absolute coordinate of left edge of image, in mm
- @param y Absolute coordinate of top edge of image, in mm
- @param AWidth Width of the image, in mm
- @param AHeight Height of the image, 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
+ @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
+ @param x Absolute coordinate of left edge of image
+ @param y Absolute coordinate of top edge of image
+ @param AWidth Width of the image
+ @param AHeight Height of the image
+
+ All dimensions are in workbook units
-------------------------------------------------------------------------------}
procedure TsWorksheet.CalcImageExtent(AIndex: Integer;
out ARow1, ACol1, ARow2, ACol2: Cardinal;
out ARowOffs1, AColOffs1, ARowOffs2, AColOffs2: Double;
- out x,y, AWidth, AHeight: Double); // mm
+ out x,y, AWidth, AHeight: Double);
var
img: TsImage;
obj: TsEmbeddedObj;
colW, rowH: Double;
totH, totW: Double;
r, c: Integer;
- factor: Double;
begin
img := GetImage(AIndex);
ARow1 := img.Row;
ACol1 := img.Col;
- ARowOffs1 := img.OffsetX; // millimeters
+ ARowOffs1 := img.OffsetX;
AColOffs1 := img.OffsetY;
obj := FWorkbook.GetEmbeddedObj(img.Index);
@@ -3410,11 +3416,10 @@ begin
AHeight := obj.ImageHeight * img.ScaleY;
// Find x coordinate of left image edge, in inches.
- factor := FWorkbook.GetDefaultFont.Size/2; // Width of "0" character in pts
x := AColOffs1;
for c := 0 to ACol1-1 do
begin
- colW := ptsToMM(GetColWidth(c) * factor); // in mm
+ colW := GetColWidth(c, FWorkbook.Units);
x := x + colW;
end;
@@ -3423,7 +3428,7 @@ begin
ACol2 := ACol1;
while (totW < AWidth) do
begin
- colW := ptsToMM(GetColWidth(ACol2) * factor);
+ colW := GetColWidth(ACol2, FWorkbook.Units);
totW := totW + colW;
if totW >= AWidth then
begin
@@ -3434,11 +3439,10 @@ begin
end;
// Find y coordinate of top image edge, in inches.
- factor := FWorkbook.GetDefaultFont.Size; // Height of line in pts
y := ARowOffs1;
for r := 0 to ARow1 - 1 do
begin
- rowH := ptsToMM(CalcRowHeight(r) * factor); // row height in mm
+ rowH := CalcRowHeight(r);
y := y + rowH;
end;
@@ -3447,7 +3451,7 @@ begin
ARow2 := ARow1;
while (totH < AHeight) do
begin
- rowH := ptsToMM(CalcRowHeight(ARow2) * factor);
+ rowH := CalcRowHeight(ARow2);
totH := totH + rowH;
if totH >= AHeight then
begin
@@ -3466,10 +3470,10 @@ end;
@param AFileName Name of the image file
@param AOffsetX The image is offset horizontally from the left edge of
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
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 AScaleY Vertical scaling factor of the image
@return Index into the internal image list.
@@ -3501,10 +3505,10 @@ end;
@param AStream Stream which contains the image data
@param AOffsetX The image is offset horizontally from the left edge of
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
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 AScaleY Vertical scaling factor of the image
@return Index into the internal image list.
@@ -3536,6 +3540,7 @@ begin
img^.Index := AImageIndex;
Result := FImages.Add(img);
end;
+
{@@ ----------------------------------------------------------------------------
Removes an image from the internal image list.
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
- 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
- @return Row height in line count of the default font.
+ @return Row height in workbook units
-------------------------------------------------------------------------------}
function TsWorksheet.CalcAutoRowHeight(ARow: Cardinal): Single;
var
cell: PCell;
- h0: Single;
begin
Result := 0;
- h0 := Workbook.GetDefaultFontSize;
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
- {
- if Result = 0 then
- Result := DefaultRowHeight;
- }
end;
function TsWorksheet.CalcRowHeight(ARow: Cardinal): Single;
+// In workbook units
begin
Result := CalcAutoRowHeight(ARow);
if Result = 0 then
@@ -6326,10 +6327,11 @@ end;
Returns the width of the given column. If there is no column record then
the default column width is returned.
- @param ACol Index of the column considered
- @return Width of the column (in count of "0" characters of the default font)
+ @param ACol Index of the column considered
+ @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
col: PCol;
begin
@@ -6342,17 +6344,24 @@ begin
Result := col^.Width
else
Result := FDefaultColWidth;
+ Result := FWorkbook.ConvertUnits(Result, FWorkbook.Units, AUnits);
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
default row height is returned
- @param ARow Index of the row considered
- @return Height of the row (in line count of the default font).
+ @param ARow Index of the row considered
+ @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
row: PRow;
begin
@@ -6365,9 +6374,15 @@ begin
Result := row^.Height
else
Result := FDefaultRowHeight;
+ Result := FWorkbook.ConvertUnits(Result, FWorkbook.Units, AUnits);
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
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.
@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);
var
@@ -6763,17 +6779,23 @@ end;
does not yet exist.
@param ARow Index of the row to be considered
- @param AHeight Row height to be assigned to the row. The row height is
- expressed as the line count of the default font size.
+ @param AHeight Row height to be assigned to the row.
+ @param AUnits Units measuring the row height.
-------------------------------------------------------------------------------}
-procedure TsWorksheet.WriteRowHeight(ARow: Cardinal; AHeight: Single);
+procedure TsWorksheet.WriteRowHeight(ARow: Cardinal; AHeight: Single;
+ AUnits: TsSizeUnits);
var
AElement: PRow;
begin
if ARow = UNASSIGNED_ROW_COL_INDEX then
exit;
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;
{@@ ----------------------------------------------------------------------------
@@ -6784,7 +6806,8 @@ end;
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 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);
var
@@ -6799,19 +6822,24 @@ end;
does not yet exist.
@param ACol Index of the column to be considered
- @param AWidth Width to be assigned to the column. The column width is
- expressed as the count of "0" characters of the default font.
+ @param AWidth Width to be assigned to the column.
+ @param AUnits Units used for parameter AWidth.
-------------------------------------------------------------------------------}
-procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single);
+procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single;
+ AUnits: TsSizeUnits);
var
AElement: PCol;
begin
if ACol = UNASSIGNED_ROW_COL_INDEX then
exit;
AElement := GetCol(ACol);
- AElement^.Width := AWidth;
+ AElement^.Width := FWorkbook.ConvertUnits(AWidth, AUnits, FWorkbook.FUnits);
end;
+procedure TsWorksheet.WriteColWidth(ACol: Cardinal; AWidth: Single);
+begin
+ WriteColWidth(ACol, AWidth, suChars);
+end;
{------------------------------------------------------------------------------}
{ TsWorkbook }
@@ -6869,6 +6897,53 @@ begin
TsWorksheet(sheet).CalcFormulas;
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.
-------------------------------------------------------------------------------}
@@ -6926,6 +7001,7 @@ begin
FWorksheets := TFPList.Create;
FLog := TStringList.Create;
FFormatID := sfidUnknown;
+ FUnits := suMillimeters; // Units for column width and row height
FormatSettings := UTF8FormatSettings;
FormatSettings.ShortDateFormat := MakeShortDateFormat(FormatSettings.ShortDateFormat);
@@ -8314,6 +8390,8 @@ var
rdest, cdest: Integer; // row and column index at destination
nselS, nselD: Integer; // count of selected blocks
begin
+ Unused(ATransposed);
+
if AStream = nil then
exit;
@@ -8452,13 +8530,13 @@ begin
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.
+ Image dimensions are converted to workbook units.
-------------------------------------------------------------------------------}
function TsWorkbook.AddEmbeddedObj(const AFileName: String): Integer;
var
obj: TsEmbeddedObj = nil;
- w, h: Double;
begin
if not FileExists(AFileName) then
begin
@@ -8469,8 +8547,11 @@ begin
obj := TsEmbeddedObj.Create;
if obj.LoadFromFile(AFileName) then
+ begin
+ obj.ImageWidth := ConvertUnits(obj.ImageWidth, suInches, FUnits);
+ obj.ImageHeight := ConvertUnits(obj.ImageHeight, suInches, FUnits);
Result := FEmbeddedObjList.Add(obj)
- else
+ end else
begin
AddErrorMsg(rsFileFormatNotSupported, [AFileName]);
obj.Free;
@@ -8486,7 +8567,6 @@ function TsWorkbook.AddEmbeddedObj(AStream: TStream;
const AName: String = ''): Integer;
var
obj: TsEmbeddedObj = nil;
- w, h: Double;
begin
obj := TsEmbeddedObj.Create;
if obj.LoadFromStream(AStream, AName) then
diff --git a/components/fpspreadsheet/fpspreadsheetchart.pas b/components/fpspreadsheet/fpspreadsheetchart.pas
index 95e5034e2..7723fedf9 100644
--- a/components/fpspreadsheet/fpspreadsheetchart.pas
+++ b/components/fpspreadsheet/fpspreadsheetchart.pas
@@ -84,7 +84,7 @@ type
TsWorkbookChartSource = class(TCustomChartSource, IsSpreadsheetControl)
private
FWorkbookSource: TsWorkbookSource;
- FWorkbook: TsWorkbook;
+// FWorkbook: TsWorkbook;
FWorksheets: array[TsXYRange] of TsWorksheet;
FRangeStr: array[TsXYRange] of String;
FRanges: array[TsXYRange] of TsCellRangeArray;
@@ -323,13 +323,13 @@ var
L: TStrings;
range: TsCellRange;
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('');
L := TStringList.Create;
try
if AListSeparator = #0 then
- L.Delimiter := FWorkbook.FormatSettings.ListSeparator
+ L.Delimiter := Workbook.FormatSettings.ListSeparator
else
L.Delimiter := AListSeparator;
L.StrictDelimiter := true;
@@ -412,7 +412,7 @@ begin
Result := WorkbookSource.Workbook
else
Result := nil;
- FWorkbook := Result;
+// FWorkbook := Result;
end;
{@@ ----------------------------------------------------------------------------
@@ -547,7 +547,6 @@ begin
end;
end;
-
{@@ ----------------------------------------------------------------------------
Standard component notification: The ChartSource is notified that the
WorkbookSource is being removed.
@@ -582,7 +581,7 @@ const
var
range: TsCellRange;
begin
- if (FWorkbook = nil) or (FRangeStr[AIndex] = '') //or (FWorksheets[AIndex] = nil)
+ if (Workbook = nil) or (FRangeStr[AIndex] = '') //or (FWorksheets[AIndex] = nil)
then begin
FWorksheets[AIndex] := nil;
SetLength(FRanges[AIndex], 0);
@@ -591,7 +590,7 @@ begin
exit;
end;
- if FWorkbook.TryStrToCellRanges(FRangeStr[AIndex], FWorksheets[AIndex], FRanges[AIndex])
+ if Workbook.TryStrToCellRanges(FRangeStr[AIndex], FWorksheets[AIndex], FRanges[AIndex])
then begin
for range in FRanges[AIndex] do
if (range.Col1 <> range.Col2) and (range.Row1 <> range.Row2) then
@@ -602,7 +601,7 @@ begin
// Make sure to include worksheet name in RangeString.
FRangeStr[AIndex] := BuildRangeStr(AIndex);
end else
- if (FWorkbook.GetWorksheetCount > 0) then begin
+ if (Workbook.GetWorksheetCount > 0) then begin
if FWorksheets[AIndex] = nil then
raise Exception.CreateFmt('Worksheet of %s cell range "%s" does not exist.',
[XY[AIndex], FRangeStr[AIndex]])
@@ -660,7 +659,7 @@ begin
FWorkbookSource := AValue;
if FWorkbookSource <> nil then
FWorkbookSource.AddListener(self);
- FWorkbook := GetWorkbook;
+// FWorkbook := GetWorkbook;
ListenerNotification([lniWorkbook, lniWorksheet]);
end;
diff --git a/components/fpspreadsheet/fpspreadsheetctrls.pas b/components/fpspreadsheet/fpspreadsheetctrls.pas
index b1b2a2e40..f35b0d85b 100644
--- a/components/fpspreadsheet/fpspreadsheetctrls.pas
+++ b/components/fpspreadsheet/fpspreadsheetctrls.pas
@@ -3269,50 +3269,54 @@ begin
AStrings.Add('Last column=');
AStrings.Add('Active cell=');
AStrings.Add('Selection=');
+ AStrings.Add('Default column width=');
+ AStrings.Add('Default row height=');
AStrings.Add('Page layout=');
end else
begin
- AStrings.Add(Format('Name=%s', [ASheet.Name]));
- AStrings.Add(Format('First row=%d', [Integer(ASheet.GetFirstRowIndex)]));
- AStrings.Add(Format('Last row=%d', [ASheet.GetLastRowIndex]));
- AStrings.Add(Format('First column=%d', [Integer(ASheet.GetFirstColIndex)]));
- AStrings.Add(Format('Last column=%d', [ASheet.GetLastColIndex]));
- AStrings.Add(Format('Active cell=%s', [GetCellString(ASheet.ActiveCellRow, ASheet.ActiveCellCol)]));
- AStrings.Add(Format('Selection=%s', [ASheet.GetSelectionAsString]));
- AStrings.Add(Format('Comments=%d items', [ASheet.Comments.Count]));
- AStrings.Add(Format('Hyperlinks=%d items', [ASheet.Hyperlinks.Count]));
- AStrings.Add(Format('MergedCells=%d items', [ASheet.MergedCells.Count]));
+ AStrings.Add('Name=%s', [ASheet.Name]);
+ AStrings.Add('First row=%d', [Integer(ASheet.GetFirstRowIndex)]);
+ AStrings.Add('Last row=%d', [ASheet.GetLastRowIndex]);
+ AStrings.Add('First column=%d', [Integer(ASheet.GetFirstColIndex)]);
+ AStrings.Add('Last column=%d', [ASheet.GetLastColIndex]);
+ AStrings.Add('Active cell=%s', [GetCellString(ASheet.ActiveCellRow, ASheet.ActiveCellCol)]);
+ AStrings.Add('Selection=%s', [ASheet.GetSelectionAsString]);
+ AStrings.Add('Default column width=%.1f %s', [ASheet.DefaultColWidth, SizeUnitNames[ASheet.Workbook.Units]]);
+ AStrings.Add('Default row height=%.1f %s', [ASheet.DefaultRowHeight, SizeUnitNames[ASheet.Workbook.Units]]);
+ 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
begin
AStrings.Add('(-) Page layout=');
- AStrings.Add(Format(' Orientation=%s', [GetEnumName(TypeInfo(TsPageOrientation), ord(ASheet.PageLayout.Orientation))]));
- AStrings.Add(Format(' Page width=%.1f mm', [ASheet.PageLayout.PageWidth]));
- AStrings.Add(Format(' Page height=%.1f mm', [ASheet.PageLayout.PageHeight]));
- AStrings.Add(Format(' Left margin=%.1f mm', [ASheet.PageLayout.LeftMargin]));
- AStrings.Add(Format(' Right margin=%.1f mm', [ASheet.PageLayout.RightMargin]));
- AStrings.Add(Format(' Top margin=%.1f mm', [ASheet.PageLayout.TopMargin]));
- AStrings.Add(Format(' Bottom margin=%.1f mm', [ASheet.PageLayout.BottomMargin]));
- AStrings.Add(Format(' Header distance=%.1f mm', [ASheet.PageLayout.HeaderMargin]));
- AStrings.Add(Format(' Footer distance=%.1f mm', [ASheet.PageLayout.FooterMargin]));
+ AStrings.Add(' Orientation=%s', [GetEnumName(TypeInfo(TsPageOrientation), ord(ASheet.PageLayout.Orientation))]);
+ AStrings.Add(' Page width=%.1f mm', [ASheet.PageLayout.PageWidth]);
+ AStrings.Add(' Page height=%.1f mm', [ASheet.PageLayout.PageHeight]);
+ AStrings.Add(' Left margin=%.1f mm', [ASheet.PageLayout.LeftMargin]);
+ AStrings.Add(' Right margin=%.1f mm', [ASheet.PageLayout.RightMargin]);
+ AStrings.Add(' Top margin=%.1f mm', [ASheet.PageLayout.TopMargin]);
+ AStrings.Add(' Bottom margin=%.1f mm', [ASheet.PageLayout.BottomMargin]);
+ AStrings.Add(' Header distance=%.1f mm', [ASheet.PageLayout.HeaderMargin]);
+ AStrings.Add(' Footer distance=%.1f mm', [ASheet.PageLayout.FooterMargin]);
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
- AStrings.Add (' Start page number=automatic');
- AStrings.Add(Format(' Scaling factor=%d%%', [ASheet.PageLayout.ScalingFactor]));
- AStrings.Add(Format(' Copies=%d', [ASheet.PageLayout.Copies]));
+ AStrings.Add(' Start page number=automatic');
+ AStrings.Add(' Scaling factor=%d%%', [ASheet.PageLayout.ScalingFactor]);
+ AStrings.Add(' Copies=%d', [ASheet.PageLayout.Copies]);
if (ASheet.PageLayout.Options * [poDifferentOddEven, poDifferentFirst] <> []) then
begin
- AStrings.Add(Format(' 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(Format(' 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(Format(' 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(' Header (first)=%s', [StringReplace(ASheet.PageLayout.Headers[0], LineEnding, '\n', [rfReplaceAll])]);
+ AStrings.Add(' Header (odd)=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]);
+ AStrings.Add(' Header (even)=%s', [StringReplace(ASheet.PageLayout.Headers[2], LineEnding, '\n', [rfReplaceAll])]);
+ AStrings.Add(' Footer (first)=%s', [StringReplace(ASheet.PageLayout.Footers[0], LineEnding, '\n', [rfReplaceAll])]);
+ AStrings.Add(' Footer (odd)=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceall])]);
+ AStrings.Add(' Footer (even)=%s', [StringReplace(ASheet.PageLayout.Footers[2], LineEnding, '\n', [rfReplaceAll])]);
end else
begin
- AStrings.Add(Format(' 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(' Header=%s', [StringReplace(ASheet.PageLayout.Headers[1], LineEnding, '\n', [rfReplaceAll])]);
+ AStrings.Add(' Footer=%s', [StringReplace(ASheet.PageLayout.Footers[1], LineEnding, '\n', [rfReplaceAll])]);
end;
if ASheet.PageLayout.HeaderImages[hfsLeft].Index > -1 then
diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas
index b6a657bdb..89d4fa523 100644
--- a/components/fpspreadsheet/fpspreadsheetgrid.pas
+++ b/components/fpspreadsheet/fpspreadsheetgrid.pas
@@ -79,8 +79,8 @@ type
FHyperlinkCell: PCell; // Selected cell if it stores a hyperlink
FOnClickHyperlink: TsHyperlinkClickEvent;
function CalcAutoRowHeight(ARow: Integer): Integer;
- function CalcColWidth(AWidth: Single): Integer;
- function CalcRowHeight(AHeight: Single): Integer;
+ function CalcColWidthFromSheet(AWidth: Single): Integer;
+ function CalcRowHeightFromSheet(AHeight: Single): Integer;
procedure ChangedCellHandler(ASender: TObject; ARow, ACol: Cardinal);
procedure ChangedFontHandler(ASender: TObject; ARow, ACol: Cardinal);
procedure FixNeighborCellBorders(ACell: PCell);
@@ -1098,20 +1098,17 @@ begin
end;
{@@ ----------------------------------------------------------------------------
- Converts the column width, given in "characters" of the default font, 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.
+ Converts the column width, given in units used by the worksheet, to pixels.
- @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.
-------------------------------------------------------------------------------}
-function TsCustomWorksheetGrid.CalcColWidth(AWidth: Single): Integer;
+function TsCustomWorksheetGrid.CalcColWidthFromSheet(AWidth: Single): Integer;
var
- w0: Integer;
+ w_pts: Double;
begin
- Convert_sFont_to_Font(Workbook.GetFont(0), Canvas.Font);
- w0 := Canvas.TextWidth('0');
- Result := Round(AWidth * w0);
+ w_pts := Workbook.ConvertUnits(AWidth, Workbook.Units, suPoints);
+ Result := PtsToPx(w_pts, Screen.PixelsPerInch);
end;
{@@ ----------------------------------------------------------------------------
@@ -1138,19 +1135,18 @@ begin
end;
{@@ ----------------------------------------------------------------------------
- Converts the row height (from a worksheet row record), given in lines, to
- pixels as needed by the grid
+ Converts the row height (from a worksheet row record), given in units used by
+ the sheet, to pixels as needed by the grid
- @param AHeight Row height expressed as default font line count from the
- worksheet
+ @param AHeight Row height expressed in units used by the worksheet.
@result Row height in pixels.
-------------------------------------------------------------------------------}
-function TsCustomWorksheetGrid.CalcRowHeight(AHeight: Single): Integer;
+function TsCustomWorksheetGrid.CalcRowHeightFromSheet(AHeight: Single): Integer;
var
h_pts: Single;
begin
- h_pts := AHeight * (Workbook.GetFont(0).Size + ROW_HEIGHT_CORRECTION);
- Result := PtsToPX(h_pts, Screen.PixelsPerInch) + 4;
+ h_pts := Workbook.ConvertUnits(AHeight, Workbook.Units, suPoints);;
+ Result := PtsToPx(h_pts, Screen.PixelsPerInch); // + 4;
end;
{@@ ----------------------------------------------------------------------------
@@ -1158,17 +1154,19 @@ end;
worksheet.
@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;
+var
+ w_pts: Double;
begin
Result := 0;
if Worksheet <> nil then
begin
- // The grid's column width is in "pixels", the worksheet's column width is
- // in "characters".
- Convert_sFont_to_Font(Workbook.GetDefaultFont, Canvas.Font);
- Result := AValue / Canvas.TextWidth('0');
+ // The grid's column width is in "pixels", the worksheet's column width
+ // has the units defined by the workbook.
+ w_pts := PxToPts(AValue, Screen.PixelsPerInch);
+ Result := Workbook.ConvertUnits(w_pts, suPoints, Workbook.Units);
end;
end;
@@ -1177,7 +1175,7 @@ end;
worksheet.
@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;
var
@@ -1186,10 +1184,10 @@ begin
Result := 0;
if Worksheet <> nil then
begin
- // The grid's row heights are in "pixels", the worksheet's row heights are
- // in "lines"
- h_pts := PxToPts(AValue - 4, Screen.PixelsPerInch); // height in points
- Result := h_pts / (Workbook.GetDefaultFontSize + ROW_HEIGHT_CORRECTION);
+ // The grid's row heights are in "pixels", the worksheet's row height
+ // has the units defined by the workbook.
+ h_pts := PxToPts(AValue, Screen.PixelsPerInch);
+ Result := Workbook.ConvertUnits(h_pts, suPoints, Workbook.Units);
end;
end;
@@ -3471,11 +3469,11 @@ begin
if IsColumn then
begin
w := CalcWorksheetColWidth(ColWidths[AIndex]);
- Worksheet.WriteColWidth(GetWorksheetCol(AIndex), w);
+ Worksheet.WriteColWidth(GetWorksheetCol(AIndex), w, Workbook.Units);
end else
begin
h := CalcWorksheetRowHeight(RowHeights[AIndex]);
- Worksheet.WriteRowHeight(GetWorksheetRow(AIndex), h);
+ Worksheet.WriteRowHeight(GetWorksheetRow(AIndex), h, Workbook.Units);
end;
end;
@@ -4681,9 +4679,9 @@ begin
begin
lCol := Worksheet.FindCol(i - FHeaderCount);
if lCol <> nil then
- w := CalcColWidth(lCol^.Width)
+ w := CalcColWidthFromSheet(lCol^.Width)
else
- w := CalcColWidth(Worksheet.DefaultColWidth);
+ w := CalcColWidthFromSheet(Worksheet.DefaultColWidth);
end;
ColWidths[i] := w;
end;
@@ -4726,7 +4724,7 @@ begin
begin
lRow := Worksheet.FindRow(r - FHeaderCount);
if (lRow <> nil) then
- h := CalcRowHeight(lRow^.Height)
+ h := CalcRowHeightFromSheet(lRow^.Height)
else
h := CalcAutoRowHeight(r);
end else
diff --git a/components/fpspreadsheet/fpstypes.pas b/components/fpspreadsheet/fpstypes.pas
index 7e1fabee1..d51ee3f86 100644
--- a/components/fpspreadsheet/fpstypes.pas
+++ b/components/fpspreadsheet/fpstypes.pas
@@ -83,18 +83,33 @@ const
{@@ Index of italic default font in workbook's font list - not used directly }
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
unique value simplifies many things... }
FPS_LINE_ENDING = #10;
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 elements in an expanded formula.
NOTE: When adding or rearranging items
diff --git a/components/fpspreadsheet/fpsutils.pas b/components/fpspreadsheet/fpsutils.pas
index 333766dc6..c93bc0b87 100644
--- a/components/fpspreadsheet/fpsutils.pas
+++ b/components/fpspreadsheet/fpsutils.pas
@@ -1530,6 +1530,7 @@ begin
Result := true;
end;
+
{@@ ----------------------------------------------------------------------------
Excel's unit of row heights is "twips", i.e. 1/20 point.
Converts Twips to points.
@@ -1682,8 +1683,10 @@ end;
@return Value converted to millimeters
-------------------------------------------------------------------------------}
function PtsToMM(AValue: Double): Double;
+const
+ PTS = 25.4 / 72.0;
begin
- Result := AValue / 72 * 25.4;
+ Result := AValue * PTS;
end;
{@@ ----------------------------------------------------------------------------
@@ -2122,6 +2125,14 @@ end;
{@@ ----------------------------------------------------------------------------
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;
AOffsetX, AOffsetY, AScaleX, AScaleY: Double);
@@ -2143,8 +2154,6 @@ begin
with AImage do
begin
Index := -1;
- //ScaleX := 1.0;
- //ScaleY := 1.0;
end;
end;
diff --git a/components/fpspreadsheet/tests/commenttests.pas b/components/fpspreadsheet/tests/commenttests.pas
index 2f8354dbd..88f4661a9 100644
--- a/components/fpspreadsheet/tests/commenttests.pas
+++ b/components/fpspreadsheet/tests/commenttests.pas
@@ -124,7 +124,7 @@ begin
// Comment in label cell
col := 1;
- MyWorksheet.WriteUTF8Text(row, col, 'Cell with comment');
+ MyWorksheet.WriteText(row, col, 'Cell with comment');
Myworksheet.WriteComment(row, col, ACommentText);
// Comment in number cell
diff --git a/components/fpspreadsheet/tests/copytests.pas b/components/fpspreadsheet/tests/copytests.pas
index 72584184b..93fc037d6 100644
--- a/components/fpspreadsheet/tests/copytests.pas
+++ b/components/fpspreadsheet/tests/copytests.pas
@@ -194,7 +194,7 @@ begin
cctNumber:
cell := MyWorksheet.WriteNumber(row+col, col, SourceCells[row].NumberValue);
cctUTF8String:
- cell := Myworksheet.WriteUTF8Text(row+col, col, SourceCells[row].UTF8StringValue);
+ cell := Myworksheet.WriteText(row+col, col, SourceCells[row].UTF8StringValue);
cctEmpty:
cell := MyWorksheet.WriteBlank(row+col, col);
end;
diff --git a/components/fpspreadsheet/tests/emptycelltests.pas b/components/fpspreadsheet/tests/emptycelltests.pas
index 95fa31509..827eba0d8 100644
--- a/components/fpspreadsheet/tests/emptycelltests.pas
+++ b/components/fpspreadsheet/tests/emptycelltests.pas
@@ -265,7 +265,7 @@ begin
if s[col+1] = 'x' then s[col+1] := ' ';
end;
if s[col+1] = 'x' then
- MyWorksheet.WriteUTF8Text(row, col, CELLTEXT)
+ MyWorksheet.WriteText(row, col, CELLTEXT)
else
if s[col+1] = 'o' then
MyWorksheet.WriteBlank(row, col);
diff --git a/components/fpspreadsheet/tests/errortests.pas b/components/fpspreadsheet/tests/errortests.pas
index 204adf293..73e3407bf 100644
--- a/components/fpspreadsheet/tests/errortests.pas
+++ b/components/fpspreadsheet/tests/errortests.pas
@@ -112,7 +112,7 @@ begin
for row := row1 to row2 do begin
MyWorksheet.WriteBlank(row, 0);
MyWorksheet.WriteNumber(row, 1, 1.0);
- MyWorksheet.WriteUTF8Text(row, 2, 'A');
+ MyWorksheet.WriteText(row, 2, 'A');
MyWorksheet.WriteFormula(Row, 3, formula);
MyWorksheet.WriteRPNFormula(row, 4, CreateRPNFormula(
RPNCellValue('A1', nil)));
@@ -135,7 +135,7 @@ begin
for col := col1 to col2 do begin
MyWorksheet.WriteBlank(0, col);
MyWorksheet.WriteNumber(1, col, 1.0);
- MyWorksheet.WriteUTF8Text(2, col, 'A');
+ MyWorksheet.WriteText(2, col, 'A');
MyWorksheet.WriteFormula(3, col, formula);
MyWorksheet.WriteRPNFormula(4, col, CreateRPNFormula(
RPNCellValue('A1', nil)));
@@ -172,7 +172,7 @@ begin
// to file.
for row := 0 to palette.Count-1 do
begin
- MyWorksheet.WriteUTF8Text(row, 0, s);
+ MyWorksheet.WriteText(row, 0, s);
MyWorksheet.WriteFontColor(row, 0, palette[row]);
end;
@@ -202,7 +202,7 @@ begin
MyWorkbook := TsWorkbook.Create;
try
MyWorkSheet:= MyWorkBook.AddWorksheet(ERROR_SHEET);
- MyWorksheet.WriteUTF8Text(0, 0, s);
+ MyWorksheet.WriteText(0, 0, s);
TempFile:=NewTempFile;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
ErrList.Text := MyWorkbook.ErrorMsg;
@@ -219,7 +219,7 @@ begin
MyWorkbook := TsWorkbook.Create;
try
MyWorksheet := MyWorkbook.AddWorksheet(ERROR_SHEET);
- Myworksheet.WriteUTF8Text(0, 0, s);
+ Myworksheet.WriteText(0, 0, s);
TempFile := NewTempFile;
Myworkbook.WriteToFile(TempFile, AFormat, true);
ErrList.Text := MyWorkbook.ErrorMsg;
diff --git a/components/fpspreadsheet/tests/formattests.pas b/components/fpspreadsheet/tests/formattests.pas
index ee9a81b23..536846edb 100644
--- a/components/fpspreadsheet/tests/formattests.pas
+++ b/components/fpspreadsheet/tests/formattests.pas
@@ -1186,7 +1186,7 @@ begin
try
MyWorkSheet:= MyWorkBook.AddWorksheet(RowHeightSheet);
for Row := Low(SollRowHeights) to High(SollRowHeights) do
- MyWorksheet.WriteRowHeight(Row, SollRowHeights[Row]);
+ MyWorksheet.WriteRowHeight(Row, SollRowHeights[Row], suLines);
TempFile:=NewTempFile;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
finally
@@ -1205,7 +1205,7 @@ begin
fail('Error in test code. Failed to get named worksheet');
for Row := Low(SollRowHeights) to High(SollRowHeights) do
begin
- ActualRowHeight := MyWorksheet.GetRowHeight(Row);
+ ActualRowHeight := MyWorksheet.GetRowHeight(Row, suLines);
// Take care of rounding errors - due to missing details of calculation
// they can be quite large...
if abs(ActualRowHeight - SollRowHeights[Row]) > 1e-2 then
diff --git a/components/fpspreadsheet/tests/hyperlinktests.pas b/components/fpspreadsheet/tests/hyperlinktests.pas
index 75f6095b3..5baf2e450 100644
--- a/components/fpspreadsheet/tests/hyperlinktests.pas
+++ b/components/fpspreadsheet/tests/hyperlinktests.pas
@@ -210,7 +210,7 @@ begin
CheckEquals(expected, actual,
'Test saved hyperlink target, cell '+CellNotation(MyWorksheet, row, col));
- actual := MyWorksheet.ReadAsUTF8Text(cell);
+ actual := MyWorksheet.ReadAsText(cell);
if row = 0 then begin
// An originally blank cell shows the hyperlink.Target.
// But Worksheet.WriteHyperlink removes the "file:///" protocol
diff --git a/components/fpspreadsheet/tests/insertdeletetests.pas b/components/fpspreadsheet/tests/insertdeletetests.pas
index b3600f8b7..d16c61cdd 100644
--- a/components/fpspreadsheet/tests/insertdeletetests.pas
+++ b/components/fpspreadsheet/tests/insertdeletetests.pas
@@ -987,7 +987,7 @@ begin
'0'..'9': MyWorksheet.WriteNumber(row, col, StrToInt(s[col+1]));
'F' : MyWorksheet.WriteFormula(row, col, InsDelTestData[ATestIndex].Formula);
'M' : begin
- MyWorksheet.WriteUTF8Text(row, col, 'M');
+ MyWorksheet.WriteText(row, col, 'M');
MyWorksheet.MergeCells(
row,
col,
diff --git a/components/fpspreadsheet/tests/sortingtests.pas b/components/fpspreadsheet/tests/sortingtests.pas
index 8636ed679..f53af4e61 100644
--- a/components/fpspreadsheet/tests/sortingtests.pas
+++ b/components/fpspreadsheet/tests/sortingtests.pas
@@ -130,10 +130,8 @@ const
var
MyWorksheet: TsWorksheet;
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
- L: TStringList;
- s: String;
sortParams: TsSortParams;
actualNumber: Double;
actualString: String;
@@ -157,12 +155,12 @@ begin
0: for i :=0 to High(SollSortNumbers) do // Numbers only
MyWorksheet.WriteNumber(i, col, SollSortNumbers[i]);
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
for i := 0 to High(SollSortNumbers) do
MyWorkSheet.WriteNumber(i*2, col, SollSortNumbers[i]);
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
@@ -171,12 +169,12 @@ begin
0: for i := 0 to High(SollSortNumbers) do
MyWorksheet.WriteNumber(row, i, SollSortNumbers[i]);
1: for i := 0 to High(SollSortStrings) do
- MyWorksheet.WriteUTF8Text(row, i, SollSortStrings[i]);
+ MyWorksheet.WriteText(row, i, SollSortStrings[i]);
2: begin
for i := 0 to High(SollSortNumbers) do
myWorkSheet.WriteNumber(row, i*2, SollSortNumbers[i]);
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;
@@ -257,7 +255,7 @@ begin
end;
1: begin
cell := MyWorksheet.FindCell(row, col);
- actualString := MyWorksheet.ReadAsUTF8Text(cell);
+ actualString := MyWorksheet.ReadAsText(cell);
expectedString := char(ord('A') + i);
CheckEquals(expectedstring, actualstring,
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
@@ -279,7 +277,7 @@ begin
CheckEquals(expectednumber, actualnumber,
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
end else begin
- actualstring := MyWorksheet.ReadAsUTF8Text(row, col);
+ actualstring := MyWorksheet.ReadAsText(row, col);
expectedstring := char(ord('A') + i - Length(SollSortNumbers));
CheckEquals(expectedstring, actualstring,
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
@@ -302,14 +300,9 @@ const
var
MyWorksheet: TsWorksheet;
MyWorkbook: TsWorkbook;
- i, ilast, n, row, col: Integer;
- MyCell: PCell;
+ i, ilast, row, col: Integer;
TempFile: string; //write xls/xml to this file and read back from it
- L: TStringList;
- s: String;
sortParams: TsSortParams;
- sortOptions: TsSortOptions;
- r1,r2,c1,c2: Cardinal;
actualNumber: Double;
actualString: String;
expectedNumber: Double;
@@ -340,14 +333,14 @@ begin
// We will sort primarily according to column A, and seconarily according
// to B. The construction allows us to determine if the sorting is correct.
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
begin
// The same with the rows...
for i:=0 to iLast do
MyWorksheet.WriteNumber(row+1, i, SollSortNumbers[i]);
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;
MyWorkBook.WriteToFile(TempFile, AFormat, true);
@@ -404,7 +397,7 @@ begin
// Now read the string. It must be the character corresponding to the
// half of the number
col := 0;
- actualString := MyWorksheet.ReadAsUTF8Text(row, col);
+ actualString := MyWorksheet.ReadAsText(row, col);
expectedString := char(ord('A') + round(expectedNumber) div 2);
CheckEquals(expectedstring, actualstring,
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
@@ -421,7 +414,7 @@ begin
'Sorted cell number mismatch, cell '+CellNotation(MyWorksheet, row, col));
row := 0;
- actualstring := MyWorksheet.ReadAsUTF8Text(row, col);
+ actualstring := MyWorksheet.ReadAsText(row, col);
expectedString := char(ord('A') + round(expectedNumber) div 2);
CheckEquals(expectedstring, actualstring,
'Sorted cell string mismatch, cell '+CellNotation(MyWorksheet, row, col));
diff --git a/components/fpspreadsheet/tests/virtualmodetests.pas b/components/fpspreadsheet/tests/virtualmodetests.pas
index baa7533d5..939954555 100644
--- a/components/fpspreadsheet/tests/virtualmodetests.pas
+++ b/components/fpspreadsheet/tests/virtualmodetests.pas
@@ -111,7 +111,7 @@ begin
end;
for row := Length(SollNumbers) to worksheet.GetLastRowIndex do
begin
- s := worksheet.ReadAsUTF8Text(row, col);
+ s := worksheet.ReadAsText(row, col);
CheckEquals(SollStrings[row - Length(SollNumbers)], s,
'Test string value mismatch, cell '+CellNotation(workSheet, row, col));
end;
diff --git a/components/fpspreadsheet/wikitable.pas b/components/fpspreadsheet/wikitable.pas
index 39efef76f..df1344e95 100644
--- a/components/fpspreadsheet/wikitable.pas
+++ b/components/fpspreadsheet/wikitable.pas
@@ -488,7 +488,8 @@ begin
begin
lCol := FWorksheet.FindCol(j);
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;
// Row height (to be considered in first column)
@@ -496,7 +497,8 @@ begin
begin
lRow := FWorksheet.FindRow(i);
if lRow <> nil then
- lRowHeightStr := Format(' height="%.0fpt"', [lRow^.Height*FWorkbook.GetDefaultFontSize]);
+ lRowHeightStr := Format(' height="%.0fpt"',
+ [FWorkbook.ConvertUnits(lRow^.Height, FWorkbook.Units, suPoints)]);
end;
// Font
diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas
index 2dbb8a890..5b04d3fcc 100755
--- a/components/fpspreadsheet/xlsbiff2.pas
+++ b/components/fpspreadsheet/xlsbiff2.pas
@@ -363,10 +363,12 @@ begin
end;
procedure TsSpreadBIFF2Reader.ReadColWidth(AStream: TStream);
+const
+ EPS = 1E-3;
var
c, c1, c2: Cardinal;
w: Word;
- col: TCol;
+ colwidth: Single;
begin
// read column start and end index of column range
c1 := AStream.ReadByte;
@@ -374,22 +376,25 @@ begin
// read col width in 1/256 of the width of "0" character
w := WordLEToN(AStream.ReadWord);
// 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.
- if not SameValue(col.Width, FWorksheet.DefaultColWidth) then
+ if not SameValue(colwidth, FWorksheet.DefaultColWidth, EPS) then
for c := c1 to c2 do
- FWorksheet.WriteColInfo(c, col);
+ FWorksheet.WriteColWidth(c, colwidth, FWorkbook.Units);
end;
procedure TsSpreadBIFF2Reader.ReadDefRowHeight(AStream: TStream);
var
hw: word;
- h : Single;
begin
hw := WordLEToN(AStream.ReadWord);
+ FWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(
+ TwipsToPts(hw and $8000), suPoints, FWorkbook.Units);
+ {
h := TwipsToPts(hw and $8000) / FWorkbook.GetDefaultFontSize;
if h > ROW_HEIGHT_CORRECTION then
FWorksheet.DefaultRowHeight := h - ROW_HEIGHT_CORRECTION;
+ }
end;
procedure TsSpreadBIFF2Reader.ReadFONT(AStream: TStream);
@@ -789,12 +794,16 @@ begin
begin
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
// 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.
lRow^.Height := TwipsToPts(h and $7FFF) / Workbook.GetFont(0).Size;
if lRow^.Height > ROW_HEIGHT_CORRECTION then
lRow^.Height := lRow^.Height - ROW_HEIGHT_CORRECTION
else
lRow^.Height := 0;
+ }
end;
end;
@@ -1227,7 +1236,7 @@ begin
{ Column width }
{ 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);
{ Write out }
@@ -1780,7 +1789,8 @@ begin
{ Default height for unused rows, in twips = 1/20 of a point
Bits 0-14: Default height for unused rows, in twips
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)));
end;
@@ -1964,7 +1974,6 @@ var
containsXF: Boolean;
rowheight: Word;
w: Word;
- h: Single;
begin
if (ARowIndex >= FLimitations.MaxRowCount) or (AFirstColIndex >= FLimitations.MaxColCount)
or (ALastColIndex >= FLimitations.MaxColCount)
@@ -1988,14 +1997,17 @@ begin
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
{ 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
- 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
if (ARow^.Height = 0) then
rowheight := 0
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;
AStream.WriteWord(WordToLE(w));
diff --git a/components/fpspreadsheet/xlsbiff5.pas b/components/fpspreadsheet/xlsbiff5.pas
index 526971b44..c22920484 100755
--- a/components/fpspreadsheet/xlsbiff5.pas
+++ b/components/fpspreadsheet/xlsbiff5.pas
@@ -691,8 +691,8 @@ var
begin
// read width in 1/256 of the width of "0" character
w := WordLEToN(AStream.ReadWord);
- // calculate width in units of "characters" and use it as DefaultColWidth
- ASheet.DefaultColWidth := w / 256;
+ // calculate width in workbook units and use it as DefaultColWidth
+ ASheet.DefaultColWidth := FWorkbook.ConvertUnits(w / 256, suChars, FWorkbook.Units);
end;
{ Reads a STRING record which contains the result of string formula. }
@@ -1322,6 +1322,8 @@ procedure TsSpreadBIFF5Writer.WriteDefinedName(AStream: TStream;
var
sheetIdx: Integer;
begin
+ Unused(AIndexToREF);
+
sheetIdx := FWorkbook.GetWorksheetIndex(AWorksheet);
{ Token for tArea3dR }
diff --git a/components/fpspreadsheet/xlscommon.pas b/components/fpspreadsheet/xlscommon.pas
index 469fcd251..feba0f919 100644
--- a/components/fpspreadsheet/xlscommon.pas
+++ b/components/fpspreadsheet/xlscommon.pas
@@ -1399,7 +1399,7 @@ const
var
c, c1, c2: Cardinal;
w: Word;
- col: TCol;
+ colwidth: Double;
begin
// read column start and end index of column range
c1 := WordLEToN(AStream.ReadWord);
@@ -1407,11 +1407,11 @@ begin
// read col width in 1/256 of the width of "0" character
w := WordLEToN(AStream.ReadWord);
// 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
- if not SameValue(col.Width, FWorksheet.DefaultColWidth, EPS) then
+ if not SameValue(colwidth, FWorksheet.DefaultColWidth, EPS) then
for c := c1 to c2 do
- FWorksheet.WriteColInfo(c, col);
+ FWorksheet.WriteColWidth(c, colwidth, FWorkbook.Units);
end;
{@@ ----------------------------------------------------------------------------
@@ -1511,9 +1511,12 @@ end;
Reads the default column width
-------------------------------------------------------------------------------}
procedure TsSpreadBIFFReader.ReadDefColWidth(AStream: TStream);
+var
+ w: Word;
begin
// 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;
{@@ ----------------------------------------------------------------------------
@@ -1523,16 +1526,14 @@ end;
procedure TsSpreadBIFFReader.ReadDefRowHeight(AStream: TStream);
var
hw: Word;
- h: Single;
begin
// Options
AStream.ReadWord;
// Height, in Twips (1/20 pt).
hw := WordLEToN(AStream.ReadWord);
- h := TwipsToPts(hw) / FWorkbook.GetDefaultFontSize;
- if h > ROW_HEIGHT_CORRECTION then
- FWorksheet.DefaultRowHeight := h - ROW_HEIGHT_CORRECTION;
+ FWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(
+ TwipsToPts(hw), suPoints, FWorkbook.Units);
end;
{@@ ----------------------------------------------------------------------------
@@ -2089,13 +2090,8 @@ begin
if rowrec.Flags and $00000040 <> 0 then begin
lRow := FWorksheet.GetRow(WordLEToN(rowrec.RowIndex));
// 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;
- lRow^.Height := TwipsToPts(h) / FWorkbook.GetDefaultFontSize;
- if lRow^.Height > ROW_HEIGHT_CORRECTION then
- lRow^.Height := lRow^.Height - ROW_HEIGHT_CORRECTION
- else
- lRow^.Height := 0;
+ lRow^.Height := FWorkbook.ConvertUnits(TwipsToPts(h), suPoints, FWorkbook.Units);
end;
end;
@@ -3183,7 +3179,7 @@ begin
rec.EndCol := WordToLE(ACol^.Col);
{ 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.XFIndex := WordToLE(15); // Index of XF record, not used
@@ -3309,13 +3305,16 @@ end;
-------------------------------------------------------------------------------}
procedure TsSpreadBIFFWriter.WriteDefaultColWidth(AStream: TStream;
AWorksheet: TsWorksheet);
+var
+ colwidth: Single;
begin
{ BIFF record header }
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFCOLWIDTH, 2);
{ Column width in characters, using the width of the zero character
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;
{@@ ----------------------------------------------------------------------------
@@ -3327,7 +3326,7 @@ end;
procedure TsSpreadBIFFWriter.WriteDefaultRowHeight(AStream: TStream;
AWorksheet: TsWorksheet);
var
- h: Single;
+ h: Double;
begin
{ BIFF record header }
WriteBIFFHeader(AStream, INT_EXCEL_ID_DEFROWHEIGHT, 4);
@@ -3340,7 +3339,7 @@ begin
AStream.WriteWord(WordToLE($0001));
{ 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)));
end;
@@ -4243,7 +4242,6 @@ var
spaceabove, spacebelow: Boolean;
colindex: Cardinal;
rowheight: Word;
- h: Single;
fmt: PsCellFormat;
begin
if (ARowIndex >= FLimitations.MaxRowCount) or
@@ -4287,14 +4285,13 @@ begin
AStream.WriteWord(WordToLE(Word(ALastColIndex) + 1));
{ 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
- rowheight := PtsToTwips((ASheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * h)
+ rowheight := PtsToTwips(FWorkbook.ConvertUnits(ASheet.DefaultRowHeight, FWorkbook.Units, suPoints))
else
if (ARow^.Height = 0) then
rowheight := 0
else
- rowheight := PtsToTwips((ARow^.Height + ROW_HEIGHT_CORRECTION)*h);
+ rowheight := PtsToTwips(FWorkbook.ConvertUnits(ARow^.Height, FWorkbook.Units, suPoints));
w := rowheight and $7FFF;
AStream.WriteWord(WordToLE(w));
diff --git a/components/fpspreadsheet/xlsxml.pas b/components/fpspreadsheet/xlsxml.pas
index 6a6620e9f..534127134 100644
--- a/components/fpspreadsheet/xlsxml.pas
+++ b/components/fpspreadsheet/xlsxml.pas
@@ -671,15 +671,9 @@ var
cell: PCell;
rowheightStr: String;
colwidthStr: String;
- defFnt: TsFont;
col: PCol;
row: PRow;
- cw_fact, rh_fact: Double;
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;
c1 := 0;
r2 := AWorksheet.GetLastRowIndex;
@@ -691,8 +685,8 @@ begin
'ss:DefaultRowHeight="%.2f">' + LF,
[
AWorksheet.GetLastColIndex + 1, AWorksheet.GetLastRowIndex + 1,
- FWorksheet.DefaultColWidth * cw_fact,
- (FWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * rh_fact
+ FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suPoints),
+ FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints)
],
FPointSeparatorSettings
));
@@ -700,11 +694,10 @@ begin
for c := c1 to c2 do
begin
col := FWorksheet.FindCol(c);
- // column width in the worksheet is in multiples of the "0" character width.
- // In the xml file, it is needed in pts.
+ // column width is needed in pts.
if Assigned(col) then
colwidthStr := Format(' ss:Width="%0.2f"',
- [col^.Width * cw_fact],
+ [FWorkbook.ConvertUnits(col^.Width, FWorkbook.Units, suPoints)],
FPointSeparatorSettings)
else
colwidthStr := '';
@@ -715,11 +708,10 @@ begin
for r := r1 to r2 do
begin
row := FWorksheet.FindRow(r);
- // Row height in the worksheet is in multiples of the default font height
- // In the xml file, it is needed in pts.
+ // Row height is needed in pts.
if Assigned(row) then
rowheightStr := Format(' ss:Height="%.2f"',
- [(row^.Height + ROW_HEIGHT_CORRECTION) * rh_fact],
+ [FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
FPointSeparatorSettings
)
else
diff --git a/components/fpspreadsheet/xlsxooxml.pas b/components/fpspreadsheet/xlsxooxml.pas
index 038432a7f..dd3c7a9ec 100755
--- a/components/fpspreadsheet/xlsxooxml.pas
+++ b/components/fpspreadsheet/xlsxooxml.pas
@@ -982,7 +982,7 @@ end;
procedure TsSpreadOOXMLReader.ReadCols(ANode: TDOMNode; AWorksheet: TsWorksheet);
const
- EPS = 1e-2;
+ EPS = 1e-3;
var
colNode: TDOMNode;
col, col1, col2: Cardinal;
@@ -1008,7 +1008,7 @@ begin
if (s <> '') and TryStrToFloat(s, w, FPointSeparatorSettings) then
if not SameValue(w, AWorksheet.DefaultColWidth, EPS) then
for col := col1 to col2 do
- AWorksheet.WriteColWidth(col, w);
+ AWorksheet.WriteColWidth(col, w, suChars);
end;
end;
colNode := colNode.NextSibling;
@@ -1719,7 +1719,6 @@ var
s: String;
ht: Single;
r: Cardinal;
- row: PRow;
begin
if ANode = nil then
exit;
@@ -1729,12 +1728,7 @@ begin
r := StrToInt(s) - 1;
s := GetAttrValue(ANode, 'ht');
ht := StrToFloat(s, FPointSeparatorSettings); // seems to be in "Points"
- row := AWorksheet.GetRow(r);
- row^.Height := ht / FWorkbook.GetDefaultFontSize;
- if row^.Height > ROW_HEIGHT_CORRECTION then
- row^.Height := row^.Height - ROW_HEIGHT_CORRECTION
- else
- row^.Height := 0;
+ AWorksheet.WriteRowHeight(r, ht, suPoints);
end;
end;
@@ -1808,7 +1802,7 @@ end;
procedure TsSpreadOOXMLReader.ReadSheetFormatPr(ANode: TDOMNode;
AWorksheet: TsWorksheet);
var
- w, h: Single;
+ w, h: Double;
s: String;
begin
if ANode = nil then
@@ -1816,16 +1810,11 @@ begin
s := GetAttrValue(ANode, 'defaultColWidth'); // is in characters
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
- if (s <> '') and TryStrToFloat(s, h, FPointSeparatorSettings) then begin
- h := h / Workbook.GetDefaultFontSize;
- if h > ROW_HEIGHT_CORRECTION then begin
- h := h - ROW_HEIGHT_CORRECTION;
- AWorksheet.DefaultRowHeight := h;
- end;
- end;
+ s := GetAttrValue(ANode, 'defaultRowHeight'); // is in points
+ if (s <> '') and TryStrToFloat(s, h, FPointSeparatorSettings) then //begin
+ AWorksheet.DefaultRowHeight := FWorkbook.ConvertUnits(h, suPoints, FWorkbook.Units);
end;
procedure TsSpreadOOXMLReader.ReadSheetList(ANode: TDOMNode; AList: TStrings);
@@ -2474,22 +2463,17 @@ var
c: Integer;
w: Single;
begin
- {
- if AWorksheet.Cols.Count = 0 then
- exit;
- }
-
AppendToStream(AStream,
'');
for c:=0 to AWorksheet.GetLastColIndex do begin
col := AWorksheet.FindCol(c);
if col <> nil then
- w := col^.Width
+ w := FWorkbook.ConvertUnits(col^.Width, FWorkbook.Units, suChars)
else
- w := AWorksheet.DefaultColWidth;
+ w := FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suChars);
AppendToStream(AStream, Format(
- '',
+ '',
[c+1, c+1, w], FPointSeparatorSettings)
);
end;
@@ -2910,10 +2894,7 @@ var
styleCell: PCell;
cell: PCell;
rh: String;
- h0: Single;
begin
- h0 := Workbook.GetDefaultFontSize; // Point size of default font
-
AppendToStream(AStream,
'');
@@ -2924,8 +2905,8 @@ begin
for r := 0 to r2 do begin
row := AWorksheet.FindRow(r);
if row <> nil then
- rh := Format(' ht="%g" customHeight="1"', [
- (row^.Height + ROW_HEIGHT_CORRECTION)*h0],
+ rh := Format(' ht="%.2f" customHeight="1"',
+ [FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
FPointSeparatorSettings)
else
rh := '';
@@ -2981,14 +2962,15 @@ begin
// If the row has a custom height add this value to the specification
row := AWorksheet.FindRow(r);
if row <> nil then
- rh := Format(' ht="%g" customHeight="1"', [
- (row^.Height + ROW_HEIGHT_CORRECTION)*h0], FPointSeparatorSettings)
+ rh := Format(' ht="%.2f" customHeight="1"',
+ [FWorkbook.ConvertUnits(row^.Height, FWorkbook.Units, suPoints)],
+ FPointSeparatorSettings)
else
rh := '';
AppendToStream(AStream, Format(
'', [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... ?!
for cell in AWorksheet.Cells.GetRowEnumerator(r) do
WriteCellToStream(AStream, cell);
@@ -3013,10 +2995,11 @@ procedure TsSpreadOOXMLWriter.WriteSheetFormatPr(AStream: TStream;
var
w, h: Single;
begin
- w := AWorksheet.DefaultColWidth;
- h := (AWorksheet.DefaultRowHeight + ROW_HEIGHT_CORRECTION) * Workbook.GetDefaultFontSize;
+ // Excel has column width in characters, and row heights in pts.
+ w := FWorkbook.ConvertUnits(AWorksheet.DefaultColWidth, FWorkbook.Units, suChars);
+ h := FWorkbook.ConvertUnits(AWorksheet.DefaultRowHeight, FWorkbook.Units, suPoints);
AppendToStream(AStream, Format(
- '',
+ '',
[w, h],
FPointSeparatorSettings));
end;