When copying a Unicode strings from GridView to an excel spreadsheet, I get less records.
I think problem in HTML representation. It seems that you take for EndHTML and EndFragment number of characters, but should be the number of bytes.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms649015(v=vs.85).aspx