我在我的网络API中使用softarisans officewriter。我试图将表格数据从源excel文件复制到目标excel文件。保存目标excel时我遇到上述错误。我添加了一段代码供参考。任何帮助,将不胜感激。
工作表PrevSheet = SourceExcel.Workbook.GetWorksheet(Sheet.sheetName); DestinationExcel.Workbook.Worksheets.Delete(PrevSheet.Name); DestinationExcel.Workbook.Worksheets.CopySheet(PrevSheet,PrevSheet.Position,PrevSheet.Name);
DestinationExcel.Save(); //此行中的错误
答案 0 :(得分:1)
此处的错误信息非常清楚"无法选择隐藏的工作表。"。这是因为在Excel中,工作簿始终具有1个可选的可见工作表。这就是您无法删除工作簿中的每个工作表的原因。
可能发生的事情是通过您的工作流程选择隐藏的工作表。 OfficeWriter总是尝试保持选定的工作表,但由于我们以编程方式处理文件,因此您可能会陷入临时状态。 (例如,删除所有可见的工作表,但在保存之前添加一个可见的工作表)
没有工作簿并实际运行您的用例,这就是我认为正在发生的事情。
//Here you are deleting a worksheet, which might mean that the destination workbook no longer has visible sheets.
DestinationExcel.Workbook.Worksheets.Delete(PrevSheet.Name);
//Now you are copying in a new worksheet from a source workbook, it might be visible.
DestinationExcel.Workbook.Worksheets.CopySheet(PrevSheet,PrevSheet.Position,PrevSheet.Name);
有两种方法可以解决这个问题
您可以使用更通用的方法执行此操作,检查工作表的可见性(http://wiki.softartisans.com/display/EW9/Worksheet.Visibility),并确保选择可见的
丹 SoftArtisans