使用X ++在Excel中创建多个工作表

时间:2012-12-21 14:23:05

标签: excel export-to-excel x++ axapta

我目前能够创建一个新的Excel电子表格,写入并通过X ++保存电子表格。

我在新类中有一些方法,每个方法都要写入工作簿中的单独工作表。

第一种方法是创建电子表格,写入数据,保存电子表格,然后退出Excel就好了。但在下一个方法中,我尝试打开保存的电子表格,再次写入另一个工作表(选项卡),保存,然后退出Excel。

第二种方法导致以下错误。 类'_Workbook'的COM对象中的方法'saveAs'返回错误代码0x800A03EC(),这意味着:您无法使用与另一个打开的工作簿或加载项相同的名称保存此工作簿。选择其他名称,或在保存之前关闭其他工作簿或加载项。

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

3 个答案:

答案 0 :(得分:1)

再次感谢Jan的回复

在查看 SysDataExcelCOM 类之后,有一个 CreateWorkbook 方法,该方法为Excel数据定义导出创建其他工作表。在创建一个新的类似类方法并为Excel工作表声明我自己的一组定义名称(#define.ExampleExcelWorksheetName('abcSheet')之后,我就可以创建包含多个工作表的Excel工作簿。然后保存(SysExcelWorkbook.saveAs) )在首先创建所有必需的工作表之后,而不是打开保存的Workboook,然后按照新的类方法添加工作表。

在要将数据写入工作表的其他类方法中,我打开了由新方法创建的工作簿,类似于CreateWorkbook(sysExcelWorkbooks.open(yourExcelFile)),然后使用(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();

走这条路对我来说效果很好。

答案 1 :(得分:1)

这可能不是您问题的直接答案,但可能会为您提供有关创建Excel文件的另一个视角。

我倾向于使用XML和XSLT来创建Excel文件。您可以在Excel中轻松创建所需内容,然后将Excel文件另存为XML,然后您可以应用一些XSLT从另一个XML文件中读取数据并将其放入所需的Excel文件中。

您可以在我的博客上找到有关此主题的帖子:Using C#, XML and XSLT to create Excel files

在那里,我创建了一个包含Items的XML文件,并将其转换为Excel文件。

答案 2 :(得分:0)

检查Excel COM服务的标识。查看others done的内容。