Excel模板:合并数据和保存工作簿

时间:2011-04-12 11:12:00

标签: c# office-interop excel-interop

我第一次涉足Excel Interop并且在飞行开始之后撞墙了。

我有一个Excel模板,其中包含一张评估表,另一张包含有关如何进行评估的指导说明。

我还有一个XML文件,其中包含正在评估的项目的详细信息。

我需要将项目标题,应用程序编号和公司名称合并到第一个工作表中,然后使用文件名[Application No] - [Project Title] .xlsx保存工作表。

第一部分工作正常。我已经加载了XML,代码将数据放入应该存在的形式。

我的问题是保存部分。我找到了.SaveAs方法,它创建了几个文件......但它们无法打开。然后我得到一个HRESULT错误0x800A03EC - 搜索网络没有解释这个。有些东西告诉我,这个.SaveAs()指的是工作表而不是工作表,但我只是猜测那里。

我希望我做了一些愚蠢的事情,这很容易解决。

这里的参考是我的代码,但就像我说我不确定它是多么有用。

    private void MergeData()
    {
        doc.Load(@"C:\XML Data\source.xml");

        XmlNodeList forms = doc.SelectNodes("//form1");

        for (int i = 0; i < forms.Count; i++)
        {
            XmlNodeList nodes = forms[i].ChildNodes;

            string refNo = nodes[0].InnerText.ToString();
            string companyName = nodes[3].InnerText.ToString();
            string title = nodes[1].InnerText.ToString();

            this.Cells[9, 4] = title;
            this.Cells[11, 4] = refNo;
            this.Cells[14, 4] = companyName;


            this.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");
        }
    }

有谁知道如何保存这些文件?

感谢您阅读

编辑 -

我找到了这篇文章

C# and Excel Interop issue, Saving the excel file not smooth

并更改了代码以包含其建议

Excel.Application app = this.Application;
Excel.Workbook wb = app.Workbooks.Add(missing);
wb.SaveAs(@"C:\Assessment Forms\" + refNo + " - " + title + ".xlsx");

但它也在做同样的事情。

我正处于截止日期,所以我认为我将不得不手动开始复制,粘贴和保存:(

1 个答案:

答案 0 :(得分:1)

不确定此处有哪个对象this,但如果您认为this是工作表是正确的,请尝试this.Parent.SaveAs

如果this原来是一个范围,请尝试this.Worksheet.Parent.SaveAs