2012-12-21 82 views
1

我目前能夠創建一個新的Excel電子表格,寫入並通過X ++保存電子表格。使用X ++在Excel中創建多個工作表

我有一個新的類中的幾個方法,每個都打算寫入工作簿中的單獨的工作表。

第一種方法創建電子表格,寫入數據,保存電子表格,然後退出Excel就好了。但在下一個方法中,我嘗試打開保存的電子表格,再次寫入另一個工作表(選項卡)保存,並退出Excel。

第二種方法會導致以下錯誤。 方法'saveAs'在類'_Workbook'的COM對象中返回了錯誤代碼0x800A03EC()這意味着:您不能將該工作簿與另一個打開的工作簿或加載項保存爲同名。選擇其他名稱,或在保存前關閉其他工作簿或加載項。

是否可以在X ++的一個Excel工作簿中創建和保存多個Excel工作表?

+0

考慮顯示您的代碼。什麼版本的AX和Excel? –

+0

@ JanB.Kjeldsen謝謝你的回覆。忘記提及我正在使用Windows Server 2008 Standard 32位版本的AX 2009,Excel 2010。 –

+0

@JanB。Kjeldsen被綁定在其他項目上工作,因爲這是更多的信息,但我一直在尋找@數據導入/導出使用的SysDataExcelCOM類中的一些代碼作爲一些指導。通過學習這門課,我能夠以編程方式從我的Excel工作簿中刪除標準的「工作表1,工作表2,工作表3」工作表。將保持您張貼...謝謝 –

回答

1

感謝揚爲responsing

審查SysDataExcelCOM下課後,有它創建爲Excel數據定義導出的額外的工作表一個CreateWorkbook方法。創建了一個新的類似方法並且還爲Excel工作表聲明瞭自己的一組定義名稱(#define.ExampleExcelWorksheetName('abcSheet'))後,我可以創建包含多個工作表的Excel工作簿,然後保存(SysExcelWorkbook.saveAs )首先創建所有必要工作表後,而不是打開保存的工作簿,然後按照新類方法添加工作表。

在打算寫入工作表的數據的其他類方法中,我打開由新的方法類似於CreateWorkbook(sysExcelWorkbooks.open(yourExcelFile)),然後參考每個Worksheet使用(sysExcelWorksheet.itemByName)將數據寫入特定的工作表,然後保存。

excelApplication = SysExcelApplication::construct(); 
excelWorkbooks  = excelApplication.workbooks(); 
excelWorkbooks.open(fileNameSave); 
excelWorkbook  = excelWorkbooks.item(1); 

//Add styles and fonts 
excelStyles = excelWorkbook.styles(); 
excelStyle = excelStyles.add("Header"); 
excelFont = excelStyle.font(); 
excelFont.bold(true); 

excelWorksheets  = excelWorkbook.worksheets(); 
excelWorksheet  = excelWorksheets.itemFromName(#declared name of your worksheet); 

// Begin Header Row 
excelWorksheet.cells().item(1,1).value("value of your choice"); 
excelWorksheet.cells().item(1,2).value("value of your choice"); 
excelWorksheet.rows().item(1).style("Header"); 

excelWorksheet.name("Rename your declared worksheet name or use current name here"); 
excelCells   = excelWorksheet.cells(); 
excelCells.range('A:B').numberFormat('@'); 

//Find you data to write to Excel Worksheet here 

excelWorksheet.columns().autoFit(); 
excelApplication.displayAlerts(false); 
excelWorkbook.saveAs(fileNameSave); 
excelWorkbook.comObject().save(); 
excelWorkbook.saved(true); 
excelApplication.quit(); 

走這條路線對我來說效果很好。

0

檢查Excel COM服務的標識。看什麼othersdone。再次

+0

我檢查了Excel COM服務,Microsoft Excel應用程序的標識。在將身份設置爲「交互式用戶」和「啓動用戶」之後,我測試了代碼。兩種情況都發生了同樣的錯誤。 –

1

這可能不是對你的問題的直接回答,但可能會給你另一個觀點來創建Excel文件。

我傾向於使用XML和XSLT創建Excel文件。您可以在Excel中輕鬆創建所需內容,然後將該Excel文件另存爲XML,然後可以應用一些XSLT,從另一個XML文件讀取數據並將其放入所需的Excel文件中。

你可以找到關於在我的博客這個話題帖子:Using C#, XML and XSLT to create Excel files

在那裏,我創建一個包含項目的XML文件,並轉換到這一個Excel文件。

相關問題