Причина, по которой вы получаете пустые строки, заключается в том, что JSP отображает пустые строки внутри вашего цикла. Вы можете устранить их, упаковав цикл в одну строку:
<c:forEach var="rrow" items="${ReportInfo.list}" varStatus="rowCounter">${rrow.subjectCode},${rrow.MCount},${rrow.WCount},${rrow.OCount}</c:forEach>
Или вы можете добавить фильтр сервлетов, который будет убирать пустые строки из ответа.
Однако, если вы хотите добавить специальное форматирование, я полагаю, что это выходит за рамки формата значений, разделенных запятыми, и вам нужно сгенерировать собственные файлы Excel в соответствии с рекомендациями других.
РЕДАКТИРОВАТЬ: Вместо того чтобы упаковать ваш цикл в одну строку, попробуйте добавить следующую директиву на вашу страницу:
<%@page trimDirectiveWhitespaces="true"%>