Saturday, 5 November 2011

create excelworkbook in ax 2009

Create excel bar chart

static void NAV_ValutaExcel(Args _args)
{
SysExcelApplication     ExcelApplication;
SysExcelWorkBooks       ExcelWorkBooks;
SysExcelWorkBook        ExcelWorkBook;
SysExcelWorkSheets      ExcelWorkSheets;
SysExcelWorkSheet       ExcelWorkSheet;
SysExcelRange           ExcelRange;

currency                currency;
ExchRates               eRate;
int                     row = 1;
;

ExcelApplication = SysExcelApplication::construct();
ExcelApplication.visible(true);

ExcelWorkBooks = ExcelApplication.workbooks();
ExcelWorkBook = ExcelWorkBooks.add();
ExcelWorkSheets = ExcelWorkBook.worksheets();
ExcelWorkSheet = ExcelWorkSheets.itemFromNum(1);

ExcelWorkSheet.cells().item(row,1).value('Dato');
ExcelWorkSheet.cells().item(row,2).value('Kurs');

row++;

while select Currency where Currency.CurrencyCode == 'EUR'
join eRate where currency.CurrencyCode == eRate.CurrencyCode
{
ExcelWorkSheet.cells().item(row,1).value(eRate.FromDate);
ExcelWorkSheet.cells().item(row,2).value(eRate.ExchRate);
row++;
}

ExcelApplication.finalize();
}
------------------------------------------------------------
void init()
{
COM application;
COM excelAppl;
InteropPermission permission = new
InteropPermission(InteropKind::ComInterop);
;

permission.assert();
application = COM::getObject("Excel.application");
if (application)
{
application.quit();
}

row = 1;

ExcelApplication = SysExcelApplication::construct();
ExcelApplication.visible(false);

ExcelWorkBooks  = ExcelApplication.workbooks();
ExcelWorkBook   = ExcelWorkBooks.add();
ExcelWorkSheets = ExcelWorkBook.worksheets();
ExcelWorkSheet  = ExcelWorkSheets.itemFromNum(1);
application     = ExcelApplication.comObject();
excelAppl       = application.application();
hwnd            = excelAppl.hwnd();
numTabs         = 1;
}

//Method to add Data Information
int addRowData(Container _columns, boolean _bold = false, int fontsize = 11)
{
int col = 1;
Com cell,font;
;

while(col <= conlen(_columns))
{
ExcelWorkSheet.cells().item(row,col).value(conpeek(_columns,col));
cell = ExcelWorkSheet.cells().item(row,col).comObject();
font = cell.font();
font.bold(_bold);
font.size(fontSize);
col++;
}

row++;

return row-1;
}

//Method to draw Chart
void drawChart(str _Range)
{
Com     application;
Com     chartObjects;
Com     chartObject;
Com     chartArea;
Com     chart;
Com     activeSheet = ExcelApplication.activeSheet().comObject();
Com     workbooks;
Com     workbook;
Com     worksheets;
Com     worksheet;
Com     ranges;
Com     range;
Com     cells;
Com     chartTitle;
Com     WindowObject;
Com     Windows;
Com     shapes;
Com     shape;
Com     Parent;
ComVariant item = new ComVariant();
ComVariant cell1 = new ComVariant();
ComVariant cell2 = new ComVariant();
;

this.parmRange(_range);

application = ExcelApplication.comObject();

windows = application.windows();
windowObject = windows.item(1);

workbook = ExcelApplication.workbooks().item(1).comObject();
worksheets = workbook.worksheets();
worksheet  = worksheets.item(1);

worksheet.name("AX CHART");

chartObjects    = worksheet.chartObjects();
chartObject     = chartObjects.add(1,1,4,4);
chartObject.name("AX Chart");
//chartObjects.printObject(ComVariant::createFromBoolean(true));
chart           = chartObject.chart();

range = workSheet.range(rangeValue);
chart.hasTitle(1);
chartTitle = chart.chartTitle();
chartTitle.text("AX/MS EXCEL Integration");
chart.applyLayout(5);
chart.setSourceData(range,2);
chart.chartType(4);
chart.chartStyle(2);
chart.location(2,worksheet.name());//"AX CHART");
chartArea = chart.chartArea();
chartArea.left(250);
chartArea.width(500);
chartArea.top(0);
chartArea.height(400);
windowObject.zoom(100);
}

//Set Row Data and draw Chart
class.addRowData(['',"x1","x2","x3"]);
class.addRowData(["1","2","5","2"]);
class.addRowData(["2","3","4","3"]);
class.addRowData(["3","3","2","8"]);
class.addRowData(["4","5","3","2"]);
class.drawChart("A1:D5");

No comments:

Post a Comment