I am trying to export non-printable report into .XLSX format and send it to external users via email. Exporting to CSV works fine, but when I try to export the same with .XSLX format, I am getting the attachment either in corrupt state or an unformatted state.
Is it possible to export a report in .xslx format?
Below is my code snippet, I am trying out with different combinations of report URL and content type, but none of them worked. Please help if there is any way forword for this?
String reportId = '00O1700000*****';
String instanceName = System.URL.getSalesforceBaseUrl().toExternalForm();
string url=instanceName+'/'+reportId+'?excel=1'; // Not working
//string url=instanceName+'/'+reportId+'?export&xf=xls'; // Not working
//string url=instanceName+'/'+reportId+'?csv=1&isdtp=p1'; //Not working
ApexPages.PageReference report = new ApexPages.PageReference(url);
Messaging.SingleEmailMessage email =new Messaging.SingleEmailMessage();
List<Messaging.EmailFileAttachment> csvAttcList = new List<Messaging.EmailFileAttachment>();
Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
String mailBody = 'Please find the attachment for daily case report.';
csvAttc.setFileName('Daily Case Report.xlsx');
csvAttc.setBody(report.getContent());
csvAttc.setContentType('text/vnd.openxmlformats'); //Not working
//csvAttc.setContentType('text/csvs'); //Not working
//csvAttc.setContentType('application/vnd.ms-excel'); //Not working
csvAttcList.add(csvAttc);
email.setSubject('Daily Case Report on '+System.now());
List<String> toAddress = new List<String>();
toAddress.add('[email protected]');
email.setToAddresses( toAddress );
email.setPlainTextBody(mailBody);
email.setFileAttachments(csvAttcList);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email});