Recent

Author Topic: How to set the Excel cell format to Shrink to fit?  (Read 748 times)

dodgex

  • New Member
  • *
  • Posts: 16
How to set the Excel cell format to Shrink to fit?
« on: January 13, 2026, 06:01:11 am »
How to set the Excel cell format to Shrink to fit???
« Last Edit: January 13, 2026, 07:37:41 am by dodgex »

wp

  • Hero Member
  • *****
  • Posts: 13350
Re: How to set the Excel cell format to Shrink to fit?
« Reply #1 on: January 13, 2026, 02:10:13 pm »
This is not supported.

dodgex

  • New Member
  • *
  • Posts: 16
Re: How to set the Excel cell format to Shrink to fit?
« Reply #2 on: January 15, 2026, 02:32:20 am »
This is not supported.
thank you !!!
FPSpreadsheet is great under lazarus!
Ihope this function can be supported in the future...

dodgex

  • New Member
  • *
  • Posts: 16
Re: How to set the Excel cell format to Shrink to fit?
« Reply #3 on: January 15, 2026, 04:51:41 am »
This is not supported.
Is there any other way I can achieve this function?

wp

  • Hero Member
  • *****
  • Posts: 13350
Re: How to set the Excel cell format to Shrink to fit?
« Reply #4 on: January 17, 2026, 07:13:33 pm »
Added the shrink-to-fit feature to FPSpreadsheets and to all reader/writers supporting it (Excel 8 xls, Excel2007+ xlsx, Excel 2003 XML, LibreOffice ods): https://wiki.lazarus.freepascal.org/FPSpreadsheet#Shrink-to-fit

Here is a small demo project showing (and testing) how to use it:
Code: Pascal  [Select][+][-]
  1. program project1;
  2. uses
  3.   FPSpreadsheet, FPSTypes, xlsxOOXML, fpsOpenDocument, xlsBIFF8, xlsXML;
  4. var
  5.   b: TsWorkbook;
  6.   sh: TsWorksheet;
  7. begin
  8.   // Writing
  9.   b := TsWorkbook.Create;
  10.   try
  11.     sh := b.AddWorksheet('Test');
  12.     sh.WriteText(0, 0, 'Long shrink-to-fit text.');
  13.     sh.WriteShrinkToFit(0, 0, true);
  14.     sh.WriteText(1, 0, 'Normal rather long text');
  15.     WriteLn('Writing "test.xlsx"...');
  16.     b.WriteToFile('test.xlsx', true);
  17.     WriteLn('Writing "test.xls"...');
  18.     b.WriteToFile('test.xls', sfExcel8, true);
  19.     WriteLn('Writing "test.xml"...');
  20.     b.WriteToFile('test.xml', sfExcelXML, true);
  21.     WriteLn('Writing "test.ods"...');
  22.     b.WriteToFile('test.ods', true);
  23.   finally
  24.     b.Free;
  25.   end;
  26.  
  27.   WriteLn('Written:');
  28.   WriteLn('  A1: ShrinkToFit = TRUE');
  29.   WriteLn('  A2: ShrinkToFit = FALSE');
  30.   WriteLn;
  31.  
  32.   // Reading
  33.   WriteLn('Reading "test.xlsx"...');
  34.   b := TsWorkbook.Create;
  35.   try
  36.     b.ReadFromFile('test.xlsx');
  37.     sh := b.GetFirstWorksheet;
  38.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  39.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  40.   finally
  41.     b.Free;
  42.   end;
  43.  
  44.   WriteLn('Reading "test.xls"...');
  45.   b := TsWorkbook.Create;
  46.   try
  47.     b.ReadFromFile('test.xls', sfExcel8);
  48.     sh := b.GetFirstWorksheet;
  49.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  50.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  51.   finally
  52.     b.Free;
  53.   end;
  54.  
  55.   WriteLn('Reading "test.xml"...');
  56.   b := TsWorkbook.Create;
  57.   try
  58.     b.ReadFromFile('test.xml', sfExcelXML);
  59.     sh := b.GetFirstWorksheet;
  60.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  61.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  62.   finally
  63.     b.Free;
  64.   end;
  65.  
  66.   WriteLn('Reading "test.ods"...');
  67.   b := TsWorkbook.Create;
  68.   try
  69.     b.ReadFromFile('test.ods');
  70.     sh := b.GetFirstWorksheet;
  71.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  72.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  73.   finally
  74.     b.Free;
  75.   end;
  76.  
  77.   ReadLn;
  78. end.

