我正在尝试看似简单的任务:使用C#创建包含新工作表的新Excel文档。
出于某种原因,我收到一个奇怪的COM错误(0x800A03EC)
有没有人设法让这个工作?有没有人有关于如何排除故障的建议?
我已将此分隔为最少量的代码:
using Microsoft.Office.Interop.Excel;
using System.Diagnostics;
namespace ExcelAutomation
{
public static class ExcelTests
{
public static void CreateWorksheet()
{
try
{
var app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
var workBooks = app.Workbooks;
var newWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet existingWorksheet = (Worksheet)newWorkbook.Sheets[1];
Worksheet workSheet = (Worksheet)newWorkbook.Sheets.Add
(
null, // before
existingWorksheet,
null, // 1,
null //XlSheetType.xlWorksheet
);
}
catch (System.Runtime.InteropServices.COMException ex)
{
Trace.WriteLine(string.Format("Caught COMException. Message: \"{0}\"", ex.Message));
}
}
}
}
输出窗口现在显示:
抓住了COMException。消息:“HRESULT异常:0x800A03EC”
答案 0 :(得分:1)
我犯的错误是使用 null 作为我不想设置的可选值。
相反,我应该使用System.Reflection.Missing.Value
Worksheet workSheet = (Worksheet)newWorkbook.Sheets.Add
(
existingWorksheet, // before
System.Reflection.Missing.Value,
System.Reflection.Missing.Value, // 1,
System.Reflection.Missing.Value //XlSheetType.xlWorksheet
);
答案 1 :(得分:0)