The copied cell is written to the file in full length. Open the saved file in LibreOffice calc or Spready to verify (you'll have to increase the row height to see everything). So, the problem is that the text is truncated when the file is read by Excel!
The text in cell (0, 0) is in a "LabelSST" record, this means that the text is stored in the SST ("shared strings table") and the cell contains only the index of the text within the SST. These records were introduced with the BIFF8 format.
fpspreadsheet, on the other hand, writes text in the old "Label" records used in the previous versions. The old versions had reserved 1 byte for the string length; therefore, Excel 5 and earlier must truncate at 255 characters. I did not expect that BIFF8 does the same because Microsoft has extended the length information to two bytes.
I'll try to introduce a Shared-String-Table in the implementation of BIFF8 for fpspreadsheet. Let's see what happens.