2016-05-31 22 views
2

Ich erzeuge Excel-Datei in Microsoft Dynamics AX 2009. Ich möchte eine Tabelle in Excel aus der 9. Zeile erstellen. Obwohl ich einen Bereich einstelle, wird die Tabelle immer in Zelle A1 angezeigt.Einstellbereich für Tabelle in Excel-Datei

SysExcelRange   xlsRange; 
SysExcelListObject  listObj; 
#define.ListObjectName("xlGuess") 

...

xlsRange = xlsWorkSheet.range("A9"); 
listObj = xlsWorkSheet.listObjects().add(xlsRange, #ListObjectName); 

enter image description here

Ich habe auch versucht, vollständige Palette wie zu setzen "A9: E13" und "A9: A13", aber es hat nicht funktioniert. Wahrscheinlich ist es möglich, es mit COM-Objekten zu tun, aber ich konnte es nicht erreichen. Warum es nicht funktioniert?

Antwort

6

Es scheint, dass es einen Fehler in der Excel-Wrapper von AX gibt.
Wenn ich eine Zeile änderte, um den tatsächlichen Bereich an das zugrunde liegende COM-Objekt zu übergeben, scheint es zu funktionieren; Schau Dir den Screenshot an für was ich mich geändert habe.

enter image description here

Mit einem AOT Job wie diese

public static client void TestJob() 
{ 
    #define.ListObjectName("xlGuess") 

    SysExcelApplication  xlsApp; 
    SysExcelWorksheet  xlsWorksheet; 
    SysExcelRange   xlsRange; 
    SysExcelListObject  listObj; 
    ; 

    xlsApp = SysExcelApplication::construct(); 
    xlsApp.workbooks().add(); 
    xlsWorksheet = xlsApp.activeSheet(); 
    xlsRange = xlsWorksheet.range("A9:C12"); 
    listObj = xlsWorkSheet.listObjects().add(xlsRange, #ListObjectName); 
    xlsApp.visible(true); 
} 

es wird eine Excel wie diese Datei öffnen:

enter image description here

+1

, die mit dem Code in AX 2012 ähnlich ist, aber Dort überprüft es auch, ob das '_range' Objekt 'null' ist. Wenn ja, wird die alte Version verwendet, ansonsten die feste Version. Daher kann dieser Code fehlschlagen, wenn die Methode ohne einen Bereich aufgerufen wird. –