我想传递一个excel工作簿/工作表作为几个函数之间的参考,以便对它进行不同的操作。我一直在寻找几个小时,无法找到如何做到这一点。以这种方式在excel表上运行多个功能是不常见的做法吗?以下代码不起作用..如果我通过值也不起作用。
' System.Runtime.InteropServices.COMException:'来自HRESULT的异常:0x800401A8' '
pass_ref(ref xlWorkSheet1); //call this
void pass_ref(ref Excel.Worksheet sheet) {
MessageBox.Show("Pass Ref:" + sheet.Name); //can't produce sheet name
}
答案 0 :(得分:0)
xlWorkBook.SaveAs(path, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
pass_ref(xlWorkSheet1);
xlWorkBook.Close(true, misValue, misValue);
找到了解决方法。在尝试传递工作表之前保存工作簿。这很有效。
答案 1 :(得分:-1)
处理Office格式有三种基本方法,具体取决于您需要支持的方式。而另一个可能会更好:
我总是建议选择OpenXML SDK / Option 1.而是限制支持的格式,然后再回到COM方式。 OleDB将是我的第二个赌注,尽管不知道细节。如果没有别的办法,COM最好留作后备解决方案。