Solution 1:

According to this there was a 1k characters per cell limit in excel 2003 which increased to a 32k characters per cell limit in excel 2007. If your program is programmaticaly creating an excel 2003 (.xls) and not a excel 2007 (.xlsx) file, then this could be causing the issue since the .xls format doesn't support more than 1k characters per cell.

You shouldn't be having issues with a XML or XLS format going directly into Excel 2007, since excel 2003's limit shouldn't be involved, but I can't test it out since I don't own Excel 2007, but hopefully this has been helpful regardless.

Solution 2:

Even Excel 2003 can easily handle 32,767 characters in a cell, but versions before Excel 2007 only display the first 1024 characters in-cell (MS source).

You may have run into a known issue that truncates strings at 911 characters. I've experienced this before when transferring data over an ADO connection.

The following link pertains to Excel 2003 but it certainly sounds like the same problem you are having.

http://support.microsoft.com/kb/818808/en-us

Solution 3:

Official Excel limits say it should be fine:

http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx

Solution 4:

In case you get your data from ADO, try the codes below. It worked for me.

Activecell.value=LEFT(YourRecordset("FieldName"), LEN(YourRecordset("FieldName")))

Basically, you get the whole content of the field, but in a different way. Since the length of the contents over 900 (to my experience), you have to use an alternative way. You do not have to stick with the LEFT function; the RIGHT function also works.