我试图在 C# Excel Interop 中向工作簿添加一个新工作表,并将其设置为该工作簿中的最后一个工作表。
这似乎非常简单,我认为下面的代码可以实现:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
没有这么幸运。我收到了以下有用的错误信息:
COMException was unhandled - Exception from HRESULT: 0x800A03EC
我在 Microsoft.com 上找到了这个页面,它建议我尝试先添加工作表,然后再移动它,所以我按照下面的示例尝试了一下。虽然该网页针对的是 Excel 95,但 VBA 仍然可用,因此我希望它仍然有效:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add();
workbook.Sheets.Move(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
我遇到了与上述相同的错误。我还尝试将我的最后一个工作表的名称作为字符串传递给Add
和Move
方法中的After
参数,但没有成功!
这就是我尝试过的,所以我的问题是如何使用C# Excel Interop向Excel工作簿添加工作表,并使其成为工作簿中的最后一个工作表?
谢谢