【问题标题】:Saving Non-VSTO copy of VSTO Workbook保存 VSTO 工作簿的非 VSTO 副本
【发布时间】:2010-11-24 16:32:41
【问题描述】:

我正在尝试将 ListObject 从 .NET 3.5 Excel 2007 VSTO 工作簿保存到新工作表(完成),并将新工作表保存到新工作簿(完成),而该工作簿不需要 VSTO 自定义文件(!!! !!)。

有没有人遇到过这种情况?我取得任何成功的唯一方法就是保存为 CSV 文件,但在这种情况下这并不完全可以接受。我宁愿不保存到 CSV 只是为了复制回 XLS 文件。

worksheet.SaveAs(saveDialog.FileName, Excel.XlFileFormat.xlOpenXMLWorkbook)

【问题讨论】:

    标签: vb.net excel vsto save


    【解决方案1】:

    如果我理解正确,您不希望新工作簿文件依赖或加载任何 VSTO 自定义?

    试试这个MSDN link 从工作簿中删除 VSTO 自定义程序集。

    【讨论】:

    • 这正是我所需要的。谢谢!
    【解决方案2】:

    好吧,这最终对我不起作用,这就是原因。答案仍然正确,但我想为未来的用户澄清一下。

    我有一个想要使用 VSTO 保存在外部工作簿中的 ListObject。创建一个新工作表并使用 SaveAs 会将当前工作簿重命名为该工作簿,因此我必须关闭整个工作簿才能删除自定义。

    我从一开始就应该这样做:

    创建工作表并在所述工作表上填充 ListObject。然后使用不带参数的 .Copy() 创建一个新工作簿。那我怎么找到工作簿呢?我只是将 Worksheet 命名为 Now.Ticks.ToString() 并查找 ActiveSheet.Name 为 Now.Ticks.ToString() 的任何打开的工作簿。对于这个应用程序,它不需要那么深入。我保存了那个工作簿,然后将其关闭。由于工作簿是使用 Copy 创建的,因此没有对其进行自定义并且问题已解决。

    【讨论】:

    • 听起来很难。你为什么不这样做... Excel.Workbook wkbk = xlApp.Workbooks.Add(params); Excel.Worksheet wksht = wkbk.Worksheets.get_Item("Sheet1");在此处插入代码以将 ListObject 填充到 wksht... wkbk.Close(true);
    • 我相信我首先尝试了这条路线,但生成的工作簿附有 VSTO 要求。不过我可能弄错了。
    • 好的,照我说的做,然后在 wkbk 对象上调用 Workbook.RemoveCustomization 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多