diff --git a/components/fpspreadsheet/examples/excel8demo/excel8write_format.pas b/components/fpspreadsheet/examples/excel8demo/excel8write_format.pas index b7da69603..ff713fbae 100644 --- a/components/fpspreadsheet/examples/excel8demo/excel8write_format.pas +++ b/components/fpspreadsheet/examples/excel8demo/excel8write_format.pas @@ -29,34 +29,87 @@ begin // Write some cells MyWorksheet.WriteUTF8Text(1, 0, 'Border');// A2 + MyWorksheet.WriteUTF8Text(1, 1, '[]'); // B2 - MyWorksheet.WriteUTF8Text(1, 2, '[North]');// C2 - MyWorksheet.WriteUTF8Text(1, 3, '[West]');// D2 - MyWorksheet.WriteUTF8Text(1, 4, '[East]');// E2 - MyWorksheet.WriteUTF8Text(1, 5, '[South]');// F2 - - // Format them - MyCell := MyWorksheet.GetCell(1, 1); MyCell^.Border := []; MyCell^.UsedFormattingFields := [uffBorder]; - MyCell := MyWorksheet.GetCell(1, 2); + MyWorksheet.WriteUTF8Text(1, 3, '[N]');// D2 + MyCell := MyWorksheet.GetCell(1, 3); MyCell^.Border := [cbNorth]; MyCell^.UsedFormattingFields := [uffBorder]; - MyCell := MyWorksheet.GetCell(1, 3); + MyWorksheet.WriteUTF8Text(1, 5, '[W]');// F2 + MyCell := MyWorksheet.GetCell(1, 5); MyCell^.Border := [cbWest]; MyCell^.UsedFormattingFields := [uffBorder]; - MyCell := MyWorksheet.GetCell(1, 4); + MyWorksheet.WriteUTF8Text(1, 7, '[E]');// H2 + MyCell := MyWorksheet.GetCell(1, 7); MyCell^.Border := [cbEast]; MyCell^.UsedFormattingFields := [uffBorder]; - MyCell := MyWorksheet.GetCell(1, 5); + MyWorksheet.WriteUTF8Text(1, 9, '[S]');// J2 + MyCell := MyWorksheet.GetCell(1, 9); MyCell^.Border := [cbSouth]; MyCell^.UsedFormattingFields := [uffBorder]; + MyWorksheet.WriteUTF8Text(3, 1, '[N,W]');// B4 + MyCell := MyWorksheet.GetCell(3, 1); + MyCell^.Border := [cbNorth, cbWest]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(3, 3, '[N,E]');// D4 + MyCell := MyWorksheet.GetCell(3, 3); + MyCell^.Border := [cbNorth, cbEast]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(3, 5, '[N,S]');// F4 + MyCell := MyWorksheet.GetCell(3, 5); + MyCell^.Border := [cbNorth, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(3, 7, '[W,E]');// H4 + MyCell := MyWorksheet.GetCell(3, 7); + MyCell^.Border := [cbWest, cbEast]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(3, 9, '[W,S]');// J4 + MyCell := MyWorksheet.GetCell(3, 9); + MyCell^.Border := [cbWest, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(3, 11, '[E,S]');// L4 + MyCell := MyWorksheet.GetCell(3, 11); + MyCell^.Border := [cbEast, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(5, 1, '[N,W,E]');// B6 + MyCell := MyWorksheet.GetCell(5, 1); + MyCell^.Border := [cbNorth, cbWest, cbEast]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(5, 3, '[N,W,S]');// D6 + MyCell := MyWorksheet.GetCell(5, 3); + MyCell^.Border := [cbNorth, cbWest, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(5, 5, '[N,E,S]');// F6 + MyCell := MyWorksheet.GetCell(5, 5); + MyCell^.Border := [cbNorth, cbEast, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(5, 7, '[W,E,S]');// H6 + MyCell := MyWorksheet.GetCell(5, 7); + MyCell^.Border := [cbWest, cbEast, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + + MyWorksheet.WriteUTF8Text(5, 9, '[N,W,E,S]');// J6 + MyCell := MyWorksheet.GetCell(5, 9); + MyCell^.Border := [cbNorth, cbWest, cbEast, cbSouth]; + MyCell^.UsedFormattingFields := [uffBorder]; + // Save the spreadsheet to a file MyWorkbook.WriteToFile(MyDir + 'test3.xls', sfExcel8, False); MyWorkbook.Free; diff --git a/components/fpspreadsheet/xlsbiff8.pas b/components/fpspreadsheet/xlsbiff8.pas index 781af4db5..20139162f 100755 --- a/components/fpspreadsheet/xlsbiff8.pas +++ b/components/fpspreadsheet/xlsbiff8.pas @@ -369,6 +369,28 @@ begin WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbEast]); // XF22 - Border WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbSouth]); + // XF23 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbWest]); + // XF24 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbEast]); + // XF25 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbSouth]); + // XF26 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbWest, cbEast]); + // XF27 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbWest, cbSouth]); + // XF28 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbEast, cbSouth]); + // XF29 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbWest, cbEast]); + // XF30 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbWest, cbSouth]); + // XF31 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbEast, cbSouth]); + // XF32 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbWest, cbEast, cbSouth]); + // XF33 - Border + WriteXF(AStream, 0, 0, XF_ROTATION_HORIZONTAL, [cbNorth, cbWest, cbEast, cbSouth]); WriteStyle(AStream); @@ -767,7 +789,18 @@ begin else if ACell^.Border = [cbNorth] then AStream.WriteWord(WordToLE(19)) else if ACell^.Border = [cbWest] then AStream.WriteWord(WordToLE(20)) else if ACell^.Border = [cbEast] then AStream.WriteWord(WordToLE(21)) - else if ACell^.Border = [cbSouth] then AStream.WriteWord(WordToLE(22)); + else if ACell^.Border = [cbSouth] then AStream.WriteWord(WordToLE(22)) + else if ACell^.Border = [cbNorth, cbWest] then AStream.WriteWord(WordToLE(23)) + else if ACell^.Border = [cbNorth, cbEast] then AStream.WriteWord(WordToLE(24)) + else if ACell^.Border = [cbNorth, cbSouth] then AStream.WriteWord(WordToLE(25)) + else if ACell^.Border = [cbWest, cbEast] then AStream.WriteWord(WordToLE(26)) + else if ACell^.Border = [cbWest, cbSouth] then AStream.WriteWord(WordToLE(27)) + else if ACell^.Border = [cbEast, cbSouth] then AStream.WriteWord(WordToLE(28)) + else if ACell^.Border = [cbNorth, cbWest, cbEast] then AStream.WriteWord(WordToLE(29)) + else if ACell^.Border = [cbNorth, cbWest, cbSouth] then AStream.WriteWord(WordToLE(30)) + else if ACell^.Border = [cbNorth, cbEast, cbSouth] then AStream.WriteWord(WordToLE(31)) + else if ACell^.Border = [cbWest, cbEast, cbSouth] then AStream.WriteWord(WordToLE(32)) + else if ACell^.Border = [cbNorth, cbWest, cbEast, cbSouth] then AStream.WriteWord(WordToLE(33)); end else AStream.WriteWord(WordToLE(15));