Scenario:
CSV content passing from suitelet :
var csvContent = 'Month-Year,Program,PO #,Billing type,Employee ID,Employee Name,Designation,Available Hours,Billed Hours,Invoice Currency,Invoice Rate,Invoice Value,Acsia Rate ($),Acsia Cost ($),Acsia Direct Cost ($),Customer Rate ($),Expected Revenue ($),Calculated Cost ($),Calculated Direct Cost ($),Actual Revenue ($),Gross Margin ($),Margin ($),Margin (%),Revenue Leakage ($),Resource Utilization (%),Actual RPE/Hr ($),Expected RPE/Hr ($),Direct CPE/Hr ($),CPE/Hr ($)n';
for(var i=0;i<combinedResult.length;i++){
//Looping through the search results
csvContent += combinedResult[i].monthYr + ',' + combinedResult[i].program + ',' + combinedResult[i].poNum + ',' + combinedResult[i].billingType + ',' + combinedResult[i].empId + ',' + combinedResult[i].empName + ',' + combinedResult[i].designation + ',' + combinedResult[i].availHrs + ',' + combinedResult[i].billHrs + ',' + combinedResult[i].invCurr + ',' + combinedResult[i].invRate + ',' + combinedResult[i].invValue + ',' + combinedResult[i].acsRate + ',' + combinedResult[i].acsCost + ',' + combinedResult[i].acsDirCost + ',' + combinedResult[i].cusRate + ',' + combinedResult[i].expRev + ',' + combinedResult[i].calCost + ',' + combinedResult[i].calDirCost + ',' + combinedResult[i].actRevenue + ',' + combinedResult[i].grossMargin + ',' + combinedResult[i].margin + ',' + combinedResult[i].marginPerc + ',' + combinedResult[i].revLeak + ',' + combinedResult[i].resUtil + ',' + combinedResult[i].actualRpe + ',' + combinedResult[i].expRpe + ',' + combinedResult[i].dirCpe + ',' + combinedResult[i].cpeHr + 'n';
}
Output get truncated and not displaying entire data(csv file)
Solution:
CSV content is being truncated, which is likely due to how the data URI is being handled. One common issue is that the encodeURI function does not encode newlines correctly, which can lead to problems with multiline CSV data.
Instead of using encodeURI, you can use encodeURIComponent, which handles newlines correctly. Here’s how to adjust your code:
in the html code, use
const csvContent = `data:text/csv;charset=utf-8,${encodeURIComponent(reportData)}`;