我在我的web API中使用了softarisans officewriter。我正在尝试将工作表数据从源excel文件复制到目标excel文件。我在保存目标excel时遇到上述错误。我已经添加了这段代码以供参考。任何帮助都将不胜感激。
SourceExcel.Workbook.GetWorksheet(Sheet.sheetName);DestinationExcel.Workbook.Worksheets.Delete(PrevSheet.Name);DestinationExcel.Workbook.Worksheets.CopySheet(PrevSheet,PrevSheet = Worksheet PrevSheet.Position,PrevSheet.Name);
DestinationExcel.Save();//该行出错
发布于 2015-02-13 00:03:19
这里的错误消息非常清楚:“无法选择隐藏的工作表。”这是因为在Excel中,工作簿始终有一个选定的可见工作表。这就是为什么不能删除工作簿中的所有工作表的原因。
可能发生的情况是,通过您的工作流程选择了一个隐藏的工作表。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); 有几种可能修复此问题的方法
更改代码流,以便在工作簿中始终有一个可见的工作表,如果您选择的工作表是deleted.
。
您可以使用一种更通用的方法来执行此操作,即检查工作表的可见性(http://wiki.softartisans.com/display/EW9/Worksheet.Visibility),并确保选择一个可见的工作表
丹·SoftArtisans
https://stackoverflow.com/questions/28470453
复制相似问题