Excel Automation From .NET - 创建新工作表

时间:2010-06-07 22:58:30

标签: c# excel export-to-excel

我正在尝试看似简单的任务:使用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”

2 个答案:

答案 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)