保存VSTO工作簿的非VSTO副本

4
我正在尝试将来自.NET 3.5 Excel 2007 VSTO Workbook的ListObject保存到一个新工作表(完成),并将该新工作表保存到一个新工作簿中(完成),而无需该工作簿需要VSTO自定义文件(!!!!)。你有没有成功过?我唯一成功的方法就是保存为CSV文件,但在这种情况下这并不完全可接受。我宁愿不保存为CSV文件再复制回XLS文件。

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

2个回答

5
如果我理解正确,您不希望新的工作簿文件依赖或加载任何VSTO定制吗?
尝试使用MSDN链接从工作簿中删除VSTO定制程序集。

1

好的,这对我来说没有起作用,原因如下。答案仍然是正确的,但我想为将来的用户澄清一下。

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

从一开始我应该做的是:

创建Worksheet并在该Worksheet上填充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); - Anonymous Type
我相信我最初尝试了那条路线,但生成的工作簿附带了VSTO要求。不过我可能记错了。 - Chris Ridenour
1
好的,那么按照我的说法去做,然后在wkbk对象上调用Workbook.RemoveCustomization方法。 - Anonymous Type

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接