SoftArtisans.OfficeWriter.Shared.SARuntimeException:无法选择隐藏的工作表

时间:2015-02-12 06:05:54

标签: excel officewriter

我在我的网络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(); //此行中的错误

1 个答案:

答案 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); 

有两种方法可以解决这个问题

  • 更改代码流,以便在工作簿中始终显示可见工作表,如果删除了所选工作表,OfficeWriter将尝试选择下一个可见工作表。
  • 明确设置所选工作表,请参阅http://wiki.softartisans.com/pages/viewpage.action?pageId=5308872,例如DestinationExcel.Workbook.Worksheets [0] .Select();

您可以使用更通用的方法执行此操作,检查工作表的可见性(http://wiki.softartisans.com/display/EW9/Worksheet.Visibility),并确保选择可见的

丹 SoftArtisans