1

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

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

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

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

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

4

3 回答 3

1

再次感谢 Jan 的回复

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

在打算将数据写入工作表的其他类方法中,我打开了由类似于 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();

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

于 2013-01-03T14:18:42.647 回答
1

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

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

您可以在我的博客上找到有关此主题的帖子:使用 C#、XML 和 XSLT 创建 Excel 文件

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

于 2013-01-03T19:53:47.903 回答
0

检查 Excel COM 服务的身份。看看别人了什么

于 2012-12-22T07:11:53.020 回答