lunedì 24 febbraio 2025

D365FFO - Salvare un file excel nel print archive

 Questo post è interessante perchè mostra come salvare un file nel print archive:

https://www.linkedin.com/pulse/excel-reports-d365-finance-operations-sohan-prasad-kanti/

Possiamo usare questa logica per scrivere una classe (anche batch) per generare un file excel ed effettuare il salvataggio nel print archive:

 private void LIL_GenerateFileAndSaveToPrintArchive()  
 {  
   SalesTable salesTable;  
   
   System.IO.Stream workbookStream = new System.IO.MemoryStream();  
   System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();  
       
   using(var package = new OfficeOpenXml.ExcelPackage(memoryStream))  
   {  
     var worksheets = package.get_Workbook().get_Worksheets();  
     var worksheet = worksheets.Add("Sheet1");  
     var cells = worksheet.get_Cells();  
         
     var currentRow=1 ;  
   
     var cell = cells.get_Item(currentRow,1);  
     cell.set_Value("SalesId");  
   
     while select firstonly10 salesTable  
     {  
       currentRow++;  
       cell= cells.get_Item(currentRow, 1);  
       cell.set_Value(salesTable.SalesId);  
     }  
   
     package.Save();  
   }  
   
   memoryStream.Seek(0,System.IO.SeekOrigin::Begin);  
   
   //salvataggio nel print archive  
   SRSPrintArchiveContract printArchiveContract;  
   
   printArchiveContract = SRSPrintArchiveContract::construct();  
   printArchiveContract.parmExecutionDate(DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()));  
   printArchiveContract.parmExecutionTime(DateTimeUtil::getTimeNow(DateTimeUtil::getUserPreferredTimeZone()));  
   printArchiveContract.parmFileName("test.xlsx");  
   printArchiveContract.parmJobDescription("test 01");  
   printArchiveContract.savePrintArchiveDetails(Binary::constructFromMemoryStream(memoryStream).getContainer());  
 }  



Nessun commento:

Posta un commento