Thursday, 19 December 2019

Export data to excel in d365

using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.ExcelPackage;
using OfficeOpenXml.ExcelRange;
using OfficeOpenXml.Style;
using OfficeOpenXml.Table;

class INTC_ExpenseTemplate
{
    #define.TransactionDate("Transaction date")
    #define.ExpenseType("Expense type")
    #define.Amount("Amount")
    #define.ProjId("Project Id")
    #define.SalesTaxGroup("Sales tax group")
    #define.TaxItemGroup("Tax item group")
    #define.ReceiptNumber("Receipt number")
    #define.AdditionalInformation("Additional information")
   
    public static void main(Args  _args)
    {
        TrvExpTrans             trvExpTrans;
        TrvExpTable             trvExpTable;
        MemoryStream            memoryStream = new MemoryStream();
        INTC_ExpenseTemplate    expenseTemplate = INTC_ExpenseTemplate::construct();

        trvExpTrans     =   _args.record();
        expenseTemplate.generateTemplate(trvExpTrans.ExpNumber, memoryStream);
    }

    public static INTC_ExpenseTemplate construct()
    {
        return new INTC_ExpenseTemplate();
    }

    public void generateTemplate(TrvExpNumber  _expNum, MemoryStream   _memoryStream = new MemoryStream())
    {
        using (var package = new ExcelPackage(_memoryStream))
        {
            var                 currentRow = 1;
            var                 worksheets = package.get_Workbook().get_Worksheets();
            var                 worksheet = worksheets.Add('Template');
            var                 cells = worksheet.get_Cells();
            System.String       coloum;
            TrvExpTrans         trvExpTrans;

            OfficeOpenXml.ExcelRange cell = cells.get_Item(currentRow, 1);
            System.String value = #TransactionDate;
            cell.set_Value(value);
            cell = null;

            value = #ExpenseType;
            cell = cells.get_Item(currentRow, 2);
            cell.set_Value(value);

            value = #Amount;
            cell = cells.get_Item(currentRow, 3);
            cell.set_Value(value);

            value = #ProjId;
            cell = cells.get_Item(currentRow, 4);
            cell.set_Value(value);

            value = #SalesTaxGroup;
            cell = cells.get_Item(currentRow, 5);
            cell.set_Value(value);

            value = #TaxItemGroup;
            cell = cells.get_Item(currentRow, 6);
            cell.set_Value(value);

            value = #ReceiptNumber;
            cell = cells.get_Item(currentRow, 7);
            cell.set_Value(value);

            value = #AdditionalInformation;
            cell = cells.get_Item(currentRow, 8);
            cell.set_Value(value);

            while select trvExpTrans where trvExpTrans.ExpNumber    ==  _expNum
            {
                currentRow++;
                coloum = #TransactionDate;
                cell = cells.get_Item(currentRow, 1);
                cell.set_Value(trvExpTrans.TransDate);
                cell = null;

                coloum = #ExpenseType;
                cell = cells.get_Item(currentRow, 2);
                cell.set_Value(trvExpTrans.CostType);
                cell = null;

                coloum = #Amount;
                cell = cells.get_Item(currentRow, 3);
                cell.set_Value(trvExpTrans.AmountCurr);
                cell = null;

                coloum = #ProjId;
                cell = cells.get_Item(currentRow, 4);
                cell.set_Value(trvExpTrans.ProjId);
                cell = null;

                coloum = #SalesTaxGroup;
                cell = cells.get_Item(currentRow, 5);
                cell.set_Value(trvExpTrans.TaxGroup);
                cell = null;

                coloum = #TaxItemGroup;
                cell = cells.get_Item(currentRow, 6);
                cell.set_Value(trvExpTrans.TaxItemGroup);
                cell = null;

                coloum = #ReceiptNumber;
                cell = cells.get_Item(currentRow, 7);
                cell.set_Value(trvExpTrans.ReceiptNumber);
                cell = null;

                coloum = #AdditionalInformation;
                cell = cells.get_Item(currentRow, 8);
                cell.set_Value(trvExpTrans.AdditionalInformation);
                cell = null;
            }
            package.Save();
            file::SendFileToUser(_memoryStream, 'Expense lines template.xlsx');
        }
    }

}

No comments:

Post a Comment