首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能选择隐藏的工作表

SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能选择隐藏的工作表
EN

Stack Overflow用户
提问于 2015-02-12 14:05:54
回答 1查看 191关注 0票数 1

我在我的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();//该行出错

EN

回答 1

Stack Overflow用户

发布于 2015-02-13 00:03:19

这里的错误消息非常清楚:“无法选择隐藏的工作表。”这是因为在Excel中,工作簿始终有一个选定的可见工作表。这就是为什么不能删除工作簿中的所有工作表的原因。

可能发生的情况是,通过您的工作流程选择了一个隐藏的工作表。OfficeWriter总是试图保持工作表处于选中状态,但由于我们以编程方式处理该文件,因此您可能会进入临时错误状态。(例如,删除所有可见工作表,但在保存之前添加一个可见工作表)

如果没有工作簿并实际运行您的用例,这就是我认为正在发生的事情。

代码语言:javascript
复制
//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.

  • Explicitly,OfficeWriter将尝试选择下一个可见的工作表。请参见http://wiki.softartisans.com/pages/viewpage.action?pageId=5308872 deleted.

  • Explicitly OfficeWriterhttp://wiki.softartisans.com/pages/viewpage.action?pageId=5308872

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

丹·SoftArtisans

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28470453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档