Fehler beim Übertragen von Base64-kodierten Dateiinhalten - nicht new String(bytes) benutzen!

von deiner beschreibung gehe ich mal davon aus, dass die Datei entweder bei senden oder bereits beim lesen verändert wird.
Vorallem, dass du die Bytes des files in einen String packst finde ich seltsam.

byte[] decodedBytes = decoder.decode(encodedBytes);
String decoded = new String(decodedBytes);
return decoded;

Warum gibts du das file nicht als binary zurück sondern als String? Ich vermute, dass Java String hier intern etwas macht. Da xlsx ja ein Zip format ist ist nur die kleinste Binäre veränderung macht das ganze file ungültig.