dodgex

  • New Member
  • *
  • Posts: 16
Re: How to set the Excel cell format to Shrink to fit?
« Reply #5 on: January 18, 2026, 06:09:53 am »
Added the shrink-to-fit feature to FPSpreadsheets and to all reader/writers supporting it (Excel 8 xls, Excel2007+ xlsx, Excel 2003 XML, LibreOffice ods): https://wiki.lazarus.freepascal.org/FPSpreadsheet#Shrink-to-fit

Here is a small demo project showing (and testing) how to use it:
Code: Pascal  [Select][+][-]
  1. program project1;
  2. uses
  3.   FPSpreadsheet, FPSTypes, xlsxOOXML, fpsOpenDocument, xlsBIFF8, xlsXML;
  4. var
  5.   b: TsWorkbook;
  6.   sh: TsWorksheet;
  7. begin
  8.   // Writing
  9.   b := TsWorkbook.Create;
  10.   try
  11.     sh := b.AddWorksheet('Test');
  12.     sh.WriteText(0, 0, 'Long shrink-to-fit text.');
  13.     sh.WriteShrinkToFit(0, 0, true);
  14.     sh.WriteText(1, 0, 'Normal rather long text');
  15.     WriteLn('Writing "test.xlsx"...');
  16.     b.WriteToFile('test.xlsx', true);
  17.     WriteLn('Writing "test.xls"...');
  18.     b.WriteToFile('test.xls', sfExcel8, true);
  19.     WriteLn('Writing "test.xml"...');
  20.     b.WriteToFile('test.xml', sfExcelXML, true);
  21.     WriteLn('Writing "test.ods"...');
  22.     b.WriteToFile('test.ods', true);
  23.   finally
  24.     b.Free;
  25.   end;
  26.  
  27.   WriteLn('Written:');
  28.   WriteLn('  A1: ShrinkToFit = TRUE');
  29.   WriteLn('  A2: ShrinkToFit = FALSE');
  30.   WriteLn;
  31.  
  32.   // Reading
  33.   WriteLn('Reading "test.xlsx"...');
  34.   b := TsWorkbook.Create;
  35.   try
  36.     b.ReadFromFile('test.xlsx');
  37.     sh := b.GetFirstWorksheet;
  38.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  39.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  40.   finally
  41.     b.Free;
  42.   end;
  43.  
  44.   WriteLn('Reading "test.xls"...');
  45.   b := TsWorkbook.Create;
  46.   try
  47.     b.ReadFromFile('test.xls', sfExcel8);
  48.     sh := b.GetFirstWorksheet;
  49.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  50.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  51.   finally
  52.     b.Free;
  53.   end;
  54.  
  55.   WriteLn('Reading "test.xml"...');
  56.   b := TsWorkbook.Create;
  57.   try
  58.     b.ReadFromFile('test.xml', sfExcelXML);
  59.     sh := b.GetFirstWorksheet;
  60.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  61.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  62.   finally
  63.     b.Free;
  64.   end;
  65.  
  66.   WriteLn('Reading "test.ods"...');
  67.   b := TsWorkbook.Create;
  68.   try
  69.     b.ReadFromFile('test.ods');
  70.     sh := b.GetFirstWorksheet;
  71.     WriteLn('  A1: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(0, 0)));
  72.     WriteLn('  A2: ShrinkToFit = ', sh.ReadShrinkToFit(sh.FindCell(1, 0)));
  73.   finally
  74.     b.Free;
  75.   end;
  76.  
  77.   ReadLn;
  78. end.

Thank you very much!!!!This is great!!!!Where can I download the version that supports this function?

wp

  • Hero Member
  • *****
  • Posts: 13350
Re: How to set the Excel cell format to Shrink to fit?
« Reply #6 on: January 18, 2026, 11:05:34 am »
Either use svn or just download the zipped snapshot from https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fpspreadsheet/

dodgex

  • New Member
  • *
  • Posts: 16
Re: How to set the Excel cell format to Shrink to fit?
« Reply #7 on: January 18, 2026, 02:06:25 pm »

 

TinyPortal © 2005-2018